一個(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ù)表之間也解耦開(kāi)了,不會(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è)接口出問(wèn)題,都不會(huì)影響其他接口。
三、粒度粗細(xì)的優(yōu)劣
上文中談到的服務(wù)化與微服務(wù),不同粒度的服務(wù)化各有什么優(yōu)劣呢?
總的來(lái)說(shuō),細(xì)粒度拆分的優(yōu)點(diǎn)有:
(1)服務(wù)都能夠獨(dú)立部署
(2)擴(kuò)容和縮容方便,有利于提高資源利用率
(3)拆得越細(xì),耦合相對(duì)會(huì)減小
(4)拆得越細(xì),容錯(cuò)相對(duì)會(huì)更好,一個(gè)服務(wù)出問(wèn)題不影響其他服務(wù)
(5)擴(kuò)展性更好
(6)…
細(xì)粒度拆分的不足也很明顯:
(1)拆得越細(xì),系統(tǒng)越復(fù)雜
(2)系統(tǒng)之間的依賴(lài)關(guān)系也更復(fù)雜
(3)運(yùn)維復(fù)雜度提升
(4)監(jiān)控更加復(fù)雜
(5)出問(wèn)題時(shí)定位問(wèn)題更難
(6)…
關(guān)于微服務(wù)架構(gòu)的“粒度”問(wèn)題,以及各粒度的優(yōu)劣,大伙有什么好的看法,歡迎補(bǔ)充,建設(shè)性的意見(jiàn)將在后續(xù)文中和大伙share。
四、結(jié)束的話
聊了許多,有網(wǎng)友問(wèn),筆者對(duì)待服務(wù)化以及微服務(wù)粒度的看法,個(gè)人覺(jué)得,以“子業(yè)務(wù)系統(tǒng)”粒度作為微服務(wù)的單位是比較合適的:

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