CITA架構(gòu)與云計(jì)算服務(wù)

按:原文發(fā)表于2017年8月湿颅。

微服務(wù)架構(gòu)

那一年架構(gòu)大師Martin Fowler寫(xiě)了一篇名字叫做Microservices的著名文章乐疆,微服務(wù)的思想?yún)s是在那之前就流行在架構(gòu)師的圈子里面。這思想與結(jié)構(gòu)化編程的理念一脈相承碗旅,即軟件系統(tǒng)的功能應(yīng)該切分為盡可能的簡(jiǎn)單的模塊笨使,然后通過(guò)某種標(biāo)準(zhǔn)的方式組裝起來(lái)。在進(jìn)程內(nèi)我們可以將代碼解耦成一個(gè)個(gè)類和對(duì)象销部,通過(guò)對(duì)象間消息把它們組合起來(lái);在UNIX系統(tǒng)里面我們實(shí)現(xiàn)了一個(gè)個(gè)極小而專一的工具制跟,利用管道組合這些小工具從而完成各種復(fù)雜的任務(wù)舅桩;于是在企業(yè)級(jí)架構(gòu)中,將系統(tǒng)拆分成一個(gè)個(gè)獨(dú)立的應(yīng)用雨膨,相互之間通過(guò)HTTP協(xié)議或是企業(yè)消息總線進(jìn)行連接擂涛,也就是自然而然的事情了。

每一個(gè)微服務(wù)都是一名匠人聊记,它只專注于一件事情撒妈,而且能夠很好的完成它。將一個(gè)軟件系統(tǒng)重構(gòu)為微服務(wù)架構(gòu)的過(guò)程排监,就是不斷的將單個(gè)獨(dú)立的任務(wù)發(fā)掘出來(lái)并且將其代理給一位位值得托付的工匠的過(guò)程狰右。(還真是像我們發(fā)展創(chuàng)業(yè)團(tuán)隊(duì)的過(guò)程喲 0_0)

如果我們仔細(xì)觀察交易從被用戶構(gòu)造出來(lái)發(fā)送到網(wǎng)絡(luò)開(kāi)始的整個(gè)處理流程,我們會(huì)發(fā)現(xiàn)主要有這樣幾個(gè)階段:

  1. 交易在網(wǎng)絡(luò)上被廣播社露,擴(kuò)散挟阻。
  2. 網(wǎng)絡(luò)給交易安排一個(gè)唯一而且遞增的“序號(hào)”琼娘,例如交易所在的區(qū)塊高度+區(qū)塊內(nèi)index就是一個(gè)“序號(hào)”峭弟。
  3. 每個(gè)節(jié)點(diǎn)都看到了交易的序號(hào),并且按照順序?qū)灰走M(jìn)行處理脱拼,例如將交易作為參數(shù)傳給智能合約就是一種處理方式瞒瘸。
  4. 用戶通過(guò)節(jié)點(diǎn)提供的接口,獲得交易被處理后的結(jié)果

這幾個(gè)主要階段正好對(duì)應(yīng)了cita里面的四個(gè)主要微服務(wù)

  1. 網(wǎng)絡(luò)服務(wù)
  2. 共識(shí)服務(wù)
  3. 執(zhí)行服務(wù)
  4. RPC服務(wù)

cita網(wǎng)絡(luò)中的每一個(gè)全節(jié)點(diǎn)都會(huì)運(yùn)行這一組服務(wù)熄浓。由于這些服務(wù)可以運(yùn)行在多臺(tái)服務(wù)器上情臭,因此cita里面的節(jié)點(diǎn)概念不再和服務(wù)器一一綁定,而是變成了由一臺(tái)或者多臺(tái)物理服務(wù)器構(gòu)成的集群赌蔑。集群運(yùn)行在企業(yè)內(nèi)部俯在,因此同一節(jié)點(diǎn)的微服務(wù)之間可以相互信任,共享相同的安全邊界娃惯。

image

微服務(wù)通過(guò)消息中間件連接(雖然cita v0.8只支持RabbitMQ跷乐,但對(duì)消息中間件透明從一開(kāi)始就是cita的設(shè)計(jì)目標(biāo),對(duì)kafka的支持正在開(kāi)發(fā)中趾浅,很快就會(huì)與大家見(jiàn)面_)愕提。網(wǎng)絡(luò)醬負(fù)責(zé)與P2P網(wǎng)絡(luò)中的其它節(jié)點(diǎn)建立連接馒稍,交換消息。無(wú)論交易被發(fā)送到哪個(gè)節(jié)點(diǎn)浅侨,都會(huì)被擴(kuò)散并被本節(jié)點(diǎn)的網(wǎng)絡(luò)醬接收到纽谒,網(wǎng)絡(luò)醬接收到這個(gè)交易之后,會(huì)通過(guò)消息的形式把它遞交給共識(shí)醬如输。共識(shí)醬又會(huì)請(qǐng)網(wǎng)絡(luò)醬幫忙和其他節(jié)點(diǎn)的共識(shí)醬交換消息鼓黔,以對(duì)這個(gè)交易的序號(hào)達(dá)成共識(shí)。在共識(shí)完成之后挨决,執(zhí)行醬會(huì)接手请祖,調(diào)用某個(gè)智能合約對(duì)交易進(jìn)行處理。最后用戶通過(guò)詢問(wèn)RPC醬脖祈,獲取交易的處理結(jié)果肆捕。

