fabric1.4.1新特性 — raft排序服務(wù)

1. RAFT排序服務(wù)介紹

在fabric1.4.1的版本中,提供了基于raft共識(shí)的raft排序服務(wù)伴网。raft的模型可以容忍奔潰逃沿,如果有節(jié)點(diǎn)故障掉線可以正常運(yùn)行。前提是要有大多數(shù)存活济炎,也就是要保證1/2以上的節(jié)點(diǎn)個(gè)數(shù)正常運(yùn)行川抡。raft共識(shí)是“主從模型”,主節(jié)點(diǎn)通過(guò)動(dòng)態(tài)選舉決定须尚,從節(jié)點(diǎn)是主節(jié)點(diǎn)的復(fù)制崖堤。raft排序服務(wù)比kafka排序服務(wù)易于設(shè)置和管理。并且raft的設(shè)計(jì)允許不同的組織貢獻(xiàn)節(jié)點(diǎn)來(lái)共同組成排序服務(wù)耐床。

2. RAFT排序和kafka排序的對(duì)比

從提供服務(wù)的視角來(lái)看密幔,基于raft和kafka的排序服務(wù)是類似的,他們都是基于CFT(crash fault tolerant)模型的排序服務(wù)撩轰,并且都使用了主從節(jié)點(diǎn)的設(shè)置胯甩。如果你是應(yīng)用開發(fā)者或者智能合約開發(fā)者,你不會(huì)注意到他們之間的卻別堪嫂。但是偎箫,有一些主要的區(qū)別值得探討,尤其是你需要管理排序服務(wù)皆串。

  1. kafka和zookeeper的設(shè)計(jì)不適用于大型網(wǎng)絡(luò)淹办。它們的設(shè)計(jì)是CFT模型,但局限于運(yùn)行的比較緊密的主機(jī)上恶复。也就是說(shuō)怜森,需要有一個(gè)組織專門運(yùn)行kafka集群速挑。鑒于此,當(dāng)有多個(gè)組織使用基于kafka排序服務(wù)的時(shí)候塔插,其實(shí)沒(méi)有實(shí)現(xiàn)區(qū)中心化梗摇,因?yàn)樗械墓?jié)點(diǎn)連接的都是由一個(gè)組織單獨(dú)控制的kafka集群。如果使用raft想许,每個(gè)組織可以貢獻(xiàn)排序節(jié)點(diǎn)伶授,共同組成排序服務(wù),可以更好的區(qū)中心化流纹。
  2. raft是原生支持的糜烹,而kafka需要經(jīng)過(guò)復(fù)雜的步驟部署,并且需要單獨(dú)學(xué)習(xí)成本漱凝。而且kafka和zookeeper的支持相關(guān)的issue要通過(guò)apache來(lái)處理疮蹦,而不是hyperledger fabric。raft的實(shí)現(xiàn)是包含在fabric社區(qū)的茸炒,開發(fā)支持更加便利愕乎。
  3. 系統(tǒng)架構(gòu)不同
    3.1 kafka共識(shí)
    在kafka共識(shí)模式中,orderer與orderer之間不會(huì)互相直接建立連接壁公,而是與kafka連接感论。這種共識(shí)模式中,依賴于外部的kafka集群系統(tǒng)和zookeeper集群系統(tǒng)紊册。每個(gè)orderer會(huì)把自己的交易發(fā)送給kafka集群比肄,交易在kafka對(duì)應(yīng)的topic中排序后,kafka把排序后的交易推送給orderer節(jié)點(diǎn)囊陡。Orderer節(jié)點(diǎn)收到交易后對(duì)交易打包芳绩,然后發(fā)給peer。


    kafka.jpg

    3.2 etcdraft共識(shí)

    在etcdraft共識(shí)模式中撞反,orderer與orderer之間直接建立連接妥色,不依賴外部系統(tǒng)。在orderer節(jié)點(diǎn)中痢畜,會(huì)創(chuàng)建raft的協(xié)程來(lái)處理與其他orderer的通信垛膝。
    etcd.jpg

3. RAFT排序服務(wù)的目的

raft排序是fabric實(shí)現(xiàn)拜占庭容錯(cuò)排序服務(wù)的第一步,如我們所見丁稀,開發(fā)raft排序服務(wù)的決定也是基于此的吼拥。

4. 配置RAFT共識(shí)

raft節(jié)點(diǎn)之間通過(guò)使用TLS認(rèn)證身份,如果一個(gè)攻擊者想要偽造raft節(jié)點(diǎn)线衫,就必須要獲得一個(gè)有效的證書和對(duì)應(yīng)的私鑰凿可。所以,沒(méi)有一個(gè)有效的TLS證書,是不可能運(yùn)行raft節(jié)點(diǎn)的枯跑。
要使用raft共識(shí)惨驶,需要修改兩個(gè)地方

  1. 本地配置:用來(lái)控制節(jié)點(diǎn)的特性,例如TLS配置敛助,備份個(gè)數(shù)和文件存儲(chǔ)粗卜。
  2. 通道配置:用來(lái)定義raft集群的成員關(guān)系,以及raft協(xié)議相關(guān)的參數(shù)纳击,例如心跳間隔续扔、leader節(jié)點(diǎn)超時(shí)時(shí)間等。

