免费黄动漫无码在线观看犹物影视|伊人久久综合一本超碰|国产在线精品一区二区三区不卡|国产女主播久久一区二区免费|

微服務(wù)網(wǎng)關(guān)和服務(wù)注冊(cè)中心

SOA團(tuán)隊(duì) 2020-03-16

對(duì)于傳統(tǒng)的ESB總線我們看到實(shí)際上包括了微服務(wù)架構(gòu)中的微服務(wù)注冊(cè)和發(fā)現(xiàn)中心,微服務(wù)網(wǎng)關(guān)兩個(gè)方面的能力,但為何在微服務(wù)架構(gòu)里面會(huì)將這兩個(gè)點(diǎn)分解為獨(dú)立的兩個(gè)子組件,我們通過(guò)以下分析了解一下。

首先還是要說(shuō)下微服務(wù)網(wǎng)關(guān),微服務(wù)網(wǎng)關(guān)更多是在前后端分離,或者說(shuō)涉及到獨(dú)立的類(lèi)似手機(jī)APP等前端應(yīng)用的時(shí)候使用的最多,即把內(nèi)部各個(gè)微服務(wù)組件模塊的API接口能力統(tǒng)一注冊(cè)和接入到網(wǎng)關(guān),對(duì)于APP也只需要訪問(wèn)網(wǎng)關(guān)暴露的接口即可,同時(shí)通過(guò)網(wǎng)關(guān)還可以進(jìn)一步的實(shí)現(xiàn)安全隔離。也就是說(shuō)在這種場(chǎng)景下,網(wǎng)關(guān)更多的是實(shí)現(xiàn)了接口服務(wù)的代理和路由轉(zhuǎn)發(fā)能力,更多的是向外的一種能力發(fā)布。

我們可以想下在一個(gè)微服務(wù)架構(gòu)里面,分解為了A,B,C,D四個(gè)微服務(wù)組件和模塊,但是這四個(gè)模塊都有各自的前端應(yīng)用展現(xiàn),四個(gè)模塊之間本身也存在相互的接口調(diào)用,但是都在在數(shù)據(jù)中心內(nèi)部調(diào)用。在這種情況下我們是否需要使用微服務(wù)網(wǎng)關(guān)?而實(shí)際上在這種架構(gòu)下,完全可以不使用微服務(wù)網(wǎng)關(guān),只需要使用服務(wù)注冊(cè)和發(fā)現(xiàn)中心即可。

也就是我們常說(shuō)的引入微服務(wù)網(wǎng)關(guān)后,微服務(wù)網(wǎng)關(guān)本身又變成為一個(gè)中心化的節(jié)點(diǎn),雖然你可以對(duì)網(wǎng)關(guān)也進(jìn)行集群部署,但是這種模式不符合我們?nèi)ブ行牡钠谕H绻粋€(gè)業(yè)務(wù)應(yīng)用全部都是在內(nèi)部使用,那么微服務(wù)模塊之間的交互完全可以不接入到微服務(wù)網(wǎng)關(guān)進(jìn)行管理。

但是微服務(wù)模塊間相互調(diào)用的接口地址如何管理,微服務(wù)模塊本身又集群化后如何進(jìn)行負(fù)載均衡,包括微服務(wù)模塊間相互點(diǎn)對(duì)點(diǎn)調(diào)用時(shí)日志如何監(jiān)控和分析,服務(wù)鏈如何監(jiān)控和管理?這些都是在去中心化后要考慮的問(wèn)題,而這個(gè)在當(dāng)下微服務(wù)架構(gòu)下完全是可以解決的。其核心的思路就是將微服務(wù)網(wǎng)關(guān)的部分能力下沉到微服務(wù)模塊中去完成,類(lèi)似在微服務(wù)模塊里面注冊(cè)一個(gè)很小的SDK插件。

也就是我們常說(shuō)的,微服務(wù)模塊間的調(diào)用只需要服務(wù)注冊(cè)和發(fā)現(xiàn)中心,模塊A從服務(wù)注冊(cè)中心獲取到模塊B的接口服務(wù)調(diào)用地址后,直接發(fā)起對(duì)模塊B的接口服務(wù)調(diào)用。注冊(cè)中心本身需要提供服務(wù)目錄庫(kù)和負(fù)載均衡的能力。而對(duì)于微服務(wù)模塊內(nèi)部SDK包僅僅是將本地SDK API調(diào)用轉(zhuǎn)變?yōu)檫h(yuǎn)程的Rest服務(wù)調(diào)用接口。同時(shí)在SDK代理包中可以很方便的實(shí)現(xiàn)日志攔截,安全管理,緩存等能力。在這種架構(gòu)下,即使是服務(wù)注冊(cè)中心宕機(jī)也不會(huì)影響到整個(gè)微服務(wù)架構(gòu)的平穩(wěn)運(yùn)行。從而達(dá)到真正的去中心化的目標(biāo)。

