發布時間:2023-10-19作者來源:優智互聯瀏覽:1056
服務網關是什么?
在前面的文章中,我們已經了解了構建微服務的基本springboot,同時也可以使用springboot來構建服務。下一步,我們將基于springboot來談談springcloud。這款springcloud并非一項特殊的技術,它指的是微服務中的生態系統。例如網關、注冊中心、配置中心等。今日我們先來了解一下微服務網關,微服務網關有很多種,這次我們用springcloudgateway來解釋一下。在微服務系統中,每個服務都是一個獨立的模塊,是一個獨立的組件。一個完整的微服務系統由幾個獨立的服務組成,每個服務都可以完成自己的商業模塊功能。例如,用戶服務提供與用戶信息相關的服務和功能,支付模塊提供支付相關的功能。各服務之間通過RESTAPI或RPC(后面說)進行通信,而且一般我們的微服務都要做到無狀態通信。
客戶端需要多次提出要求,要求不同域名對應的服務,增加了通信成本和維護客戶端代碼的復雜性。網關模塊方案
每一項服務都會單獨進行服務驗證,如果每一項服務驗證的邏輯不同,就會導致客戶端反復驗證。
此外,如果每個服務都采用不同的協議,那么對客戶來說就是災難性的。
基于以上,我們需要一個中間層,讓客戶端要求中間層。至于需要請求的服務,我們需要請求中間部分,最后把結果總結回客戶端。這個中間層是網關。
為何使用網關?
使用網關有幾個功能:
統一鑒權
一般來說,我們在網關上評估權利有兩種:1。它是對客戶端身份的認證。2.訪問權限控制是指在確認用戶身份后,判斷是否有訪問某一資源的權限。曾經我們在單個應用中,客戶端要求驗證身份和對資源權限的約束相對簡單,相應的用戶和權限信息可以通過要求的session獲得。但是在微服務架構下,所有的服務都被拆分成單個微服務,集群部署會變得復雜,因為如果我們仍然使用session,我們會要求每個分布式機器都沒有效果。
日志記錄
當客戶端要求進入時,我們需要記錄當前要求的時間依賴于來源、地址、ip等信息,這樣我們就可以在網關層面統一攔截獲取,然后通過ELK組件輸出到日志文件中,記錄內容可以在不分別記錄的情況下,在多維度、多信息統一記錄。
要求分發和過濾
對于網關來說,匹配和分發這個請求是最重要的功能。事實上,我們常見的nginx有一個請求轉發和過濾的功能。對于網關來說,請求可以前后過濾。
請求分發:接受客戶端的請求,將請求與后面的微服務相對應,并請求微服務。因為微服務的粒度比較細,這個網關可以整合各種微服務的功能,最后還給客戶端。
過濾器:網關將攔截所有請求,相當于spring中AOP的一個橫截面,在此截面上進行鑒權、限流、認證等操作。
灰度發布
一般來說,公司的互聯網產品迭代非常快,基本上是小步快跑。基本上每周發布一次版本迭代。在這種情況下,會出現兼容性、功能完整性、bug最終發生事故等風險。一般來說,當我們發布它時,我們會將新功能發布到指定的機器上,并劃分過去的一小部分流量來觀察具體情況。因此,這個功能可以通過網關作為請求的入口來完成。