自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

微服務架構,多“微”才合適?

開發(fā) 架構
“服務化”是一個很好的解決上述痛點的方案。那么問題來了,微服務架構多“微”才合適?行業(yè)內(nèi)有這樣四類常見實踐。

 [[328104]]

隨著數(shù)據(jù)量、并發(fā)量、業(yè)務復雜度的增長,互聯(lián)網(wǎng)架構會出現(xiàn)以下問題:

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

“服務化”是一個很好的解決上述痛點的方案。

那么問題來了,微服務架構多“微”才合適?

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

實踐一:統(tǒng)一服務層

 

「轉」微服務架構,多“微”才合適?

 

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

在業(yè)務不是特別復雜的時候,這不失為一個快速分層的方案,一旦業(yè)務變得復雜,服務層會變得非常重,成為耦合焦點。

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

 

「轉」微服務架構,多“微”才合適?

 

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

實踐二:一個子業(yè)務一個服務

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

服務層架構如何細分?

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

 

「轉」微服務架構,多“微”才合適?

 

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

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

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

 

「轉」微服務架構,多“微”才合適?

 

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

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

實踐三:一個數(shù)據(jù)庫對應一個服務

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

一個子業(yè)務對應一個服務的玩法如下圖:

 

「轉」微服務架構,多“微”才合適?

 

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

拆分成一個數(shù)據(jù)庫一個服務,則架構會變成下面的樣子:

 

「轉」微服務架構,多“微”才合適?

 

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

實踐四,一個接口對應一個服務

微服務架構中,更極端的,甚至一個接口對應一個微服務。

這樣的話,架構就從:

 

「轉」微服務架構,多“微”才合適?

 

進化為:

 

「轉」微服務架構,多“微”才合適?

 

  • 修改群信息服務
  • 增加群信息服務
  • 獲取群信息服務

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

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

總的來說,細粒度拆分的優(yōu)點有:

  • 服務都能夠獨立部署
  • 擴容和縮容方便,有利于提高資源利用率
  • 拆得越細,耦合相對會減小
  • 拆得越細,容錯相對會更好,一個服務出問題不影響其他服務
  • 擴展性更好

細粒度拆分的不足也很明顯:

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

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

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2016-09-22 15:36:15

微服務架構

2019-02-22 09:12:33

微服務架構服務化

2024-07-02 14:23:12

2023-07-28 09:23:24

微服務架構

2024-01-10 14:40:56

顆粒度開發(fā)微服務

2018-12-12 09:59:47

微服務架構分布式系統(tǒng)

2022-10-17 15:21:18

2017-11-08 09:57:00

分布式微服務集群

2023-08-31 17:13:01

架構軟件開發(fā)

2019-10-16 08:41:46

微服務架構Nginx

2023-12-04 07:14:40

通信微服務

2022-09-07 15:41:01

微服務開發(fā)容器

2023-07-27 14:03:51

微服務

2023-11-06 08:26:11

Spring微服務架構

2018-08-01 14:20:11

微服務架構人工智能

2023-05-04 07:27:20

NLP 算法微服務治理

2021-07-07 07:44:20

微服務Nacos緩存

2024-01-19 11:57:42

2017-07-04 14:57:40

微服務paasdocker

2021-07-02 06:54:45

軟件架構模式
點贊
收藏

51CTO技術棧公眾號