微服務時代之網關及注冊中心高可用架構設計


1. 微服務關系架構圖

簡要說明:

(一)所有應用或者服務要想對外提供服務(包括網關),必須首先到注冊中心進行注冊。

        注冊中心可以說是微服務架構中的”通訊錄“,它記錄了服務和服務地址的映射關系。在分布式架構中,服務會注冊到這里,當服務需要調用其它服務時,就到這里找到服務的地址,進行調用。

       總結:微服務在水平方向上將項目按不同功能划分為不同部分,而服務注冊中心就相當於一個中轉站,服務客戶端(服務消費者以及服務提供者)將提供的服務注冊到注冊中心,當其他客戶端需要該功能時通過注冊中心調用服務

(二)所有訪問通過服務網關進行訪問,然后由服務網關路由到對應服務中心進行交互訪問。

(1)網關層對外部和內部進行了隔離,保障了后台服務的安全性。

(2)對外訪問控制由網絡層面轉換成了運維層面,減少變更的流程和錯誤成本。

(3)減少客戶端與服務的耦合,服務可以獨立運行,並通過網關層來做映射。

(4)通過網關層聚合,減少外部訪問的頻次,提升訪問效率。

(5)節約后端服務開發成本,減少上線風險。

(6)為服務熔斷,灰度發布,線上測試提供簡單方案。

(7)便於進行應用層面的擴展。

2. 網關及注冊中心高可用架構圖

2.1 springcloud eureka高可用方案

由上圖可以看出,注冊中心與路由很容易成為單點故障,軟件老王以前使用springcloud eureka高可用架構方案:

(1)euraka部署成集群模式,相互注冊,通過心跳策略同步注冊信息;

(2)客戶端注冊的時候,可以寫多個注冊中心地址,假如第一個注冊中心出問題,會自動到第二個中心去注冊。

 defaultZone: http://10.192.168.12:8761/eureka/,http://10.192.168.13:8761/eureka/

當時網關沒有做高可用方案。

2.2 網關高可用架構方案

2.2.1 軟件老王采用的技術方案是:采用keepalived+nginx實現網關的高可用,架構圖如下:

簡要說明:

(1)通過nginx來實現gateway集群部署;

(2)通過keepalived虛擬ip,當服務器1宕機后,虛擬ip會自動切換到服務器2上,來保證nginx的高可用。

2.2.2 業務中台實際部署

因服務器資源有限,軟件老王目前有3台服務器資源,分別為:10.192.168.11、10.192.168.12、10.192.168.13

簡要說明:

網關統一使用vip(10.192.168.21)進行訪問,21默認會路由到10.192.168.11服務器上(11出故障的話,會自動謝歡到12服務器上),11上的nginx默認輪詢調用gateway服務(11與12上啟動了6個服務),進而實現高可用。

2.3 注冊中心高可用方案

2.3.1 技術方案

軟件老王經過技術選型后,這次的注冊中心選擇的是阿里巴巴的nacos,nacos官方已經給了高可用部署方案,nacos與cloud的euraka還有一個區別,客戶端不能配置兩個注冊中心,官方給的架構圖是:

2.3.2 軟件老王實際部署的注冊中心(nacos)架構圖

 

 

博客參考於:https://www.cnblogs.com/ruanjianlaowang/p/11542747.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM