微服務(wù)是什么
拋去教條性質(zhì)的解釋?zhuān)瑥木奘瘧?yīng)用到微服務(wù)應(yīng)用,耦合度是其中最大的變化?;蚴菍⒍鄠€(gè)模塊中重復(fù)的部分進(jìn)行拆分,或是純粹為了拆分膨脹的單體應(yīng)用,這些拆分出來(lái)的部分獨(dú)立成一個(gè)服務(wù)單獨(dú)部署與維護(hù),便是微服務(wù)了。
拆分后自然而然會(huì)催生出一些必要的需求:
- 從本地方法調(diào)用的關(guān)系衍變成遠(yuǎn)程過(guò)程調(diào)用的關(guān)系,那么可靠的通信功能是首要的。
- 隨著拆分工作的推進(jìn),資源調(diào)度關(guān)系會(huì)變得錯(cuò)綜復(fù)雜,這時(shí)候需要完善的服務(wù)治理。
- 調(diào)用關(guān)系網(wǎng)的整體復(fù)雜化還會(huì)給我們帶來(lái)更大的風(fēng)險(xiǎn),即鏈?zhǔn)椒磻?yīng)導(dǎo)致服務(wù)雪崩的可能性,所以如何保障服務(wù)穩(wěn)定性也是微服務(wù)架構(gòu)中需要考慮的。
- 這點(diǎn)就不是內(nèi)需而算是自我演進(jìn)了,服務(wù)化后,如果能結(jié)合容器化、Devops技術(shù)實(shí)現(xiàn)服務(wù)運(yùn)維一體化,將大大降低微服務(wù)維護(hù)的成本,不管是現(xiàn)在還是將來(lái)。
微服務(wù)是什么樣的
從目前常見(jiàn)網(wǎng)站架構(gòu)的宏觀角度看,微服務(wù)處在中間的層次。紅框圈出的部分都屬于微服務(wù)的范疇。包括最基礎(chǔ)的rpc框架、注冊(cè)中心、配置中心,以及更廣義角度的監(jiān)控追蹤、治理中心、調(diào)度中心等。

從微服務(wù)自身角度來(lái)看,則大致會(huì)包含以下這些模塊:
- 服務(wù)注冊(cè)與發(fā)現(xiàn)
- rpc遠(yuǎn)程調(diào)用
- 路由與負(fù)載均衡
- 服務(wù)監(jiān)控
- 服務(wù)治理

服務(wù)化的前提
是不是只要套上微服務(wù)框架就算是一個(gè)微服務(wù)了呢?雖然這樣有了微服務(wù)的表,但卻沒(méi)有微服務(wù)的實(shí)質(zhì),即”微“。微服務(wù)化的前提是服務(wù)拆分到足夠”微“,足夠單一職責(zé),當(dāng)然拆分程度與服務(wù)邊界都需要結(jié)合業(yè)務(wù)自行把握。
廣義的服務(wù)拆分即包含了應(yīng)用拆分,也包含了數(shù)據(jù)拆分。
應(yīng)用拆分后需要引入微服務(wù)框架來(lái)進(jìn)行服務(wù)通信與服務(wù)治理,這也就是傳統(tǒng)定義上的微服務(wù)。
數(shù)據(jù)拆分后同樣需要引入一系列手段來(lái)進(jìn)行保障,由于不是與微服務(wù)強(qiáng)相關(guān)的話題,在此只做簡(jiǎn)單闡述:
- 分布式id
- 新表優(yōu)化
- 數(shù)據(jù)遷移與數(shù)據(jù)同步
- sql調(diào)用方案改造
- 切庫(kù)方案
- 數(shù)據(jù)一致性