通過(guò)這樣一種相互配合、團(tuán)隊(duì)協(xié)作的流水線作業(yè)盖高,cita節(jié)點(diǎn)將一個(gè)個(gè)交易搬到了區(qū)塊鏈上慎陵。在這樣一種作業(yè)方式中,節(jié)點(diǎn)不再是一位需要自己完成所有工作的小作坊老板喻奥,而是一座擁有大量熟練工人的工廠席纽。每一位微服務(wù)醬都專心一件事情,因此可以把這件事做得很好很高效撞蚕。不僅如此润梯,流水線的每個(gè)環(huán)節(jié)都可以有很多選項(xiàng):我們可以請(qǐng)CITA-BFT醬來(lái)負(fù)責(zé)共識(shí),也可以請(qǐng)PBFT醬或者PoA醬來(lái)做這件事甥厦,只要結(jié)果一樣纺铭,流水線其他環(huán)節(jié)的工人完全不會(huì)意識(shí)到他們是在和共識(shí)部門(mén)的哪位工人在協(xié)作。在cita“工廠”里面刀疙,組件可插拔不是口號(hào)舶赔,而是現(xiàn)實(shí)。

image

同樣的谦秧,小作坊受生產(chǎn)流程所限竟纳,產(chǎn)出上限固定,無(wú)法應(yīng)對(duì)銷售旺季交易量保障的情況疚鲤;而cita工廠由于建立了一套標(biāo)準(zhǔn)的協(xié)作體系锥累,只需要增加更多的流水線和工人就能夠從容應(yīng)對(duì)這些情況!

Scalability

cita的這個(gè)特點(diǎn)就是傳說(shuō)中的scalability集歇。

“等等桶略,scalability不是區(qū)塊鏈的一個(gè)尚未解決的問(wèn)題嗎?你們不是吹牛吧?”

目前區(qū)塊鏈網(wǎng)絡(luò)的scale問(wèn)題源自其多復(fù)本的設(shè)計(jì)思路删性,由于每一個(gè)交易都會(huì)被復(fù)制到所有節(jié)點(diǎn)上處理和驗(yàn)證亏娜,節(jié)點(diǎn)在驗(yàn)證交易的同時(shí)也是在進(jìn)行重復(fù)計(jì)算,造成了整個(gè)網(wǎng)絡(luò)的交易處理能力約等于網(wǎng)絡(luò)中單個(gè)節(jié)點(diǎn)的處理能力蹬挺,無(wú)論怎么增加節(jié)點(diǎn)都沒(méi)有用维贺。我們常常討論的,就是如何能做出一個(gè)方案巴帮,在保證安全的前提下能夠通過(guò)增加節(jié)點(diǎn)來(lái)提高區(qū)塊鏈的處理能力溯泣,行話又稱為水平擴(kuò)展(scale out)

我們知道榕茧,scalability可以分為兩種垃沦,除了上述水平擴(kuò)展外,還有垂直擴(kuò)展(scale up):如果增加節(jié)點(diǎn)沒(méi)用用押,能不能想辦法提高單個(gè)節(jié)點(diǎn)的能力呢肢簿?既然整個(gè)網(wǎng)絡(luò)的處理能力約等于網(wǎng)絡(luò)中的單個(gè)節(jié)點(diǎn),如果單個(gè)節(jié)點(diǎn)的能力很強(qiáng)蜻拨,那么整個(gè)網(wǎng)絡(luò)的處理能力不是就提高了嗎池充?

image

這就是cita具有scalability的原因。通過(guò)節(jié)點(diǎn)的微服務(wù)架構(gòu)缎讼,cita可以做到節(jié)點(diǎn)內(nèi)的水平擴(kuò)展收夸,從區(qū)塊鏈這個(gè)層面看,便是節(jié)點(diǎn)在垂直擴(kuò)展了血崭。相較于國(guó)際大公司通過(guò)專有硬件來(lái)提升單節(jié)點(diǎn)處理能力的方案卧惜,cita只需要運(yùn)行在普通PC服務(wù)器上,不僅能夠?yàn)橛脩艄?jié)約成本夹纫,水平擴(kuò)展能力也比單機(jī)架構(gòu)更強(qiáng)咽瓷。

這么好的思路,為什么公有鏈不用呢捷凄?

敏銳的讀者可能已經(jīng)發(fā)現(xiàn)了問(wèn)題所在:中心化忱详。

