重磅|京東雲區塊鏈數據服務(BDS)正式開源

圖片描述

今天,「區塊鏈+京東雲
大有可爲」戰略合做媒體溝通會在北京國家會議中心召開。會上,京東雲與京東數科宣佈在區塊鏈技術服務領域深度合做,重磅發佈了智臻鏈「雲」建設規劃,同步上線了「區塊鏈防僞追溯」、「區塊鏈數字存證」兩款「京東自營」的京東雲市場SaaS應用。同時京東雲還重磅推出國內首款區塊鏈數據在線分析服務產品——BDS服務。

區塊鏈由不少區塊按時間順序串聯起來構成的,在每一個區塊中存儲交易、帳號等相關信息。每一個區塊就像一本紙帳本,上面記錄了不少人天天的流水帳。若是咱們想查看最近一年有多少筆大額支出,那咱們須要將最近一年的全部帳本搬出,一本一本從頭至尾進行翻看,找出相應的記錄。也能夠說每一個區塊就像一本紙質書,若是咱們想從一堆紙質書中按某些關鍵字進行查找,除了從頭至尾進行翻看以外,就別無它法了。區塊鏈上數據都是離散化的數據,須要更加有效的數據組織方式以便於作進一步的查詢與分析。git

clipboard.png

隨着區塊鏈技術的火爆,整個行業可謂是百家爭鳴,有諸如BTC,ETH,XRP等耳熟能詳的公有鏈項目,也有Fabric,Enterprise Ethereum Alliance,Corda R3等衆所周知的聯盟鏈項目,固然還有一些私有鏈項目。不論是公有鏈也好,聯盟鏈、私有鏈也罷,每一個鏈都是一個一個獨立的信息孤島,它們在技術上各有特點,在底層數據模型上也有不少相同之處。每一個區塊鏈項目就像一個一個手機App,咱們能夠統計分析出每一個項目用戶總量、日活、月活、留存、使用率、用戶餘額、平均交易金額等通用指標。github

clipboard.png

如何將多個區塊鏈項目的信息孤島鏈接起來,將無序、離散的區塊數據整合成有序、可方便查詢的關係型數據,將鏈上透明、共識、可信的數據和信息聚合在一塊兒,提供分析、建模服務,賦能產業互聯網發展,是區塊鏈技術產業價值的重要體現,也是京東雲BDS產品的目標。數據庫

京東雲區塊鏈數據服務正在打造一個行業標準的區塊鏈的BI+數據搜索服務,可是區塊鏈項目的底層區塊存儲結構各不相同,須要對不一樣的項目的數據進行解析與整理,咱們深知單單夠咱們的力量是不足以對接業界繁多的項目,所以咱們開源了區塊鏈數據服務(BDS),讓更多的開發者與社區能夠參於其中,接入更多公有鏈、聯盟鏈、私有鏈等區塊鏈項目。區塊鏈數據服務將以區塊鏈數據搜索引擎形式聚合全部區塊鏈相關的內容,最大化區塊鏈上可信數據價值,方便社區能在BDS上進行區塊鏈數據的一站式查詢。緩存


如今,京東雲區塊鏈數據服務(BDS)正式對外開源!
🔗https://github.com/jdcloud-bds/
產品演示地址能夠訪問BDS服務。restful


架構圖

  • Blockchain Node:改造後的全節點服務,可將新塊數據同步到 Queue 中;
  • Exchange:交易所上區塊鏈相關數據;
  • Social Network:社交媒體上區塊鏈相關數據;
  • Queue:消息隊列服務;
  • Splitter:負責從 Queue 讀取區塊鏈數據,並將數據結果寫入到 Data Warehouse 中;
  • Data Process Framework:實時數據分析模塊,會進行一些實時數據指標計算,並將計算結果寫入到 Data Warehouse 中;
  • Machine Learning:機器學習模塊,會針對區塊鏈地址信息經過機器學習技術進行訓練,分析,並將分析結果寫入到 Data Warehouse 中;
  • Data Warehouse:數據倉庫服務,負責結構化存儲區塊鏈相關數據;
  • Cache Service:數據緩存服務,存儲一些熱數據,提升響應速度;
  • Event Service:事件訂閱服務,支持針對特殊的事件進行訂閱設置,發送郵件或短信;
  • Blockchain BI Service:數據可視化服務;
  • API Service:API 接口服務,支持經過 API 方式獲取數據;
  • Report Service:數據報告服務,自動生成數據報表;

