微服務(wù)架構(gòu)多“微”才合適亥至?

微服務(wù)架構(gòu)多“微”才合適悼沈?

前情提要:互聯(lián)網(wǎng)架構(gòu)為什么要做服務(wù)化贱迟?

一、互聯(lián)網(wǎng)架構(gòu)為什么要進(jìn)行服務(wù)化-總結(jié)

上一篇和大伙交流了一下絮供,隨著數(shù)據(jù)量衣吠、并發(fā)量、業(yè)務(wù)復(fù)雜度的增長壤靶,互聯(lián)網(wǎng)架構(gòu)會(huì)出現(xiàn)以下問題:

(1)代碼到處拷貝

(2)底層復(fù)雜性擴(kuò)散

(3)基礎(chǔ)庫(so/jar/dll)耦合

(4)SQL質(zhì)量得不到保障缚俏,業(yè)務(wù)相互影響

(5)數(shù)據(jù)庫耦合

“服務(wù)化”是一個(gè)很好的解決上述痛點(diǎn)的方案。

不少評(píng)論也提出了不少有建設(shè)性的觀點(diǎn)贮乳,匯總出來分享給大伙:

@田衛(wèi)同學(xué)提到:

服務(wù)化之后忧换,可能會(huì)引發(fā)分布式事務(wù)的問題,“沒人愿意引入分布式事務(wù)向拆,當(dāng)基于業(yè)務(wù)水平拆分的時(shí)候包雀,要業(yè)務(wù)專家介入,合理拆分服務(wù)化亲铡,以后就服務(wù)內(nèi)高內(nèi)聚,事務(wù)可以保證葡兑,對(duì)于夸服務(wù)調(diào)用奖蔓,通過補(bǔ)償?shù)仁侄危灰罱K一致性就行讹堤,畢竟連現(xiàn)在的銀行轉(zhuǎn)賬都不是強(qiáng)一致性吆鹤。”

如@田衛(wèi)所說洲守,分布式事務(wù)是業(yè)界沒有徹底解決的難題疑务,任何架構(gòu)設(shè)計(jì)都是一個(gè)折衷,吞吐量梗醇?時(shí)延知允?一致性?哪個(gè)是主要矛盾叙谨,優(yōu)先解決哪個(gè)問題温鸽。大數(shù)據(jù)、高并發(fā)手负、業(yè)務(wù)復(fù)雜性是主要矛盾的時(shí)候涤垫,或許“最終一致性”是一個(gè)替代“事務(wù)”更好的,或者說業(yè)務(wù)能夠接受的方案竟终。

@侯滇滇同學(xué)提到:

多了一層服務(wù)層蝠猬,架構(gòu)實(shí)際上是更復(fù)雜了,需要引入一系列機(jī)制對(duì)服務(wù)進(jìn)行管理统捶,RPC服務(wù)化中需要注意:

(1)RPC服務(wù)超時(shí)榆芦,服務(wù)調(diào)用者應(yīng)有一些應(yīng)對(duì)策略柄粹,比如重發(fā)

(2)關(guān)鍵服務(wù)例如支付,要注意冪等性歧杏,因?yàn)橹匕l(fā)會(huì)導(dǎo)致重復(fù)操作

(3)多服務(wù)要考慮并發(fā)操作镰惦,相當(dāng)單服務(wù)的鎖機(jī)制比如JAVA中的synchronized

@黃明同學(xué)提到:

服務(wù)化之后,隨著規(guī)模的擴(kuò)大犬绒,一定要考慮“服務(wù)治理”旺入,否則服務(wù)之間的依賴關(guān)系會(huì)亂成麻

二、互聯(lián)網(wǎng)微服務(wù)架構(gòu)多“微”才適合

大家也都認(rèn)可凯力,隨著數(shù)據(jù)量茵瘾、流量、業(yè)務(wù)復(fù)雜度的提升咐鹤,服務(wù)化架構(gòu)是架構(gòu)演進(jìn)中的必由之路拗秘,今天要討論的話題是:微服務(wù)架構(gòu)多“微”才合適?

【粗粒度:一個(gè)服務(wù)層】

最粗獷的玩法祈惶,所有基礎(chǔ)數(shù)據(jù)的訪問雕旨,都通過一個(gè)service訪問,在業(yè)務(wù)不是特別復(fù)雜的時(shí)候還好捧请,一旦業(yè)務(wù)變復(fù)雜了凡涩,這個(gè)service層會(huì)變得非常重,成為耦合點(diǎn)之一疹蛉,以微信場景為例活箕,假設(shè)有一個(gè)通用的服務(wù)層來訪問基礎(chǔ)數(shù)據(jù),這個(gè)服務(wù)層可能是這樣的:

