京東分佈式BaaS的設計與實踐

在正式講解BasS平臺的設計之前,我們還是先簡單介紹下區塊鏈技術,區塊鏈從出現,到火爆再到現階段的微涼,前前後後已經有了10年的時間了,經歷過高潮也有過低谷,但毫無疑問,區塊鏈是現在最火的技術,我們從各大公司的未來戰略中就可以看出。比如兩個很有名的戰略:BASIC以及ABCD戰略。其中的兩個B都代表的是Blockchain。

區塊鏈呢,我們都知道他是脫胎於比特幣,比特幣(BitCoin)的概念最初由中本聰在2009年提出,根據中本聰的思路設計發佈的開源軟件以及建構其上的P2P網絡。比特幣是一種P2P形式的數字貨幣。點對點的傳輸意味着一個去中心化的支付系統。

從比特幣開始,到現階段比較火的EOS、IOTA等項目,區塊鏈的發展經歷三個階段,也就是我們經常聽到的區塊鏈1.0、2.0以及3.0。那麼不同階段之間,有什麼各自的特點呢?我在這裏簡單的提出了各個階段的關鍵詞,相信大家一看就明白,也不用多說。

區塊鏈1.0

  • 數字貨幣
  • 曠工
  • 全網賬本
  • 非對稱加密技術
  • 錢包與交易所
  • 開源與區塊鏈瀏覽器

區塊鏈2.0

  • 智能合約
  • 容器或虛擬機
  • 賬戶模型
  • 適合更多場景
  • 公有鏈和聯盟鏈發展迅速
  • 政策與監管

區塊鏈3.0

  • 技術種類多,還在探索
  • 以DPOS、DAG等技術爲代表
  • 提高性能至難以想象
  • 大規模使用,改變人們生活

最後我們再來看下區塊鏈的分類,簡單的說我們可以把區塊鏈分成三類,公有鏈、私有鏈以及我們今天重點要講的聯盟鏈技術。因爲各大廠由於自身特點,業務繁多,有很多應用場景都可以跟區塊鏈相結合,因此都很早就開始關注並探索聯盟鏈技術。

看過區塊鏈的起源及發展,我們不禁要問,區塊鏈到底有什麼魔力能夠這麼火爆呢,他到底有什麼價值呢?

我們可以這麼說,區塊鏈是一套完整的通過密碼學和計算機科學解決信任的技術。公鏈是去中心化的,聯盟鏈是多中心化的。不但實現了信息透明,不可篡改,還能防止作惡。由於這些特點,區塊鏈技術解決了信任問題,正在顛覆各行各業。當然我認爲現階段還是大家都在積極探索的階段,落地的場景還不多,但是我認爲應該就在不久的將來會迎來一波國內聯盟鏈項目的爆發,我們可以拭目以待。

image

我爲什麼敢這麼說呢?大家可以看下京東的區塊鏈應用場景,京東商城,京東數科,京東雲,京東物流等等,業務場景豐富,各個部門都在結合自身的業務,積極研究和探索區塊鏈。目前我們做的最好的就是通過區塊鏈進行商品溯源,上面的圖簡單說明了京東在區塊鏈落地場景上的探索,我相信其他大廠也在做同樣的事情。

image

雖然我認爲區塊鏈應用落地會在不遠處迎來一場爆發,但不可否認的是,區塊鏈落地推廣還是有不小的難題,我在這裏總結了5點:

  1. 技術門檻高,區塊鏈技術複雜,是多門學科的綜合體,導致即使是現在技術人才仍然稀缺。

  2. 結合業務難,傳統的產品和銷售不需要理解技術,但是區塊鏈不同,這給區塊鏈應用帶來了困難。

  3. 性能不足,雖然我們經常看到很多區塊鏈性能動輒百萬、千萬TPS,但是都是停留在理論階段,沒有辦法證實。

  4. 安全威脅,說到安全,這其實指的是數據共享開放帶來的風險,越來越多的企業核心競爭力不再是技術,而是數據。如何既能做到信息共享,又能減少安全隱患,這是區塊鏈中隱私保護要解決的問題。

  5. 身份無法監管,公鏈的用戶身份都是匿名的,聯盟鏈因爲是權限區塊鏈,身份還是可以覈實的,但是也存在身份造假可能。

要同時克服這5點困難,一般體量的公司很難做到,總是會有一兩個短板存在。但京東平臺卻不存在這樣的問題,至於如何克服,先容我賣個關子,等我講完我相信大家都會明白京東是如何克服落地難題的。

首先我們可以先來看下京東BaaS平臺的系統架構。