開源計劃

目前在開源項目組織 https://github.com/jdcloud-bds/ 中, 京東雲BDS團隊開源了 Blochain NodeSplitter 兩個服務模塊, Blochain Node 模塊優先將 BTC Node 代碼開源了出來,以後咱們還會不斷開源其餘的全節點服務,預計在 2019 年 Q3 季度會陸續將:ETH,XRP,ETC,LTC 等 20+ 條主流公有鏈開源出來,歡迎各位開發者按期關注京東雲區塊鏈團隊的開源項目。架構

固然,除了開源 Blochain NodeSplitter 兩個服務模塊以外,京東雲BDS團隊還會陸續將其餘服務模塊也開源出來。機器學習

有人會問若是隻是開源 Blochain NodeSplitter 兩個服務模塊,是否是沒法搭建出相似 京東雲區塊鏈數據服務 的效果。固然能夠。ide

經過上面的系統架構圖能夠發現,Blochain NodeSplitter 兩個是整套服務的核心模塊,其餘模塊都是基於這兩個模塊來設計的,因此開源了這兩個核心模塊,區塊鏈數據庫服務的基本架子就已經存在了,剩下的就是錦上添花的事情了。學習

具體搭建方式,詳見本篇文章的 「本地搭建」 介紹。區塊鏈

成爲 Contributor

針對京東雲區塊鏈產品部開源的 Blochain NodeSplitter 兩個服務服務,開發者均可以申請成爲 Contributor。

若是您想基於bds-btc項目進行 bug 修復或者新增一些新特性,請給咱們的項目提個 issue,確保咱們知道您準備作這個事情,避免其餘開發者的重複開發。以後您只須要基於 https://github.com/jdcloud-bd... 項目新建一個分支,並基於這個分支進行代碼編輯,同時請確保文檔和測試用例都是完整的,完成後提交 PR 便可,項目的 Contributor 會進行代碼審覈,審覈經過後會進行代碼合併。

若是您是想將新區塊鏈項目接入BDS平臺,好比:Grin、Libra。請先給咱們發郵件,郵箱地址:jdcloud-bds@jd.com:,確保咱們知道您準備作這個事情,避免其餘開發者的重複開發。以後咱們會在項目組織 https://github.com/jdcloud-bds/ 下新建一個項目倉庫,您只須要基於新建的項目倉庫新建一個分支,並基於這個分支進行代碼編輯,同時請確保文檔和測試用例都是完整的,完成後提交 PR 便可,項目的 Contributor 會進行代碼審覈,審覈經過後會進行代碼合併。

Contributing 詳細文檔可分別參考

  • bds Contributing Guide
  • bds-btc Contributing Guide

若是您是開發者,有興趣一塊兒參與進來,歡迎來一塊兒爲區塊鏈的開源社區作一份貢獻。

本地搭建

接下來,讓咱們來一塊兒看看,若是在本地搭建一套簡易環境,達到相似 京東雲區塊鏈數據服務 的效果。

部署方式

  • confluent and Kafka - Queue
  • PostgreSQL - Data Warehouse
  • BTC Node
  • BDS(Splitter)
  • Grafana - Blockchain BI Service

安裝 confluent 和 kafka

confluent 是一個 proxy 服務,提供了 restful 接口供外部調用,並將結果寫入到 kafka 中

安裝 kafka

參考 kafka 官網文檔進行搭建,運行 kafka 服務的時候須要修改下其配置文件:<path-to-kafka>/config/server.properties 添加如下內容項

  • message.max.bytes=1048576000