有一個(gè)統(tǒng)一的service層可款,用戶信息育韩,好友信息,群組信息闺鲸,消息信息都通過這個(gè)service層來走筋讨。

細(xì)節(jié):微信單對(duì)單消息是一個(gè)寫多讀少的業(yè)務(wù),故沒有緩存翠拣。

【一個(gè)子業(yè)務(wù)一個(gè)service

如果所有的信息存儲(chǔ)都在一個(gè)service里版仔,那么一個(gè)地方出bug,就將影響整個(gè)業(yè)務(wù)误墓,所以更合理的做法是在服務(wù)層進(jìn)行細(xì)分蛮粮,架構(gòu)如何細(xì)分?垂直拆分是個(gè)好的方案谜慌,將子業(yè)務(wù)一個(gè)個(gè)拆出來然想,那么微信的服務(wù)化架構(gòu)或許會(huì)變成這個(gè)樣子:

(1)用戶相關(guān)的子業(yè)務(wù)有user-service

(2)好友相關(guān)的子業(yè)務(wù)有friend-service

(3)群組相關(guān)的子業(yè)務(wù)有g(shù)roup-service

(4)消息相關(guān)的子業(yè)務(wù)有msg-service

這樣的話,一個(gè)service出問題也不會(huì)影響其他service欣范,同時(shí)數(shù)據(jù)層也按照業(yè)務(wù)垂直拆分開了变泄。

服務(wù)粒度變細(xì)之后令哟,出現(xiàn)一個(gè)新的問題,業(yè)務(wù)與服務(wù)的連接關(guān)系變復(fù)雜了妨蛹,有什么好的優(yōu)化方案么屏富?

常見的,加入一個(gè)高可用服務(wù)分發(fā)層集群蛙卤,并在協(xié)議設(shè)計(jì)時(shí)加入服務(wù)號(hào)狠半,可以減少蜘蛛網(wǎng)狀的依賴關(guān)系:

(1)調(diào)用方依賴分發(fā)層,傳入服務(wù)號(hào)

(2)分發(fā)層依賴服務(wù)層颤难,通過服務(wù)號(hào)參數(shù)分發(fā)

【一個(gè)數(shù)據(jù)庫對(duì)應(yīng)一個(gè)service

數(shù)據(jù)訪問service最初是從DAO/ORM的數(shù)據(jù)訪問需求過來的神年,所以有些公司也有一個(gè)數(shù)據(jù)表一個(gè)service的玩法。

一個(gè)子業(yè)務(wù)對(duì)應(yīng)一個(gè)service的玩法是:

(1)服務(wù)層行嗤,整個(gè)群業(yè)務(wù)是一個(gè)service

(2)存儲(chǔ)層已日,實(shí)際可能對(duì)應(yīng)了群信息、群成員栅屏、群消息等多個(gè)數(shù)據(jù)表

拆分成一個(gè)數(shù)據(jù)表一個(gè)service飘千,則架構(gòu)會(huì)變成這樣:

群信息表,群成員表栈雳,群消息表等各個(gè)數(shù)據(jù)表之間也解耦開了占婉,不會(huì)相互影響了。

【一個(gè)接口對(duì)應(yīng)一個(gè)service

微服務(wù)架構(gòu)中更極端的甫恩,甚至一個(gè)接口對(duì)應(yīng)一個(gè)微服務(wù),這樣的話酌予,架構(gòu)就從:

演化為:

(1)修改群信息服務(wù)

(2)增加群信息服務(wù)

(3)獲取群信息服務(wù)

多個(gè)服務(wù)操縱同一個(gè)數(shù)據(jù)表磺箕,使用同一片緩存,每個(gè)接口出問題抛虫,都不會(huì)影響其他接口松靡。

三、粒度粗細(xì)的優(yōu)劣

上文中談到的服務(wù)化與微服務(wù)建椰,不同粒度的服務(wù)化各有什么優(yōu)劣呢雕欺?

總的來說,細(xì)粒度拆分的優(yōu)點(diǎn)有:

(1)服務(wù)都能夠獨(dú)立部署

(2)擴(kuò)容和縮容方便棉姐,有利于提高資源利用率

(3)拆得越細(xì)屠列,耦合相對(duì)會(huì)減小

(4)拆得越細(xì),容錯(cuò)相對(duì)會(huì)更好伞矩,一個(gè)服務(wù)出問題不影響其他服務(wù)

(5)擴(kuò)展性更好