image

我們重點來看下紅色的部分,從下往上看,我們的Baas能夠部署在公有云、私有云、物理服務器以及虛擬機,並不綁定在任意雲上,可以自由選擇,且同一網絡中的不同節點的資源也不需要一致。

在調度層呢,我們採用了現有的最流行的Kubernetes作爲Baas的調度器,K8的優點我就不詳細說了,大家都知道,同時我們也採用分佈式存儲服務作爲區塊鏈節點存儲介質,能夠提供動態擴容功能。

再往上一層,是區塊鏈層,之所以叫做Baas就是因爲平臺能夠爲客戶提供多種的區塊鏈底層可用。現階段我們已經接入了Hyperledger Fabric、Stellar等。

接下來一層是服務層,除了特定區塊鏈提供的特定服務以外,我們更是提供了很多特殊功能,比如大家比較熟悉的快速部署,我們能夠在30秒時間內啓動一個私有區塊鏈網絡。再比如身份鏈背書,這個我在後面會詳細講到。還有一個跨域部署功能是必須要提到的,這是京東Baas平臺爲企業用戶提供的區塊鏈組網服務,藉助該功能,任意企業都能快速的與其他合作伙伴一起搭建一條架構在不同資源層上的聯盟鏈,非常實用。

在接口層呢,我們現階段也提供了WebUI以及API接口兩種類型的對外接口,能夠滿足不同用戶的需求。

最上面一層就是應用層了,這是我們現階段已經支撐的項目案例,後續我會詳細介紹其中的幾個。

接下來爲大家介紹京東身份鏈。

image

大家可能會問了,現在已經有很成熟的PKI證書認證體系了,用的感覺也還很好,爲什麼還要用區塊鏈做個身份鏈呢?其實,我們做身份鏈的目的不是替換PKI,相反身份鏈是傳統PKI體系的信任補強,PKI + 區塊鏈 = 可信身份,同時也能夠解決傳統CA根祕鑰丟失被盜的災難性後果。身份鏈本身在整個BaaS平臺中是處於什麼位置呢?它最主要的作用就是爲BaaS用戶背書,去中心化管理用戶身份,將身份管理做到透明可信。任何接入到京東BaaS平臺的企業及開發者都能很方便的驗證平臺內其他用戶的身份,從而提升信任。

image

而且雖然我們使用了區塊鏈存儲用戶身份,但並不意味着用戶需要更多的學習成本,我們對用戶的實名認證儘量的貼近傳統用法,可視化且步驟化,而且私鑰等信息都是由前端生成,並不會在網絡中傳輸。

image

接下來我們來看一個典型的京東BaaS的網絡拓撲圖,從這張圖中,我們把平臺分成了兩個部分,上面部分是全局服務,現在有前面介紹的身份鏈、鏡像倉庫、應用倉庫以及消息中繼服務,這些是被所有部署到不同地方的BaaS平臺所共享的。鏡像倉庫中存儲了部署區塊鏈以及DApp所用到的所有組件鏡像,應用倉庫爲所有的開發者提供了一個可以發佈自己應用的地方,各個BaaS的用戶可以將應用倉庫中的DAPP部署到自己維護的區塊鏈網絡中,豐富網絡應用。而消息中繼服務是跨域部署時用到的消息組件。

下面部分展示的是不同種類的BaaS部署模式,現階段,我們可以很方便的支持公有云、私有云、跨雲以及跨企業部署。公有云模式中,所有的用戶都被一箇中心化的雲管理,而私有云模式中,企業可以很方面的部署企業內部區塊鏈,實現各部門數據聯盟。後兩種模式是京東BaaS主打的部署方式,我們最初開始做BaaS平臺的時候,定下的一個目標就是不綁定任何資源,實現任意資源條件下的跨域主網。

image

對於公有云部署,我再詳細介紹下,我們現在已經上線了公有云平臺,也就是https://baas.jd.com,大家可以申請試用。可能有的同學有疑問,中心化的雲與區塊鏈的去中心化思想是不是會衝突呢?這點我想着重強調,在其他的BaaS平臺中,公有云的部署方式確實意味着所有的區塊鏈節點都在該雲平臺,但是對於京東BaaS來說,公有云的意思是所有的用戶都有一個統一的Web UI入口,僅此而已。什麼意思呢?可以看到我們有個集羣管理功能,這就意味着用戶可以將部署在任意地方的Kubernetes集羣導入到京東BaaS,不管是阿里雲、AWS,還是開發者的筆記本。這樣的一個結果就是,雖然我們都是用的同一個UI入口,但是不同用戶間組成的網絡還是在不同的地方,跟區塊鏈的去中心化相得益彰。