也就是說(shuō)在微服務(wù)架構(gòu)里面,不涉及到對(duì)外發(fā)布統(tǒng)一的服務(wù)接口的時(shí)候,只需要保留服務(wù)注冊(cè)中心這個(gè)組件即可滿(mǎn)足內(nèi)部多個(gè)微服務(wù)模塊的平穩(wěn)運(yùn)行。對(duì)于服務(wù)注冊(cè)中心一般需要提供負(fù)載均衡的能力,比如我們可以在服務(wù)注冊(cè)中心對(duì)提供同樣一個(gè)服務(wù)接口的多個(gè)組件都注冊(cè)進(jìn)來(lái),到時(shí)候通過(guò)服務(wù)注冊(cè)中心進(jìn)行動(dòng)態(tài)的負(fù)載均衡。如果我們是和Docker容器和K8s結(jié)合的化,整個(gè)微服務(wù)組件都是動(dòng)態(tài)部署和托管的,K8s本身就提供了負(fù)載均衡和路由分發(fā)的能力,在這種情況下實(shí)際上只需要對(duì)K8s最終發(fā)布出來(lái)的負(fù)載均衡地址進(jìn)行注冊(cè)即可。

但是這個(gè)外部本身又不絕對(duì),如下圖,當(dāng)一個(gè)大的業(yè)務(wù)系統(tǒng),分成了三組微服務(wù)模塊,同時(shí)分給三個(gè)獨(dú)立開(kāi)發(fā)廠商開(kāi)發(fā)時(shí),那么三個(gè)開(kāi)發(fā)團(tuán)隊(duì)間的接口交互仍然可以理解為外部,這樣往往才能夠確保每個(gè)開(kāi)發(fā)團(tuán)隊(duì)的高度獨(dú)立自治能力。

基于上圖,再總結(jié)下在使用網(wǎng)關(guān)和注冊(cè)中心的時(shí)候一些關(guān)鍵點(diǎn):

1. 一個(gè)獨(dú)立的開(kāi)發(fā)團(tuán)隊(duì),為保證獨(dú)立自治,以及內(nèi)部多個(gè)微服務(wù)模塊間的交互集成,最好啟用獨(dú)立的服務(wù)注冊(cè)中心實(shí)現(xiàn)服務(wù)注冊(cè),發(fā)現(xiàn)能力。即開(kāi)發(fā)團(tuán)隊(duì)內(nèi)部多個(gè)微服務(wù)模塊間的集成,不需要通過(guò)網(wǎng)關(guān),只需要通過(guò)服務(wù)注冊(cè)中心進(jìn)行集成即可。

2. 開(kāi)發(fā)團(tuán)隊(duì)需要暴露能力給外部,包括暴露能力給其它的開(kāi)發(fā)團(tuán)隊(duì),需要考慮將該API接口注冊(cè)到外部的網(wǎng)關(guān)上。在這里建議是拆分兩個(gè)獨(dú)立網(wǎng)關(guān),一個(gè)是內(nèi)部API網(wǎng)關(guān),一個(gè)是放置到DMZ區(qū)面對(duì)公網(wǎng)訪問(wèn)的API網(wǎng)關(guān)。對(duì)于服務(wù)如果同時(shí)涉及到內(nèi)部和外部使用,則兩邊注冊(cè)。建議不要通過(guò)兩次網(wǎng)關(guān)去路由,一個(gè)是影響性能,一個(gè)是不方便后續(xù)問(wèn)題排查。

3. 構(gòu)建在開(kāi)發(fā)團(tuán)隊(duì)之外的API網(wǎng)關(guān)必須具備負(fù)載均衡能力,可以配置多個(gè)IP地址。通過(guò)該API網(wǎng)關(guān)也最好具備和Docker容器擴(kuò)展后的服務(wù)自動(dòng)注冊(cè)和地址加入擴(kuò)展能力。

4. 對(duì)于開(kāi)發(fā)團(tuán)隊(duì)內(nèi)部,如果考慮和Docker容器的進(jìn)一步自動(dòng)化集成,可以考慮在內(nèi)部先啟用微服務(wù)網(wǎng)關(guān),再將微服務(wù)網(wǎng)關(guān)開(kāi)發(fā)的API地址進(jìn)一步注冊(cè)到外部的API網(wǎng)關(guān)上面。

5. 如果內(nèi)部和外部啟用各自獨(dú)立的網(wǎng)關(guān),但是定制化SOA管控治理平臺(tái)的時(shí)候只需要一個(gè),同時(shí)適配兩個(gè)網(wǎng)關(guān),同時(shí)能夠?qū)蓚€(gè)網(wǎng)關(guān)進(jìn)行監(jiān)控和日常管理。

返回上頁(yè)