微服务网关的好处
微服務(wù)網(wǎng)關(guān)的概述
不同的微服務(wù)一般會有不同的網(wǎng)絡(luò)地址,而外部客戶端可能需要調(diào)用多個服務(wù)的接口才能完成一個業(yè)務(wù)需求,如果讓客戶端直接與各個微服務(wù)通信,會有以下的問題:
-
客戶端會多次請求不同的微服務(wù),增加了客戶端的復(fù)雜性
-
存在跨域請求,在一定場景下處理相對復(fù)雜
-
認證復(fù)雜,每個服務(wù)都需要獨立認證
-
難以重構(gòu),隨著項目的迭代,可能需要重新劃分微服務(wù)。例如,可能將多個服務(wù)合并成一個或者將一個服務(wù)拆分成多個。如果客戶端直接與微服務(wù)通信,那么重構(gòu)將會很難實施
-
某些微服務(wù)可能使用了防火墻 / 瀏覽器不友好的協(xié)議,直接訪問會有一定的困難
以上這些問題可以借助網(wǎng)關(guān)解決。
網(wǎng)關(guān)是介于客戶端和服務(wù)器端之間的中間層,所有的外部請求都會先經(jīng)過 網(wǎng)關(guān)這一層。也就是說,API 的實現(xiàn)方面更多的考慮業(yè)務(wù)邏輯,而安全、性能、監(jiān)控可以交由 網(wǎng)關(guān)來做,這樣既提高業(yè)務(wù)靈活性又不缺安全性,典型的架構(gòu)圖如圖所示:
優(yōu)點如下:
-
安全 ,只有網(wǎng)關(guān)系統(tǒng)對外進行暴露,微服務(wù)可以隱藏在內(nèi)網(wǎng),通過防火墻保護。
-
易于監(jiān)控。可以在網(wǎng)關(guān)收集監(jiān)控數(shù)據(jù)并將其推送到外部系統(tǒng)進行分析。
-
易于認證。可以在網(wǎng)關(guān)上進行認證,然后再將請求轉(zhuǎn)發(fā)到后端的微服務(wù),而無須在每個微服務(wù)中進行認證。
-
減少了客戶端與各個微服務(wù)之間的交互次數(shù)
-
易于統(tǒng)一授權(quán)。
總結(jié):微服務(wù)網(wǎng)關(guān)就是一個系統(tǒng),通過暴露該微服務(wù)網(wǎng)關(guān)系統(tǒng),方便我們進行相關(guān)的鑒權(quán),安全控制,日志統(tǒng)一處理,易于監(jiān)控的相關(guān)功能。
總結(jié)