需要注意的是焕数,每個(gè)channel有屬于它自己的raft集群纱昧。因此,在chennel中要指定raft節(jié)點(diǎn)堡赔,指定的方式是把raft節(jié)點(diǎn)的tls證書配置到channel的配置文件中识脆。在系統(tǒng)通道和應(yīng)用通道中的配置中,每個(gè)排序以consenter的形式列出來(lái)善已。下面是configtx.yaml中關(guān)于raft節(jié)點(diǎn)配置的章節(jié)灼捂。

   Consenters:
        - Host: raft0.example.com
          Port: 7050
          ClientTLSCert: path/to/ClientTLSCert0
          ServerTLSCert: path/to/ServerTLSCert0
        - Host: raft1.example.com
          Port: 7050
          ClientTLSCert: path/to/ClientTLSCert1
          ServerTLSCert: path/to/ServerTLSCert1
        - Host: raft2.example.com
          Port: 7050
          ClientTLSCert: path/to/ClientTLSCert2
          ServerTLSCert: path/to/ServerTLSCert2

本地配置

orderer.yaml配置文件中有兩個(gè)關(guān)于raft排序配置的章節(jié),分別問(wèn)cluster和Consensus

  1. cluster换团,主要用來(lái)決定tls通信配置
  • ClientCertificate, ClientPrivateKey : 客戶端證書和私鑰(general.tls.{privateKey, certificate})纵东。
  • ListenPort:對(duì)外提供服務(wù)的端口 (general.listenPort)。
  • ListenAddress : 本地監(jiān)聽的地址啥寇。
  • ServerCertificate, ServerPrivateKey : 服務(wù)端的證書和私鑰。
  • SendBufferSize : 發(fā)送區(qū)緩存大小洒扎。
    注意:ListenPort, ListenAddress, ServerCertificate, ServerPrivateKey這幾個(gè)配置項(xiàng)辑甜,只能同時(shí)設(shè)置或者同時(shí)不設(shè)置。
  1. cluster
  • WALDir : raft的WAL(Write Ahead Logs)存放位置袍冷,每個(gè)通道需要有以它自己的channel ID為前綴命名的子目錄磷醋。
  • SnapDir : raft的快照存放位置,每個(gè)通道需要有以它自己的channel ID為前綴命名的子目錄胡诗。

通道配置

當(dāng)節(jié)點(diǎn)啟動(dòng)后邓线,如果想要更改配通道置并且使配置生效,只有重啟節(jié)點(diǎn)服務(wù)煌恢。有一個(gè)例外是SnapshotIntervalSize配置項(xiàng)骇陈,它可以在運(yùn)行時(shí)動(dòng)態(tài)調(diào)整。

  • TickInterval : 兩次Node.Tick調(diào)用的時(shí)間間隔瑰抵。
  • ElectionTick : 如果follower在當(dāng)前階段你雌,經(jīng)過(guò)ElectionTick次的時(shí)間后,沒(méi)有從主節(jié)點(diǎn)收到任何消息二汛,follower將會(huì)成為候選節(jié)點(diǎn)并發(fā)起選舉婿崭。
  • HeartbeatTick : 主節(jié)點(diǎn)在HeartbeatTick間隔內(nèi)回發(fā)送心跳信息給從節(jié)點(diǎn)拨拓,來(lái)保持它主節(jié)點(diǎn)的身份。
  • ElectionTick必須大于HeartbeatTick
  • MaxInflightBlocks : 在樂(lè)觀復(fù)制階段限制正在進(jìn)行的附加塊的最大數(shù)量氓栈。
  • SnapshotIntervalSize:每個(gè)快照的大小渣磷。

(后續(xù)實(shí)踐后,見更新具體使用步驟授瘦,敬請(qǐng)關(guān)注)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末醋界,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奥务,更是在濱河造成了極大的恐慌物独,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氯葬,死亡現(xiàn)場(chǎng)離奇詭異挡篓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)帚称,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門官研,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人闯睹,你說(shuō)我怎么就攤上這事戏羽。” “怎么了楼吃?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵始花,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我孩锡,道長(zhǎng)酷宵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任躬窜,我火速辦了婚禮浇垦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荣挨。我一直安慰自己男韧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布默垄。 她就那樣靜靜地躺著此虑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪口锭。 梳的紋絲不亂的頭發(fā)上寡壮,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼况既。 笑死这溅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棒仍。 我是一名探鬼主播悲靴,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼莫其!你這毒婦竟也來(lái)了癞尚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤乱陡,失蹤者是張志新(化名)和其女友劉穎浇揩,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體憨颠,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胳徽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爽彤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片养盗。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖适篙,靈堂內(nèi)的尸體忽然破棺而出往核,到底是詐尸還是另有隱情,我是刑警寧澤嚷节,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布聂儒,位于F島的核電站,受9級(jí)特大地震影響硫痰,放射性物質(zhì)發(fā)生泄漏薄货。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一碍论、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柄慰,春花似錦鳍悠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至概行,卻和暖如春蠢挡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工业踏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留禽炬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓勤家,卻偏偏與公主長(zhǎng)得像腹尖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子伐脖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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