微服務架構學習 之 微服務閘道器
為什麼要使用微服務閘道器?
不同的微服務可能會採用不同的網路地址對外發布。而訪問客戶端的某個完整業務流程,有的時候需要呼叫多個微服務接口才能完成。如某個購票系統呼叫微服務結構如下:

如果讓客戶端直接呼叫每一個微服務介面,會存在如下問題:
複雜性高。 客戶端會多次請求不同的微服務,而且存在跨域請求,每個微服務都需要獨立認證。
可擴充套件性差。 不利於程式碼重構和微服務重新劃分,在業務流程調整的情況下,微服務適當地進行拆分或者合併,在直接通訊的情況下,重構工作難度大。
微服務閘道器可以解決以上問題,什麼是微服務閘道器呢?
微服務閘道器在客戶端與伺服器端之間架起了一座橋樑,所有的外部請求都會先經過微服務閘道器過濾,客戶端只用同微服務閘道器互動,而無須直接呼叫特定微服務的介面。基於微服務閘道器的結構圖如下:

微服務閘道器提供身份認證與安全、審查與監控、動態路由、壓力測試、負載分配等功能。具備以下優勢:
集中監控。 在微服務閘道器收集監控資料並將其推送到外部系統進行分析。
統一認證。 在微服務閘道器上進行統一認證,然後再將請求轉發到後端的微服務,而無須在每個微服務中進行認證。
負載均衡。 當請求到達微服務閘道器時,對於負載高的微服務,通過相應的負載均衡演算法和法則,選擇合適的伺服器進行訪問。
Zuul是Netflix開源的微服務閘道器,Spring Cloud對Zuul進行了整合與增強,目前,Zuul是構建微服務閘道器不錯的選擇。