1.服務(wù)如何定義
對(duì)于單體應(yīng)用來(lái)說(shuō),不同功能模塊之前相互交互時(shí)究孕,通常是以類(lèi)庫(kù)的方式來(lái)提供各個(gè)模塊的功能厨诸。對(duì)于微服務(wù)來(lái)說(shuō),每個(gè)服務(wù)都運(yùn)行在各自的進(jìn)程之中绘趋,應(yīng)該以何種形式向外界傳達(dá)自己的信息呢?答案就是接口陷遮,無(wú)論采用哪種通訊協(xié)議,是HTTP還是RPC帽馋,服務(wù)之間的調(diào)用都通過(guò)接口描述來(lái)約定,約定內(nèi)容包括接口名绽族、接口參數(shù)以及接口返回值。
2.服務(wù)如何注冊(cè)和發(fā)現(xiàn)
單體應(yīng)用由于部署在同一個(gè)WAR包里涛漂,接口之間的調(diào)用屬于進(jìn)程內(nèi)的調(diào)用检诗。而拆分為微服務(wù)獨(dú)立部署后,服務(wù)提供者該如何對(duì)外暴露自己的地址岁诉,服務(wù)調(diào)用者該如何查詢所需要調(diào)用的服務(wù)的地址呢?這個(gè)時(shí)候你就需要一個(gè)類(lèi)似登記處的地方哗蜈,能夠記錄每個(gè)服務(wù)提供者的地址以供服務(wù)調(diào)用者查詢坠韩,在微服務(wù)架構(gòu)里,這個(gè)地方就是注冊(cè)中心只搁。
3.服務(wù)如何監(jiān)控
通常對(duì)于一個(gè)服務(wù),我們最關(guān)心的是QPS(調(diào)用量)氢惋、AvgTime(平均耗時(shí))以及P999(99.9%的請(qǐng)求性能在多少毫秒以內(nèi))這些指標(biāo)。這時(shí)候你就需要一種通用的監(jiān)控方案骚亿,能夠覆蓋業(yè)務(wù)埋點(diǎn)熊赖、數(shù)據(jù)收集、數(shù)據(jù)處理,最后到數(shù)據(jù)展示的全鏈路功能捆姜。
4.服務(wù)如何治理
可以想象迎膜,拆分為微服務(wù)架構(gòu)后,服務(wù)的數(shù)量變多了星虹,依賴關(guān)系也變復(fù)雜了。比如一個(gè)服務(wù)的性能有問(wèn)題時(shí)宽涌,依賴的服務(wù)都勢(shì)必會(huì)受到影響蝶棋。可以設(shè)定一個(gè)調(diào)用性能閾值兼贸,如果一段時(shí)間內(nèi)一直超過(guò)這個(gè)值吃溅,那么依賴服務(wù)的調(diào)用可以直接返回,這就是熔斷决侈,也是服務(wù)治理最常用的手段之一。
5.故障如何定位
在單體應(yīng)用拆分為微服務(wù)之后枉圃,一次用戶調(diào)用可能依賴多個(gè)服務(wù)庐冯,每個(gè)服務(wù)又部署在不同的節(jié)點(diǎn)上孽亲,如果用戶調(diào)用出現(xiàn)問(wèn)題展父,你需要有一種解決方案能夠?qū)⒁淮斡脩粽?qǐng)求進(jìn)行標(biāo)記,并在多個(gè)依賴的服務(wù)系統(tǒng)中繼續(xù)傳遞篮绿,以便串聯(lián)所有路徑衡载,從而進(jìn)行故障定位。