單點是系統高可用的大敵,單點往往是系統高可用最大的風險和敵人,應該盡量在系統設計的過程中避免單點。方法論上,高可用保證的原則是“叢集化”,或者 叫“備援”:隻有一個單點,挂了服務會受影響;如果有備援備份,挂了還有其他backup能夠頂上。

(1) 準備多個GateWay工程
server:
port: 8080 #服務端口
-------------------------------------------
server:
port: 8081 #服務端口
-------------------------------------------
spring:
application:
name: api-gateway #指定服務名
cloud:
gateway:
routes:
- id: product-service
uri: lb://service-product #根據微服務名從注冊中心拉取微服務請求路徑
predicates:
- Path=/product-service/** #/product-service/product/1 重寫為 /product/1 ---> 192.168.1.1:9001/product/1
filters: #配置路由過濾器
- RewritePath=/product-service/(?<segment>.*), /$\{segment} #路徑重寫的過濾器,yml中$ --> $\
discovery:
locator:
enabled: true #開啟根據微服務名自動轉發
lower-case-service-id: true #微服務名稱小寫形式呈現
#配置Eureka
eureka:
client:
register-with-eureka: false #是否将自己注冊到注冊中心
service-url:
defaultZone: http://localhost:9000/eureka/
registry-fetch-interval-seconds: 10 # 從Eureka拉取伺服器配置資訊的周期,設定為 10s
instance:
prefer-ip-address: true #使用ip位址注冊
(2) 配置ngnix
#配置多台伺服器(這裡隻在一台伺服器上的不同端口)
upstream gateway {
server 127.0.0.1:8081;
server 127.0.0.1:8080;
}
#請求轉向mysvr 定義的伺服器清單
location / {
proxy_pass http://gateway;
}
上一頁 下一頁