CITA架構與雲計算服務

hi 歡迎來到小祕課堂第一期,今天咱們來說講 CITA 架構與雲計算服務之間的那些事兒,歡迎主講人謝晗劍 git

講師:謝晗劍github

編輯:vivi編程

微服務架構

那一年架構大師 Martin Fowler 寫了一篇名字叫作 Microservices 的著名文章,微服務的思想倒是在那以前就流行在架構師的圈子裏面。這思想與結構化編程的理念一脈相承,即軟件系統的功能應該切分爲儘量的簡單的模塊,而後經過某種標準的方式組裝起來。在進程內咱們能夠將代碼解耦成一個個類和對象,經過對象間消息把它們組合起來;在UNIX系統裏面咱們實現了一個個極小而專注的工具,利用管道組合這些小工具從而完成各類複雜的任務;因而在企業級架構中,將系統拆分紅一個個獨立的應用,相互之間經過HTTP協議或是企業消息總線進行鏈接,也就是天然而然的事情了。安全

每個微服務都是一名匠人,它只專一於一件事情,並且可以很好的完成它。將一個軟件系統重構爲微服務架構的過程,就是不斷的將單個獨立的任務發掘出來而且將其代理給一位位值得託付的工匠的過程。(還真是像咱們發展創業團隊的過程喲 0_0)服務器

若是咱們仔細觀察交易從被用戶構造出來發送到網絡開始的整個處理流程,咱們會發現主要有這樣幾個階段:網絡

  1. 交易在網絡上被廣播,擴散。架構

  2. 網絡給交易安排一個惟一併且遞增的「序號」,例如交易所在的區塊高度+區塊內 index 就是一個「序號」。微服務

  3. 每一個節點都看到了交易的序號,而且按照順序對交易進行處理,例如將交易做爲參數傳給智能合約就是一種處理方式。工具

  4. 用戶經過節點提供的接口,得到交易被處理後的結果區塊鏈

這幾個主要階段正好對應了cita裏面的四個主要微服務

  1. 網絡服務

  2. 共識服務

  3. 執行服務

  4. RPC服務

cita 網絡中的每個全節點都會運行這一組服務。因爲這些服務能夠運行在多臺服務器上,所以 cita 裏面的節點概念再也不和服務器一一綁定,而是變成了由一臺或者多臺物理服務器構成的集羣。集羣運行在企業內部,所以同一節點的微服務之間能夠相互信任,共享相同的安全邊界。

微服務經過消息中間件鏈接。網絡負責與 P2P 網絡中的其它節點創建鏈接,交換消息。不管交易被髮送到哪一個節點,都會被擴散並被本節點的網絡醬接收到,網絡醬接收到這個交易以後,會經過消息的形式把它遞交給共識醬。共識又會請網絡醬幫忙和其餘節點的共識醬交換消息,以對這個交易的序號達成共識。在共識完成以後,執行會接手,調用某個智能合約對交易進行處理。最後用戶經過詢問 RPC,獲取交易的處理結果。(呼... 終於完成,呀比~ \(^o^)/ )

經過這樣一種相互配合、團隊協做的流水線做業,cita 節點將一個個交易搬到了區塊鏈上。在這樣一種做業方式中,節點再也不是一位須要本身完成全部工做的小做坊老闆,而是一座擁有大量熟練工人的工廠。每一位微服務都專心一件事情,所以能夠把這件事作得很好很高效。不只如此,流水線的每一個環節均可以有不少選項:咱們能夠請 Tendermint 來負責共識,也能夠請 PBFT 或者 PoA 來作這件事,只要結果同樣,流水線其餘環節的工人徹底不會意識到他們是在和共識部門的哪位工人在協做。在 cita 「工廠」裏面,組件可插拔不是口號,而是現實。

一樣的,小做坊受生產流程所限,產出上限固定,沒法應對銷售旺季交易量保障的狀況;而 cita 工廠因爲創建了一套標準的協做體系,只須要增長更多的流水線和工人就可以從容應對這些狀況!哦也(^-^)V

Scalability

cita 的這個特色就是傳說中的 scalability

「等等,scalability 不是區塊鏈的一個還沒有解決的問題嗎?大家不是吹牛吧?」 ?_?

目前區塊鏈網絡的 scale 問題源自其多複本的設計思路,因爲每個交易都會被複制到全部節點上處理和驗證,節點在驗證交易的同時也是在進行重複計算,形成了整個網絡的交易處理能力約等於網絡中單個節點的處理能力,不管怎麼增長節點都沒有用。咱們經常討論的,就是如何能作出一個方案,在保證安全的前提下可以經過增長節點來提升區塊鏈的處理能力,行話又稱爲水平擴展(scale out)

咱們知道,scalability 能夠分爲兩種,除了上述水平擴展外,還有垂直擴展(scale up):若是增長節點沒用,能不能想辦法提升單個節點的能力呢?既然整個網絡的處理能力約等於網絡中的單個節點,若是單個節點的能力很強,那麼整個網絡的處理能力不是就提升了嗎?

這就是 cita 具備 scalability 的緣由。經過節點的微服務架構,cita 能夠作到節點內的水平擴展,從區塊鏈這個層面看,即是節點在垂直擴展了。相較於國際大公司經過專有硬件來提高單節點處理能力的方案,cita 只須要運行在普通PC 服務器上,不只可以爲用戶節約成本,水平擴展能力也比單機架構更強。

這麼好的思路,爲何公有鏈不用呢?

敏銳的讀者可能已經發現了問題所在:中心化

對於公有鏈的設計者來講,節點應該被儘量多的用戶運行在儘量多的計算機上。運行一個計算機集羣雖然能提高節點能力,可是維護集羣所須要的專業知識以及資源投入,倒是普通用戶不具有的。若是在公有鏈中使用這樣的設計,必然出現的狀況是隻有少數具備專業知識、可以投入必定資源的人才有能力運行全節點,這與公有鏈的節點對等無中心的目標是相悖的。

cita 則是針對企業級用戶設計的區塊鏈。做爲 cita 的目標用戶,企業天生就具備運行一個集羣的資源和能力。在雲計算以及容器化技術已經很是成熟的今天,企業級用戶能夠輕鬆的將 cita 服務部署到多臺服務器上,並對這些服務進行管理。相較於其餘區塊鏈技術,cita 微服務架構可以真正發揮雲服務的潛力,能夠說,cita 不只僅是針對企業級用戶設計,也是針對雲服務設計的區塊鏈若是您有興趣成爲咱們的合做夥伴或者用戶,歡迎與咱們聯繫。聯繫方式:contact@cryptape.com,歡迎來撩~

關於講師

謝晗劍(Jan Xie)

祕猿科技 CEO。Nervos Foundation 聯合創始人,首席架構師。以太坊 Ethereum 核心研發團隊成員。中國以太坊及區塊鏈技術社區 EthFans 發起人。曾擔任知名數字貨幣交易所架構師與核心開發者,設計與開發了世界上第一個開源數字貨幣交易所 Peatio。

Github:https://github.com/janx

祕猿科技 repo:https://github.com/cryptape

鏈接開發者與運營方的合做平臺 CITAHub:https://www.citahub.com/

有任何技術問題能夠在論壇討論:https://talk.nervos.org

相關文章
相關標籤/搜索