安裝 confluent

參考 confluent 官網文檔進行搭建,下載壓縮包文件並解壓運行 Confluent REST Proxy 服務,可是在運行以前須要修改下其配置文件:<path-to-confluent>/etc/kafka-rest/kafka-rest.properties 添加如下內容項

  • max.request.size = 1048576000
  • buffer.memory = 1048576000
  • send.buffer.bytes = 1048576000

運行數據庫服務

數據庫這塊其實能夠不用本身本地搭建,其實能夠直接使用雲數據庫服務,這裏推薦是用京東云云數據庫 RDS 服務,購買地址請戳:JCS For PostgreSQL。

當數據庫服務運行起來以後,你須要手動建立一個庫名,這個庫名以後在運行 BDS(Splitter)服務的時候會用到。

安裝 BTC 全節點

BTC 運行環境初始化,參見 build-unix

環境初始化好後,開始進行源碼的編譯、運行

編譯源碼

1  ./autogen.sh
2  ./configure
3  make
4  make install

運行 BTC 全節點

消息隊列這裏採用了 Kafka
1 ./usr/local/bin/bitcoind -kafka -kafkaproxyhost=[kafka 代理的ip地址] -kafkaproxyport=[kafka 代理的訪問端口,默認是 8082] -kafkatopic=btc -datadir=[數據目錄]

當運行了 BTC 全節點,你能夠發如今 Kafka 服務中你收到了一些數據,這就是區塊鏈全節點的新塊數據。

安裝 BDS(Splitter)服務

BDS(Splitter) 運行環境初始化,須要安裝 go 的運行環境,參見 go install
環境初始化好後,開始進行源碼的編譯、運行

運行 BDS(Splitter)服務

  1. 設置項目的路徑 $GOPATH/src/github.com/jdcloud-bds/bds/
  2. 執行 go build -v github.com/jdcloud-bds/bds/cmd/bds-splitter 編譯項目;
  3. 根據 /config/splitter_example.conf 配置模板新建一個配置文件 splitter.conf,修改 splitter.conf 的內容,按提示設置對應的配置內容項,包括但不限於 btc 全節點信息,kafka 相關信息等;
  4. 執行 ./bds-splitter -c splitter.conf 運行 BDS(Splitter)服務;

當 BDS(Splitter)跑起來以後,你會發如今你的 PostgreSQL 數據庫服務以前新建的庫名下新建了一些表,過了一會,會發現這些表都有不一樣程度的新數據插入,這些數據就是 BDS(Splitter)服務從消息隊列 Kafka 中消費的全節點的新塊數據,進行解析以後插入的。

這樣就完成了從非結構的區塊鏈數據到結構化的數據轉換,只須要整套服務一直運行着,那麼在 PostgreSQL 數據庫服務就實時存儲着 BTC 全節點的全部數據信息。

安裝 Garafna

若是要查詢 PostgreSQL 數據庫中的數據必須登陸數據庫服務,執行 SQL 命令來查詢,不夠直觀。

全部推薦能夠安裝 Garafna 服務,安裝教程參考 Garafna 官網 文檔進行搭建。

經過 Garafna 服務就能夠預置好查詢 PostgreSQL 的 SQL 語句,實時查看你須要的數據結果,並以圖表的形式來展示,更加形象,直觀。

總結

一個新的區塊鏈項目對接區塊鏈數據服務開發只有兩步:

  1. 修改相應對的全節點服務,可以將區塊數據寫入到消息隊列。
  2. 從消息隊列中取出相應的數據寫入到數據倉庫。

點擊「閱讀原文」查看京東雲區塊鏈數據服務(BDS)項目介紹,也歡迎訪問:🔗https://github.com/jdcloud-bd...


推薦閱讀

業內首發 | 區塊鏈數據服務 - BDS

歡迎點擊「京東雲」瞭解更多精彩

圖片描述
圖片描述

相關文章
相關標籤/搜索