(6)…

細(xì)粒度拆分的不足也很明顯:

(1)拆得越細(xì)笛洛,系統(tǒng)越復(fù)雜

(2)系統(tǒng)之間的依賴關(guān)系也更復(fù)雜

(3)運(yùn)維復(fù)雜度提升

(4)監(jiān)控更加復(fù)雜

(5)出問題時(shí)定位問題更難

(6)…

關(guān)于微服務(wù)架構(gòu)的“粒度”問題,以及各粒度的優(yōu)劣乃坤,大伙有什么好的看法苛让,歡迎補(bǔ)充沟蔑,建設(shè)性的意見將在后續(xù)文中和大伙share。

四狱杰、結(jié)束的話

聊了許多瘦材,有網(wǎng)友問,筆者對(duì)待服務(wù)化以及微服務(wù)粒度的看法仿畸,個(gè)人覺得食棕,以“子業(yè)務(wù)系統(tǒng)”粒度作為微服務(wù)的單位是比較合適的:

末了,討論完微服務(wù)架構(gòu)的粒度颁湖,后續(xù)文章和大家聊一聊微服務(wù)的最佳實(shí)踐宣蠕,需要什么樣的框架、組件甥捺、技術(shù)能夠?qū)⒎?wù)化在較短的時(shí)間內(nèi)開展起來抢蚀,下周和大伙再聊。

==【完】==

回【無鎖】如何實(shí)現(xiàn)超高并發(fā)的無鎖緩存镰禾?

回【消息】58到家通用實(shí)時(shí)消息平臺(tái)架構(gòu)細(xì)節(jié)

回【機(jī)房】從IDC到云端架構(gòu)遷移之路

回【設(shè)置】線程數(shù)究竟設(shè)多少合理

回【單點(diǎn)】單點(diǎn)系統(tǒng)架構(gòu)的可用性與性能優(yōu)化

回【事務(wù)】多庫多事務(wù)降低數(shù)據(jù)不一致概率

回【服務(wù)】互聯(lián)網(wǎng)架構(gòu)為什么要做服務(wù)化皿曲?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吴侦,隨后出現(xiàn)的幾起案子屋休,更是在濱河造成了極大的恐慌,老刑警劉巖备韧,帶你破解...
    沈念sama閱讀 212,185評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劫樟,死亡現(xiàn)場離奇詭異,居然都是意外死亡织堂,警方通過查閱死者的電腦和手機(jī)叠艳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來易阳,“玉大人附较,你說我怎么就攤上這事×拾常” “怎么了拒课?”我有些...
    開封第一講書人閱讀 157,684評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長事示。 經(jīng)常有香客問我早像,道長,這世上最難降的妖魔是什么肖爵? 我笑而不...
    開封第一講書人閱讀 56,564評(píng)論 1 284
  • 正文 為了忘掉前任扎酷,我火速辦了婚禮,結(jié)果婚禮上遏匆,老公的妹妹穿的比我還像新娘法挨。我一直安慰自己谁榜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,681評(píng)論 6 386
  • 文/花漫 我一把揭開白布凡纳。 她就那樣靜靜地躺著窃植,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荐糜。 梳的紋絲不亂的頭發(fā)上巷怜,一...
    開封第一講書人閱讀 49,874評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音暴氏,去河邊找鬼延塑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛答渔,可吹牛的內(nèi)容都是我干的关带。 我是一名探鬼主播,決...
    沈念sama閱讀 39,025評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼沼撕,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼宋雏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起务豺,我...
    開封第一講書人閱讀 37,761評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤磨总,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后笼沥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚪燕,經(jīng)...
    沈念sama閱讀 44,217評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,545評(píng)論 2 327
  • 正文 我和宋清朗相戀三年奔浅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了邻薯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,694評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乘凸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出累榜,到底是詐尸還是另有隱情营勤,我是刑警寧澤,帶...
    沈念sama閱讀 34,351評(píng)論 4 332
  • 正文 年R本政府宣布壹罚,位于F島的核電站葛作,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏猖凛。R本人自食惡果不足惜赂蠢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,988評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辨泳。 院中可真熱鬧虱岂,春花似錦玖院、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蔑滓,卻和暖如春郊酒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背键袱。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評(píng)論 1 266
  • 我被黑心中介騙來泰國打工燎窘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹄咖。 一個(gè)月前我還...
    沈念sama閱讀 46,427評(píng)論 2 360
  • 正文 我出身青樓褐健,卻偏偏與公主長得像,于是被迫代替她去往敵國和親比藻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铝量,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,580評(píng)論 2 349

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