2022-11-02
動態(tài)轉(zhuǎn)發(fā)
上面的例子中我們的目的地址是直接寫死的一個服務(wù)器,實際開發(fā)中肯定是動態(tài)從注冊中心中獲取
此處以Eureka為例子,其他的注冊中心只需要替換對應(yīng)的 注冊中心配置即可
3.1 整合注冊中心
3.1.1 添加eureka依賴
org.springframework.cloudspring-cloud-starter-netflix-eureka-client
3.1.2 配置
我們需要給網(wǎng)關(guān)配置注冊中心的位置,并且告訴gateway從注冊中心中獲取服務(wù),需要將url變成lb開頭的協(xié)議
spring:
application:
name: gateway
cloud:
inetutils:
ignored-interfaces: [ 'VMware.*' ] #經(jīng)過測試,我們發(fā)現(xiàn)我們的電腦上存在多個網(wǎng)卡的時候, 程序注冊到注冊中心的時候可能會帶錯ip過去,比如把虛擬機的網(wǎng)卡ip帶過去了,如果是本機內(nèi)部使用沒問題,但是闊機器就不行了# 忽略掉我們不想要的網(wǎng)卡
gateway:
routes:
- id: 08consumer-eureka-feign # 當前路由策略的唯一ID,可以隨便寫
uri: lb://08CONSUMER-EUREKA-FEIGN #lb開頭代表是負載均衡,意味著需要從注冊中心獲取數(shù)據(jù),獲取的是當前名字的服務(wù)地址
predicates: #配置斷言, 符合下面斷言的請求會轉(zhuǎn)發(fā)到上面的url,斷言很多種條件
- Path=/order/** #斷言的條件是請求的地址符合這個表達式,注意格式為Path=/order/**
loadbalancer: #設(shè)置負載均衡
ribbon:
enabled: false #設(shè)置不用ribbon的負載均衡方式,因為它是阻塞的,設(shè)置為false后會自動變?yōu)榉亲枞?br />#配置注冊中心
eureka:
client:
service-url:
defaultZone: http://localhost:10000/eureka/
instance:
prefer-ip-address: true #在注冊中心顯示的是ip,而不是機器名
上面的方式是因為gateway中有默認的一個 The LoadBalancerClient Filter,他的主要作用是用于進行負載均衡,當我們的uri是lb://開頭的地址的時候會觸發(fā)負載均衡的規(guī)則,不過LoadBalancerClientFilter 默認是阻塞操作,建議使用 ReactiveLoadBalancerClientFilter 非阻塞操作,使用方式很簡單,只需要設(shè)置spring.cloud.loadbalancer.ribbon.enabled屬性為false即可,別的不需要動
注意如果網(wǎng)關(guān)找不到對應(yīng)的服務(wù)會提示503
負載均衡介紹
3.2 服務(wù)名稱轉(zhuǎn)發(fā)
上面的例子中,我們將/order/**映射到了08CONSUMER-EUREKA-FEIGN服務(wù)中,并且從注冊中心中獲取到了地址,
但是實際開發(fā)中我們的網(wǎng)關(guān)能處理的地址可能非常多,那就需要設(shè)置非常多的配置,這樣比較麻煩,因此我們可以通過服務(wù)名稱轉(zhuǎn)發(fā),我們只需要通過 http://網(wǎng)關(guān)/服務(wù)名/地址的方式訪問
spring:
application:
name: gateway
cloud:
inetutils:
ignored-interfaces: [ 'VMware.*' ] #經(jīng)過測試,我們發(fā)現(xiàn)我們的電腦上存在多個網(wǎng)卡的時候, 程序注冊到注冊中心的時候可能會帶錯ip過去,比如把虛擬機的網(wǎng)卡ip帶過去了,如果是本機內(nèi)部使用沒問題,但是闊機器就不行了# 忽略掉我們不想要的網(wǎng)卡
gateway:
discovery:
locator:
enabled: true #開啟基于服務(wù)名字的發(fā)現(xiàn),需要在訪問地址前先添加服務(wù)的名字
lower-case-service-id: true #將服務(wù)名字小寫
loadbalancer:
ribbon:
enabled: false #設(shè)置不用ribbon的負載均衡方式,因為它是阻塞的,設(shè)置為false后會自動變?yōu)榉亲枞?br />#配置注冊中心
eureka:
client:
service-url:
defaultZone: http://localhost:10000/eureka/
instance:
prefer-ip-address: true #在注冊中心顯示的是ip,而不是機器名
開班時間:2021-04-12(深圳)
開班盛況開班時間:2021-05-17(北京)
開班盛況開班時間:2021-03-22(杭州)
開班盛況開班時間:2021-04-26(北京)
開班盛況開班時間:2021-05-10(北京)
開班盛況開班時間:2021-02-22(北京)
開班盛況開班時間:2021-07-12(北京)
預(yù)約報名開班時間:2020-09-21(上海)
開班盛況開班時間:2021-07-12(北京)
預(yù)約報名開班時間:2019-07-22(北京)
開班盛況
Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right
京ICP備12003911號-5
京公網(wǎng)安備 11010802035720號