接下來大家可以來看一段視頻(http://m.iqiyi.com/m5/bubble/videoFilm.html?feedId=109733515348&platform=15), 主要介紹了BaaS的一鍵部署功能,他主要是用於給開發者、試用者快速部署起一套私有鏈,幫助開發者調試DAPP、試用者感受區塊鏈的特性。可以看到我們可以靈活的定製區塊鏈的相關屬性,包括現在Fabric並不支持的國密等等,並且能夠在極短的時間內將私有網絡部署成功,後續視頻介紹的UI上的一些功能,包括通道管理、鏈碼管理等等,針對鏈碼我們也支持鏈碼的在線編輯,並對編寫的鏈碼做了形式化的驗證,只有驗證成功的鏈碼才能被上傳。最後我們也集成了區塊瀏覽器以及一個示例程序,方便不懂區塊鏈的試用者感受區塊鏈。

說完了一鍵部署,我們再來詳細介紹下企業組網,也就是跨域部署功能。

image

如果一個企業想要加入BaaS,他需要準備哪些資源呢?從圖中我們可以看到,企業只需要準備機器資源就可以了,剩下的服務都由京東提供。相較於一鍵部署,企業組網的流程是比較複雜的,這裏我們可以簡單的梳理一下:

發起聯盟:各方商議發起聯盟,確定聯盟名稱、運作方式等,然後線下籤約
發起人線上創建共識節點:發起人利用BaaS應用創建共識節點,並通過BaaS實時消息服務器通知參與方
發起方發佈Peer加入消息:發起方發佈Peer加入消息,參與方利用BaaS應用創建Peer節點
成員發起創建channel:聯盟內成員均可發起創建channel,並邀請全部或部分成員join channel
受邀成員join channel:收到邀請的成員,點擊消息中的“同意”按鈕,發起加入channel
組網完成:經歷部署節點、創建channel,加入channel等過程,組網完成

通過以上6步,企業就可以通過京東BaaS部署一套聯盟鏈,應該說還是比較方便的。

介紹完了BaaS的幾個主要功能,我們最後再來梳理下BaaS的特點。

資源靈活:不僅可適配京東雲、還支持阿里雲、騰訊雲、華爲雲等,目前得到了政府、金融跟銀行等機構的關注
易部署:提供簡單易用的區塊鏈底層服務,幫助項目快速落地、減少投入
安全可控:支持自建CA和第三方CA證書,支持國密算法
多底層集成:目前集成Hyperledger Fabric、Stellar、Ethereum,還有京東自主研發的底層區塊鏈JD Chain
高可用:基於流行的Kubernetes技術,提供高可靠可拓展的區塊鏈平臺
動態擴容:試用分佈式存儲,解決了海量數據問題,並且可以動態擴容<
易管理:可視化部署,可視化運維監控
成熟先進:快速部署(30秒),靈活定製部署,企業級跨域部署
身份可信:創新的試用身份鏈爲企業背書,保證企業身份可信,保證組網過程安全可靠
高性能:在多鏈網絡峯值狀態下,寫TPS可達到5200+,讀TPS達到14900+

以上介紹的僅僅是BaaS一期的功能,同時呢我們現在也在積極的規劃及實施二期功能,明年京東BaaS的功能將更加豐富。

在講解的最後,我再給大家介紹下我們已經支持的項目案例。豐富的合作案例覆蓋金融、物流、公益慈善、供應鏈、存證、電商等衆多場景,充分證明了我們的能力。

image

比如我們跟宿遷工商局建立了全國首個電子營業執照區塊鏈應用平臺,將在宿遷工商局註冊的商家營業執照上鍊,簡化商家紙質審覈流程。我們也聯合大象慧雲、太平洋保險開出中國首張區塊鏈增值稅專用發票,未來有望每年爲京東節減2億元的發票郵寄費。

這麼多的合作案例,無疑是肯定了區塊鏈的價值,BaaS的價值。

聽了這麼多,如果大家對我們的BaaS平臺感興趣,可以在baas.jd.com申請試用,也可以通過京東商城賬號登錄,但是需要自己準備k8s環境。

講師介紹:劉春偉,京東區塊鏈架構師,區塊鏈技術專家。熟悉多種區塊鏈架構和性能優化方法,設計並開發過高性能區塊鏈底層、點對點視頻分享系統、工業物聯網平臺。主要設計和負責的區塊鏈產品有京東區塊鏈即服務平臺,京東區塊鏈祕鑰保管箱,區塊鏈電商平臺等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章