区块链相关数据报表_重磅|京东云区块链数据服务(BDS)正式开源
今天,“區(qū)塊鏈+京東云 大有可為”戰(zhàn)略合作媒體溝通會在北京國家會議中心召開。會上,京東云與京東數科宣布在區(qū)塊鏈技術服務領域深度合作,重磅發(fā)布了智臻鏈“云”建設規(guī)劃,同步上線了“區(qū)塊鏈防偽追溯”、“區(qū)塊鏈數字存證”兩款“京東自營”的京東云市場SaaS應用。同時京東云還重磅推出國內首款區(qū)塊鏈數據在線分析服務產品——BDS服務。
區(qū)塊鏈由很多區(qū)塊按時間順序串聯起來構成的,在每個區(qū)塊中存儲交易、賬號等相關信息。每個區(qū)塊就像一本紙賬本,上面記錄了很多人每天的流水賬。如果我們想查看最近一年有多少筆大額支出,那我們需要將最近一年的所有賬本搬出,一本一本從頭到尾進行翻看,找出相應的記錄。也可以說每個區(qū)塊就像一本紙質書,如果我們想從一堆紙質書中按某些關鍵字進行查找,除了從頭到尾進行翻看之外,就別無它法了。區(qū)塊鏈上數據都是離散化的數據,需要更加有效的數據組織方式以便于做進一步的查詢與分析。
隨著區(qū)塊鏈技術的火爆,整個行業(yè)可謂是百家爭鳴,有諸如BTC,ETH,XRP等耳熟能詳的公有鏈項目,也有Fabric,Enterprise Ethereum Alliance,Corda R3等眾所周知的聯盟鏈項目,當然還有一些私有鏈項目。不管是公有鏈也好,聯盟鏈、私有鏈也罷,每個鏈都是一個一個獨立的信息孤島,它們在技術上各有特色,在底層數據模型上也有很多相同之處。每個區(qū)塊鏈項目就像一個一個手機App,我們可以統(tǒng)計分析出每個項目用戶總量、日活、月活、留存、使用率、用戶余額、平均交易金額等通用指標。
如何將多個區(qū)塊鏈項目的信息孤島連接起來,將無序、離散的區(qū)塊數據整合成有序、可方便查詢的關系型數據,將鏈上透明、共識、可信的數據和信息聚合在一起,提供分析、建模服務,賦能產業(yè)互聯網發(fā)展,是區(qū)塊鏈技術產業(yè)價值的重要體現,也是京東云BDS產品的目標。
京東云區(qū)塊鏈數據服務正在打造一個行業(yè)標準的區(qū)塊鏈的BI+數據搜索服務,但是區(qū)塊鏈項目的底層區(qū)塊存儲結構各不相同,需要對不同的項目的數據進行解析與整理,我們深知單單夠我們的力量是不足以對接業(yè)界繁多的項目,因此我們開源了區(qū)塊鏈數據服務(BDS),讓更多的開發(fā)者與社區(qū)可以參于其中,接入更多公有鏈、聯盟鏈、私有鏈等區(qū)塊鏈項目。區(qū)塊鏈數據服務將以區(qū)塊鏈數據搜索引擎形式聚合所有區(qū)塊鏈相關的內容,最大化區(qū)塊鏈上可信數據價值,方便社區(qū)能在BDS上進行區(qū)塊鏈數據的一站式查詢。
現在,京東云區(qū)塊鏈數據服務(BDS)正式對外開源!
?https://github.com/jdcloud-bds/
產品演示地址可以訪問BDS服務。
架構圖
Blockchain Node:改造后的全節(jié)點服務,可將新塊數據同步到 Queue 中;
Exchange:交易所上區(qū)塊鏈相關數據;
Social Network:社交媒體上區(qū)塊鏈相關數據;
Queue:消息隊列服務;
Splitter:負責從 Queue 讀取區(qū)塊鏈數據,并將數據結果寫入到 Data Warehouse 中;
Data Process Framework:實時數據分析模塊,會進行一些實時數據指標計算,并將計算結果寫入到 Data Warehouse 中;
Machine Learning:機器學習模塊,會針對區(qū)塊鏈地址信息通過機器學習技術進行訓練,分析,并將分析結果寫入到 Data Warehouse 中;
Data Warehouse:數據倉庫服務,負責結構化存儲區(qū)塊鏈相關數據;
Cache Service:數據緩存服務,存儲一些熱數據,提高響應速度;
Event Service:事件訂閱服務,支持針對特殊的事件進行訂閱設置,發(fā)送郵件或短信;
Blockchain BI Service:數據可視化服務;
API Service:API 接口服務,支持通過 API 方式獲取數據;
Report Service:數據報告服務,自動生成數據報表;
開源計劃
目前在開源項目組織 https://github.com/jdcloud-bds/ 中, 京東云BDS團隊開源了 Blochain Node 和 Splitter 兩個服務模塊, Blochain Node 模塊優(yōu)先將 BTC Node 代碼開源了出來,之后我們還會不斷開源其他的全節(jié)點服務,預計在 2019 年 Q3 季度會陸續(xù)將:ETH,XRP,ETC,LTC 等 20+ 條主流公有鏈開源出來,歡迎各位開發(fā)者定期關注京東云區(qū)塊鏈團隊的開源項目。
當然,除了開源 Blochain Node 和 Splitter 兩個服務模塊之外,京東云BDS團隊還會陸續(xù)將其他服務模塊也開源出來。
有人會問如果只是開源 Blochain Node 和 Splitter 兩個服務模塊,是不是無法搭建出類似 京東云區(qū)塊鏈數據服務 的效果。當然可以。
通過上面的系統(tǒng)架構圖可以發(fā)現,Blochain Node 和 Splitter 兩個是整套服務的核心模塊,其他模塊都是基于這兩個模塊來設計的,所以開源了這兩個核心模塊,區(qū)塊鏈數據庫服務的基本架子就已經存在了,剩下的就是錦上添花的事情了。
具體搭建方式,詳見本篇文章的 “本地搭建” 介紹。
成為 Contributor
針對京東云區(qū)塊鏈產品部開源的 Blochain Node 和 Splitter 兩個服務服務,開發(fā)者都可以申請成為 Contributor。
如果您想基于bds-btc項目進行 bug 修復或者新增一些新特性,請給我們的項目提個 issue,確保我們知道您準備做這個事情,避免其他開發(fā)者的重復開發(fā)。之后您只需要基于 https://github.com/jdcloud-bds/bds-btc 項目新建一個分支,并基于這個分支進行代碼編輯,同時請確保文檔和測試用例都是完整的,完成后提交 PR 即可,項目的 Contributor 會進行代碼審核,審核通過后會進行代碼合并。
如果您是想將新區(qū)塊鏈項目接入BDS平臺,比如:Grin、Libra。請先給我們發(fā)郵件,郵箱地址:jdcloud-bds@jd.com:,確保我們知道您準備做這個事情,避免其他開發(fā)者的重復開發(fā)。之后我們會在項目組織 https://github.com/jdcloud-bds/ 下新建一個項目倉庫,您只需要基于新建的項目倉庫新建一個分支,并基于這個分支進行代碼編輯,同時請確保文檔和測試用例都是完整的,完成后提交 PR 即可,項目的 Contributor 會進行代碼審核,審核通過后會進行代碼合并。
Contributing 詳細文檔可分別參考
bds Contributing Guide
bds-btc Contributing Guide
如果您是開發(fā)者,有興趣一起參與進來,歡迎來一起為區(qū)塊鏈的開源社區(qū)做一份貢獻。
本地搭建
接下來,讓我們來一起看看,如果在本地搭建一套簡易環(huán)境,達到類似 京東云區(qū)塊鏈數據服務 的效果。
部署方式
confluent and Kafka - Queue
PostgreSQL - Data Warehouse
BTC Node
BDS(Splitter)
Grafana - Blockchain BI Service
安裝 confluent 和 kafka
confluent 是一個 proxy 服務,提供了 restful 接口供外部調用,并將結果寫入到 kafka 中
安裝 kafka
參考 kafka 官網文檔進行搭建,運行 kafka 服務的時候需要修改下其配置文件:/config/server.properties 添加以下內容項
message.max.bytes=1048576000
安裝 confluent
參考 confluent 官網文檔進行搭建,下載壓縮包文件并解壓運行 Confluent REST Proxy 服務,但是在運行之前需要修改下其配置文件:/etc/kafka-rest/kafka-rest.properties 添加以下內容項
max.request.size = 1048576000
buffer.memory = 1048576000
send.buffer.bytes = 1048576000
運行數據庫服務
數據庫這塊其實可以不用自己本地搭建,其實可以直接使用云數據庫服務,這里推薦是用京東云云數據庫 RDS 服務,購買地址請戳:JCS For PostgreSQL。
當數據庫服務運行起來之后,你需要手動創(chuàng)建一個庫名,這個庫名之后在運行 BDS(Splitter)服務的時候會用到。
安裝 BTC 全節(jié)點
BTC 運行環(huán)境初始化,參見 build-unix
環(huán)境初始化好后,開始進行源碼的編譯、運行
編譯源碼
1??./autogen.sh2??./configure3??make4??make?install
運行 BTC 全節(jié)點
消息隊列這里采用了 Kafka
1?./usr/local/bin/bitcoind?-kafka?-kafkaproxyhost=[kafka?代理的ip地址]?-kafkaproxyport=[kafka?代理的訪問端口,默認是?8082]?-kafkatopic=btc?-datadir=[數據目錄]
當運行了 BTC 全節(jié)點,你可以發(fā)現在 Kafka 服務中你收到了一些數據,這就是區(qū)塊鏈全節(jié)點的新塊數據。
安裝 BDS(Splitter)服務
BDS(Splitter) 運行環(huán)境初始化,需要安裝 go 的運行環(huán)境,參見 go install
環(huán)境初始化好后,開始進行源碼的編譯、運行
運行 BDS(Splitter)服務
設置項目的路徑 $GOPATH/src/github.com/jdcloud-bds/bds/;
執(zhí)行 go build -v github.com/jdcloud-bds/bds/cmd/bds-splitter 編譯項目;
根據 /config/splitter_example.conf 配置模板新建一個配置文件 splitter.conf,修改 splitter.conf 的內容,按提示設置對應的配置內容項,包括但不限于 btc 全節(jié)點信息,kafka 相關信息等;
執(zhí)行 ./bds-splitter -c splitter.conf 運行 BDS(Splitter)服務;
當 BDS(Splitter)跑起來之后,你會發(fā)現在你的 PostgreSQL 數據庫服務之前新建的庫名下新建了一些表,過了一會,會發(fā)現這些表都有不同程度的新數據插入,這些數據就是 BDS(Splitter)服務從消息隊列 Kafka 中消費的全節(jié)點的新塊數據,進行解析之后插入的。
這樣就完成了從非結構的區(qū)塊鏈數據到結構化的數據轉換,只需要整套服務一直運行著,那么在 PostgreSQL 數據庫服務就實時存儲著 BTC 全節(jié)點的所有數據信息。
安裝 Garafna
如果要查詢 PostgreSQL 數據庫中的數據必須登錄數據庫服務,執(zhí)行 SQL 命令來查詢,不夠直觀。
所有推薦可以安裝 Garafna 服務,安裝教程參考 Garafna 官網 文檔進行搭建。
通過 Garafna 服務就可以預置好查詢 PostgreSQL 的 SQL 語句,實時查看你需要的數據結果,并以圖表的形式來展現,更加形象,直觀。
總結
一個新的區(qū)塊鏈項目對接區(qū)塊鏈數據服務開發(fā)只有兩步:
修改相應對的全節(jié)點服務,能夠將區(qū)塊數據寫入到消息隊列。
從消息隊列中取出相應的數據寫入到數據倉庫。
推薦閱讀
業(yè)內首發(fā) | 區(qū)塊鏈數據服務 - BDS
總結
以上是生活随笔為你收集整理的区块链相关数据报表_重磅|京东云区块链数据服务(BDS)正式开源的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单片机蓝牙烧录_蓝牙模块与单片机如何连接
- 下一篇: word打开文档很久很慢_word文档打