亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

以前的文章討論過《互聯(lián)網(wǎng)架構(gòu),究竟為啥要做服務(wù)化?》,隨著數(shù)據(jù)量、并發(fā)量、業(yè)務(wù)復(fù)雜度的增長(zhǎng),互聯(lián)網(wǎng)架構(gòu)會(huì)出現(xiàn)以下問題:

  • 代碼到處拷貝
  • 底層復(fù)雜性擴(kuò)散
  • 基礎(chǔ)庫(so/jar/dll)耦合
  • SQL質(zhì)量得不到保障,業(yè)務(wù)相互影響
  • 數(shù)據(jù)庫耦合

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

 

那么問題來了,微服務(wù)架構(gòu)多“微”才合適?

行業(yè)內(nèi)有這樣四類常見實(shí)踐。

實(shí)踐一:統(tǒng)一服務(wù)層

「轉(zhuǎn)」微服務(wù)架構(gòu),多“微”才合適?

 

 

這是最粗獷的玩法,所有基礎(chǔ)數(shù)據(jù),都通過一個(gè)統(tǒng)一的服務(wù)來進(jìn)行訪問。

在業(yè)務(wù)不是特別復(fù)雜的時(shí)候,這不失為一個(gè)快速分層的方案,一旦業(yè)務(wù)變得復(fù)雜,服務(wù)層會(huì)變得非常重,成為耦合焦點(diǎn)。

以微信場(chǎng)景為例,假設(shè)通過一個(gè)通用的服務(wù)層來訪問基礎(chǔ)數(shù)據(jù)。

「轉(zhuǎn)」微服務(wù)架構(gòu),多“微”才合適?

 

 

則只有一個(gè)統(tǒng)一的服務(wù)層,用戶信息,好友信息,群組信息,消息信息都通過這個(gè)服務(wù)層來訪問。

 

實(shí)踐二:一個(gè)子業(yè)務(wù)一個(gè)服務(wù)

如果所有的數(shù)據(jù)訪問都通過一個(gè)服務(wù)層來訪問,那么一行代碼出故障,就將影響整個(gè)服務(wù),所以更合理的做法是在服務(wù)層進(jìn)行拆分。

服務(wù)層架構(gòu)如何細(xì)分?

垂直拆分是個(gè)好的方案,將子業(yè)務(wù)分拆,那么微信的服務(wù)化架構(gòu)或許會(huì)變成下面的樣子:

「轉(zhuǎn)」微服務(wù)架構(gòu),多“微”才合適?

 

 

  • 用戶相關(guān)的子業(yè)務(wù),訪問user服務(wù)
  • 好友相關(guān)的子業(yè)務(wù),訪問friend服務(wù)
  • 群組相關(guān)的子業(yè)務(wù),訪問group服務(wù)
  • 消息相關(guān)的子業(yè)務(wù),訪問msg服務(wù)

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

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

「轉(zhuǎn)」微服務(wù)架構(gòu),多“微”才合適?

 

 

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

  • 調(diào)用方依賴分發(fā)層,傳入服務(wù)號(hào)
  • 分發(fā)層依賴服務(wù)層,通過服務(wù)號(hào)參數(shù)分發(fā)

 

實(shí)踐三:一個(gè)數(shù)據(jù)庫對(duì)應(yīng)一個(gè)服務(wù)

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

一個(gè)子業(yè)務(wù)對(duì)應(yīng)一個(gè)服務(wù)的玩法如下圖:

「轉(zhuǎn)」微服務(wù)架構(gòu),多“微”才合適?

 

 

  • 服務(wù)層,整個(gè)群業(yè)務(wù)是一個(gè)服務(wù)
  • 存儲(chǔ)層,實(shí)際可能對(duì)應(yīng)了群信息、群成員、群消息等多個(gè)數(shù)據(jù)表

 

拆分成一個(gè)數(shù)據(jù)庫一個(gè)服務(wù),則架構(gòu)會(huì)變成下面的樣子:

「轉(zhuǎn)」微服務(wù)架構(gòu),多“微”才合適?

 

 

群信息庫,群成員庫,群消息庫之間也解耦開,不會(huì)相互影響。

 

實(shí)踐四,一個(gè)接口對(duì)應(yīng)一個(gè)服務(wù)

微服務(wù)架構(gòu)中,更極端的,甚至一個(gè)接口對(duì)應(yīng)一個(gè)微服務(wù)。

這樣的話,架構(gòu)就從:

「轉(zhuǎn)」微服務(wù)架構(gòu),多“微”才合適?

 

 

進(jìn)化為:

「轉(zhuǎn)」微服務(wù)架構(gòu),多“微”才合適?

 

 

  • 修改群信息服務(wù)
  • 增加群信息服務(wù)
  • 獲取群信息服務(wù)

多個(gè)服務(wù)操縱同一個(gè)數(shù)據(jù)庫,任何接口服務(wù)出問題,都不會(huì)影響其他接口服務(wù)。使用這種方案的,一般與開發(fā)語言特性結(jié)合比較緊密,例如golang。

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

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

  • 服務(wù)都能夠獨(dú)立部署
  • 擴(kuò)容和縮容方便,有利于提高資源利用率
  • 拆得越細(xì),耦合相對(duì)會(huì)減小
  • 拆得越細(xì),容錯(cuò)相對(duì)會(huì)更好,一個(gè)服務(wù)出問題不影響其他服務(wù)
  • 擴(kuò)展性更好

 

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

  • 拆得越細(xì),系統(tǒng)越復(fù)雜
  • 系統(tǒng)之間的依賴關(guān)系也更復(fù)雜
  • 運(yùn)維復(fù)雜度提升
  • 監(jiān)控更加復(fù)雜
  • 出問題時(shí)定位問題更難

 

互聯(lián)公司,以“子業(yè)務(wù)”作為微服務(wù)粒度是最常用,訂單服務(wù),用戶服務(wù),支付服務(wù)等等。

-----------------------------------------------------------------------------------

轉(zhuǎn)自微信公眾號(hào) 架構(gòu)師之路

分享到:
標(biāo)簽:微服 架構(gòu)
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定