構(gòu)建可擴展的有狀態(tài)服務(wù)

原文鏈接:http://highscalability.com/blog/2015/10/12/making-the-case-for-building-scalable-stateful-services-in-t.html

在很長一段時間內(nèi),分布式系統(tǒng)都采用無狀態(tài)服務(wù)作為分布式系統(tǒng)擴展的最佳實踐。它可以通過簡單的循環(huán)負(fù)載均衡來提供擴展能力徘键。它的缺點則在于數(shù)據(jù)中心之間復(fù)雜的一致性問題懈万。
這里有一篇關(guān)于有狀態(tài)服務(wù)PPT)的分享恳不。這篇分享介紹了基于Azure的Orleans開發(fā)Halo4的經(jīng)驗桃焕。Orleans基于有狀態(tài)分布式的Actor模型,節(jié)點之間實現(xiàn)了高可用的Gossip協(xié)議,一個兩層的一致性哈希加上分布式哈希表÷χ埽基于這些方案提供節(jié)點動態(tài)負(fù)載均衡筐付,動態(tài)擴縮容,熱點平衡轉(zhuǎn)移等等。
下面簡單說一下如何使用有狀態(tài)服務(wù):

無狀態(tài)服務(wù)帶來額外開銷

無狀態(tài)服務(wù)可以通過添加節(jié)點來實現(xiàn)線性可擴展能力的提升说庭。問題在于,我們開發(fā)的應(yīng)用場景是有狀態(tài)的郑趁,這意味著我們需要通過sharding或者NoSQL來實現(xiàn)擴容口渔。這又喪失了關(guān)系型數(shù)據(jù)庫關(guān)于強一致性的保證。
對于單個用戶穿撮,經(jīng)常需要把這個用戶的所有請求路由到同一臺服務(wù)器上缺脉,這樣可以通過本地數(shù)據(jù)緩存的措施來減少IO開銷。

集群信息:

  1. 靜態(tài)配置 配置一份包含所有集群信息的靜態(tài)文件分發(fā)到所有機器上悦穿,缺點在于不夠靈活攻礼,線上發(fā)生故障需要手動調(diào)整配置,不支持動態(tài)擴容縮容栗柒。
  2. Gossip協(xié)議 穩(wěn)定狀態(tài)下礁扮,系統(tǒng)中所有節(jié)點對于節(jié)點的健康狀態(tài)能夠達(dá)成共識,在發(fā)生網(wǎng)絡(luò)分區(qū)或者節(jié)點加入/離開時瞬沦,可能會出現(xiàn)短暫的不一致情況太伊。
  3. 共識算法 保證所有節(jié)點的一致性,缺點在于可能會是整個系統(tǒng)速度的瓶頸逛钻。

路由策略:

  1. 隨機路由 一般是根據(jù)機器的處理能力進(jìn)行按處理能力的路由僚焦。
  2. 一致性哈希 問題在于可能會出現(xiàn)熱點問題,需要精心選擇哈希鍵曙痘。
    3.分布式哈希表(DHT) 動態(tài)哈希表保存服務(wù)狀態(tài)芳悲。

三個例子:
Facebook的Scuba
一個高速的基于內(nèi)存的分布式數(shù)據(jù)庫,使用了靜態(tài)成員信息配置边坤,寫時采用隨機分發(fā)策略名扛,讀取操作有中間件進(jìn)行聚合返回,不保證可用茧痒。

Uber的Ringpop
Ringpop是一個實現(xiàn)了程序?qū)蛹壏制膎ode.js庫肮韧,采用了Swim Gossip協(xié)議維護集群信息,這個協(xié)議基于AP所以不保證強一致性旺订,一致性哈希負(fù)責(zé)處理請求路由弄企,所以有可能出現(xiàn)熱點問題。

微軟的Orleans
Orleans是一個基于分布式系統(tǒng)的Actor模型耸峭,Actor是計算的核心單元桩蓉,彼此之間使用異步消息通信,它持有一系列狀態(tài)機所以本身是有狀態(tài)的劳闹,Gossip協(xié)議負(fù)責(zé)集群信息院究,路由策略是一致性哈希與分布式哈希表的結(jié)合:當(dāng)向集群發(fā)送對Actor的請求時洽瞬,Orleans運行時將計算對Actor ID的一致哈希。哈希映射到具有該ID的分布式哈希表的計算機业汰;Actor的分布式哈希表知道哪個機器包含指定ID的Actor伙窃。

有狀態(tài)模型帶來的挑戰(zhàn):
需要關(guān)注服務(wù)器內(nèi)存狀況,緩存建設(shè)問題样漆,第一次鏈接問題等等为障。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市放祟,隨后出現(xiàn)的幾起案子鳍怨,更是在濱河造成了極大的恐慌,老刑警劉巖跪妥,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鞋喇,死亡現(xiàn)場離奇詭異,居然都是意外死亡眉撵,警方通過查閱死者的電腦和手機侦香,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纽疟,“玉大人罐韩,你說我怎么就攤上這事∥坌啵” “怎么了散吵?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長膘壶。 經(jīng)常有香客問我错蝴,道長,這世上最難降的妖魔是什么颓芭? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮柬赐,結(jié)果婚禮上亡问,老公的妹妹穿的比我還像新娘。我一直安慰自己肛宋,他們只是感情好州藕,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酝陈,像睡著了一般床玻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沉帮,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天锈死,我揣著相機與錄音贫堰,去河邊找鬼。 笑死待牵,一個胖子當(dāng)著我的面吹牛其屏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缨该,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼偎行,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贰拿?” 一聲冷哼從身側(cè)響起蛤袒,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膨更,沒想到半個月后妙真,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡询一,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年隐孽,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片健蕊。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡菱阵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缩功,到底是詐尸還是另有隱情晴及,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布嫡锌,位于F島的核電站虑稼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏势木。R本人自食惡果不足惜蛛倦,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啦桌。 院中可真熱鬧溯壶,春花似錦、人聲如沸甫男。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽板驳。三九已至又跛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間若治,已是汗流浹背慨蓝。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工感混, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人菌仁。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓浩习,卻偏偏與公主長得像,于是被迫代替她去往敵國和親济丘。 傳聞我的和親對象是個殘疾皇子谱秽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

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

  • 分布式系統(tǒng)面臨的第一個問題就是數(shù)據(jù)分布,即將數(shù)據(jù)均勻地分布到多個存儲節(jié)點摹迷。另外疟赊,為了保證可靠性和可用性,需要將數(shù)據(jù)...
    olostin閱讀 4,578評論 2 26
  • Redis Cluster Specification 1 設(shè)計目標(biāo)和理由 1.1 Redis Cluster g...
    近路閱讀 4,250評論 0 12
  • 分布式鍵值模型可以看成是分布式表格模型的一種特例峡碉。然而近哟,由于它只支持針對單個key-value的增、刪鲫寄、查吉执、改操作...
    olostin閱讀 2,507評論 0 6
  • 今晚一個人在學(xué)校操場上遛彎兒吃東西~ 身后一堆晚上跑步減肥或健身的孩子←_← 突然覺得身后的孩子們像一群來襲的喪尸...
    海星快長翅膀閱讀 246評論 0 0
  • 20年來戳玫,汪正的名字每天都會在流依的腦海里出現(xiàn),但流依卻從來沒有想過未斑,這輩子還會和汪正聯(lián)系上咕宿。 第一次見過汪正,還...
    兔加加閱讀 320評論 4 4