通向微服務(wù)的第一關(guān),這幾點(diǎn)摸透了少踩坑!
隨著業(yè)務(wù)規(guī)模迅速擴(kuò)大,微服務(wù)成為各企業(yè)采用的主要架構(gòu)形式,這給開(kāi)發(fā)團(tuán)隊(duì)帶來(lái)了極大好處:
- 每個(gè)服務(wù)足夠內(nèi)聚,代碼容易理解、開(kāi)發(fā)效率提高;
- 服務(wù)之間可獨(dú)立部署,微服務(wù)架構(gòu)讓持續(xù)部署成為可能;
- 每個(gè)服務(wù)可以各自進(jìn)行負(fù)載均衡擴(kuò)展和數(shù)據(jù)庫(kù)擴(kuò)展,并根據(jù)自己的需要部署到合適的硬件服務(wù)器上;
- 獨(dú)立開(kāi)發(fā)使新技術(shù)應(yīng)用更加靈活。
畫(huà)外音:高內(nèi)聚、低耦合,是技術(shù)團(tuán)隊(duì)努力想要達(dá)成的六字真言。
微服務(wù)想要真正落地有一定的技術(shù)門檻:
- 一是進(jìn)行服務(wù)拆分,邊界在哪兒?怎么取舍?什么樣的粒度才符合“高內(nèi)聚、低耦合”;
- 二是微服務(wù)上了規(guī)模之后如何管理?因?yàn)橹灰狭艘?guī)模,任何小問(wèn)題都可能會(huì)被放大,最后導(dǎo)致雪崩效應(yīng)。
舉個(gè)例子,多個(gè)相同的微服務(wù)可以做負(fù)載均衡,提高性能和可靠性,但微服務(wù)本身是不會(huì)去關(guān)心系統(tǒng)負(fù)載的,什么時(shí)候該啟動(dòng)更多的微服務(wù),多個(gè)微服務(wù)的流量如何調(diào)度和分發(fā),這背后需要有一套復(fù)雜的負(fù)載監(jiān)控和均衡的系統(tǒng)發(fā)揮作用。
對(duì)開(kāi)發(fā)團(tuán)隊(duì)來(lái)說(shuō),如果沒(méi)有搞清楚如何進(jìn)行服務(wù)治理,盲目進(jìn)行架構(gòu)調(diào)整無(wú)異于一場(chǎng)災(zāi)難。畫(huà)外音:服務(wù)治理是通向微服務(wù)架構(gòu)的第一關(guān)。
服務(wù)治理是一個(gè)大話題,包括服務(wù)注冊(cè)發(fā)現(xiàn)、請(qǐng)求鏈路追蹤、服務(wù)熔斷、服務(wù)限流、服務(wù)管控配置、服務(wù)預(yù)警等等。
回歸實(shí)際業(yè)務(wù)場(chǎng)景:
- 故障定位非常困難,出了問(wèn)題,各查各的,非常低效,怎么實(shí)現(xiàn)高效定位;
- 秒殺的時(shí)候,所有的監(jiān)控系統(tǒng)、鏈路跟蹤系統(tǒng)都要是可以降級(jí)的,不能因?yàn)檫@些東西導(dǎo)致整個(gè)系統(tǒng)崩潰;
- 超時(shí)配多少是合適的?100 ms?300 ms?極端情況有些業(yè)務(wù)配到 3 秒的,很多程序員并不清楚超時(shí)設(shè)成多少合適;
- 你無(wú)法無(wú)限制的接受請(qǐng)求,不可能 100 個(gè)并發(fā)就接收 100 個(gè),并發(fā)到底怎么配,怎么限流?
畫(huà)外音:關(guān)于服務(wù)治理,我最重要的經(jīng)驗(yàn)是做好保護(hù)與自我保護(hù)。
對(duì)開(kāi)發(fā)人員來(lái)說(shuō),難點(diǎn)往往在于無(wú)法將積累的知識(shí)串聯(lián)起來(lái),形成系統(tǒng)知識(shí)結(jié)構(gòu),只停留在機(jī)械應(yīng)用層面,無(wú)法根據(jù)業(yè)務(wù)場(chǎng)景與底層邏輯進(jìn)行匹配,最終無(wú)法形成解決問(wèn)題和舉一反三的能力。
思路往往比過(guò)程更重要,掌握了底層邏輯,形成思維模型,工作起來(lái)就會(huì)有豁然開(kāi)朗的感覺(jué)!
【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】
【責(zé)任編輯:趙寧寧 TEL:(010)68476606】