對(duì)于公有鏈的設(shè)計(jì)者來(lái)說(shuō)围来,節(jié)點(diǎn)應(yīng)該被盡可能多的用戶運(yùn)行在盡可能多的計(jì)算機(jī)上跺涤。運(yùn)行一個(gè)計(jì)算機(jī)集群雖然能提升節(jié)點(diǎn)能力,但是維護(hù)集群所需要的專業(yè)知識(shí)以及資源投入监透,卻是普通用戶不具備的桶错。如果在公有鏈中使用這樣的設(shè)計(jì),必然出現(xiàn)的情況是只有少數(shù)具有專業(yè)知識(shí)胀蛮、能夠投入一定資源的人才有能力運(yùn)行全節(jié)點(diǎn)院刁,這與公有鏈的節(jié)點(diǎn)對(duì)等無(wú)中心的目標(biāo)是相悖的。

cita則是針對(duì)企業(yè)級(jí)用戶設(shè)計(jì)的區(qū)塊鏈粪狼。作為cita的目標(biāo)用戶退腥,企業(yè)天生就具有運(yùn)行一個(gè)集群的資源和能力任岸。在云計(jì)算以及容器化技術(shù)已經(jīng)非常成熟的今天,企業(yè)級(jí)用戶可以輕松的將cita服務(wù)部署到多臺(tái)服務(wù)器上狡刘,并對(duì)這些服務(wù)進(jìn)行管理享潜。相較于其他區(qū)塊鏈技術(shù),cita微服務(wù)架構(gòu)能夠真正發(fā)揮云服務(wù)的潛力嗅蔬,可以說(shuō)剑按,cita不僅僅是針對(duì)企業(yè)級(jí)用戶設(shè)計(jì),也是針對(duì)云服務(wù)設(shè)計(jì)的區(qū)塊鏈澜术。秘猿技術(shù)團(tuán)隊(duì)正在開(kāi)發(fā)cita部署工具與組件艺蝴,如果您有興趣成為我們的合作伙伴或者用戶,歡迎與我們聯(lián)系鸟废,共同推動(dòng)BaaS(Blockchain as a Service)的發(fā)展猜敢。

下回分解

不同的設(shè)計(jì)目標(biāo),需要不同的設(shè)計(jì)思路盒延。作為秘猿科技完全自主研發(fā)的區(qū)塊鏈框架锣枝,cita凝結(jié)了秘猿技術(shù)團(tuán)隊(duì)對(duì)區(qū)塊鏈的認(rèn)識(shí)與理解,對(duì)區(qū)塊鏈設(shè)計(jì)作出了大膽的創(chuàng)新與突破兰英。微服務(wù)架構(gòu)只是cita設(shè)計(jì)的一個(gè)方面撇叁,本文也對(duì)cita微服務(wù)進(jìn)行了簡(jiǎn)化,實(shí)際上在節(jié)點(diǎn)部署中會(huì)涉及更多的微服務(wù)畦贸,例如成員管理等陨闹,微服務(wù)之間的交互流程也會(huì)更復(fù)雜。更多的介紹可以閱讀cita的白皮書(shū)薄坏,或者關(guān)注我們公眾號(hào)閱讀下一篇文章咯~ : >

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末趋厉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子胶坠,更是在濱河造成了極大的恐慌君账,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沈善,死亡現(xiàn)場(chǎng)離奇詭異乡数,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)闻牡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)净赴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人罩润,你說(shuō)我怎么就攤上這事玖翅。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵金度,是天一觀的道長(zhǎng)应媚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)猜极,這世上最難降的妖魔是什么珍特? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮魔吐,結(jié)果婚禮上扎筒,老公的妹妹穿的比我還像新娘。我一直安慰自己酬姆,他們只是感情好嗜桌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著辞色,像睡著了一般骨宠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上相满,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天层亿,我揣著相機(jī)與錄音,去河邊找鬼立美。 笑死匿又,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的建蹄。 我是一名探鬼主播碌更,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼洞慎!你這毒婦竟也來(lái)了痛单?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤劲腿,失蹤者是張志新(化名)和其女友劉穎旭绒,沒(méi)想到半個(gè)月后勋陪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體欲主,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年历造,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垃瞧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔫劣。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坪郭,死狀恐怖个从,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤嗦锐,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布嫌松,位于F島的核電站,受9級(jí)特大地震影響奕污,放射性物質(zhì)發(fā)生泄漏萎羔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一碳默、第九天 我趴在偏房一處隱蔽的房頂上張望贾陷。 院中可真熱鬧,春花似錦嘱根、人聲如沸髓废。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)慌洪。三九已至,卻和暖如春凑保,著一層夾襖步出監(jiān)牢的瞬間冈爹,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工欧引, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留频伤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓芝此,卻偏偏與公主長(zhǎng)得像剂买,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子癌蓖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容