golang網關,【Spring Cloud】網關 - Zuul(1.x)

 2023-10-21 阅读 20 评论 0

摘要:1. 背景 通過Spring Cloud 和微服務的學習,我們了解到使用Spring Cloud實現微服務的架構基本成型,大致是這樣的: 我們使用Spring Cloud Netflix中的Eureka實現了 服務注冊中心 以及服務注冊與發現;而服務間通過 Ribbon 或Feign實現服務的消費以及

1. 背景

通過Spring Cloud 和微服務的學習,我們了解到使用Spring Cloud實現微服務的架構基本成型,大致是這樣的:
在這里插入圖片描述
我們使用Spring Cloud Netflix中的Eureka實現了 服務注冊中心 以及服務注冊與發現;而服務間通過 Ribbon 或Feign實現服務的消費以及均衡負載。為了使得服務集群更為健壯,使用 Hystrix 的熔斷機制來避免在微服務架構中個別服務出現異常時引起的故障蔓延。

在該架構中,服務集群包含:內部服務Service A 和 Service B,他們都會注冊與訂閱服務至Eureka Server,而Open Service是一個對外的服務,通過均衡負載公開至服務調用方。我們把焦點聚集在對外服務這塊,直接暴露我們的服務地址,這樣的實現是否合理,或者是否有更好的實現方式呢?

先來說說這樣的架構需要做的一些事兒以及存在的不足:
? 破壞了服務無狀態特點。
為了保證對外服務的安全性,我們需要實現對服務訪問的權限控制,而開放服務的權限控制機制將會貫穿并污染整個開放服務的業務邏輯,這會帶來的最直接問題是,破壞了服務集群中REST API無狀態的特點。
從具體開發和測試的角度來說,在工作中除了要考慮實際的業務邏輯之外,還需要額外考慮對接口訪問的控制處理。
? 無法直接復用既有接口。
當我們需要對一個即有的集群內訪問接口,實現外部服務訪問時,我們不得不通過在原有接口上增加校驗邏輯,或增加一個代理調用來實現權限控制,無法直接復用原有的接口。

面對類似上面的問題,我們要如何解決呢?答案是:服務網關!

golang網關。為了解決上面這些問題,我們需要將權限控制這樣的東西從我們的服務單元中抽離出去,而最適合這些邏輯的地方就是處于對外訪問最前端的地方,我們需要一個更強大一些的均衡負載器的 服務網關。

服務網關是微服務架構中一個不可或缺的部分。通過服務網關統一向外系統提供REST API的過程中,除了具備服務路由、均衡負載功能之外,它還具備了權限控制等功能。Spring Cloud Netflix 中的 Zuul 就擔任了這樣的一個角色,為微服務架構提供了前門保護的作用,同時將權限控制這些較重的非業務邏輯內容遷移到服務路由層面,使得服務集群主體能夠具備更高的可復用性和可測試性。

2. Zuul簡介

Zuul是Netflix開源的微服務網關,它可以和Eureka、Ribbon、Hystrix等組件配合使用。
Zuul 的核心是一系列的過濾器,這些過濾器可以完成以下功能:

  • 身份認證與安全:識別每個自愿的驗證要求,并拒絕那些與要求不符合請求。
  • 審查與監控:在邊緣位置追蹤有意義的數據和統計結果,從而帶來精確的生產視圖。
  • 動態路由:動態地將請求路由到不同的后端集群。
  • 壓力測試:主鍵增加指向集群的流量,以了解性能。
  • 負載分配:為每一種負載類型分配對應容量,并啟用超出限定值的請求。
  • 靜態響應處理:在邊緣位置直接建立部分響應,從而避免其轉發到內部集群。
  • 多區域言行:跨越 AWS Region進行請求路由,旨在實現ELB(Elastic Load Balancing)使用的多樣化,以及讓系統的邊緣更貼近系統的使用者。

微服務架構中,會存在多個服務,每個服務擁有不同的地址,用戶在請求一個業務時,可能會執行多次請求,這時候,就需要我們的網關來進行轉發了。網關是位于請求發起后,訪問服務前的中間層,所有的訪問,都需要先經過網關,比如在用戶訪問api時,請求鏈接為/login,則將其轉發到login服務,請求鏈接為/shop,則將其轉發到shop服務。

zuul網關的作用?zuul 是netflix開源的一個API Gateway 服務器, 本質上是一個web servlet應用,Zuul 的主要功能是路由轉發和過濾器。

Zuul 在云平臺上提供動態路由,監控,彈性,安全等邊緣服務的框架。將整個項目比喻為一個大房子,那么Zuul 相當于是設備和 Netflix 流應用的 Web 網站后端所有請求的門童,由它來引導請求進入他們要求的房間。

3. Zuul加入后的架構

在這里插入圖片描述
從圖中可以看出,不管是來自于客戶端(PC或移動端)的請求,還是服務內部調用。一切對服務的請求都會經過Zuul這個網關,然后再由網關來實現 鑒權、動態路由等等操作。Zuul就是我們服務的統一入口。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/153885.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息