新建model,叫service-gateway8588,新增依賴
>
>
>
org.springframework.cloudgroupid
>
>
spring-cloud-starter-netflix-eureka-clientartifactid
>
dependency
>
>
>
org.springframework.cloudgroupid
>
>
spring-cloud-starter-gatewayartifactid
>
dependency
>
>
>
org.springframework.bootgroupid
>
>
spring-boot-starter-actuatorartifactid
>
dependency
>
>
>
org.springframework.bootgroupid
>
>
spring-boot-devtoolsartifactid
>
>
runtimescope
>
>
trueoptional
>
dependency
>
>
>
org.projectlombokgroupid
>
>
lombokartifactid
>
dependency
>
>
>
org.springframework.bootgroupid
>
>
spring-boot-starter-testartifactid
>
>
testscope
>
dependency
>
dependencies
>
注意:gateway裡面不能有web的依賴,不然會報錯的
配置檔案
server:
port: 8588
spring:
name: service-gateway8588
cloud:
gateway:
##複數,可以寫多組routes
##複數,可以寫多組predicates
predicates:
- path=/provider
eureka:
client:
register-with-eureka: true
service-url:
defaultzone: http://localhost:8300/eureka/
然後啟動service-eureka001,service-provider(8101),service-gateway8588
首先http://localhost:8101/provider,結果顯示「這裡是provider,port:8101,f3017559-32ec-4aa8-a94f-87fcfa421e2e」
在通過閘道器呼叫一下http://localhost:8588/provider,結果顯示「這裡是provider,port:8101,f3017559-32ec-4aa8-a94f-87fcfa421e2e」。呼叫成功
還可以通過配置類的方式來新增路由,個人感覺比較繁瑣,這裡不做介紹
如果服務提供做成了集群,那麼在路由時通過http://localhost:8101這樣的方式是不能滿足的,那麼我們通過服務名直接去註冊中心獲取ip然後在呼叫,這樣就能形成負載均衡了
修改配置檔案
spring:
name: service-gateway8588
cloud:
gateway:
discovery:
locator:
enabled: true
routes:
# id不可重複
- path=/provider
啟動service-eureka001,service-provider(8101,8102),service-gateway8588
然後呼叫http://localhost:8588/provider,多重新整理幾次,會發現出現的埠號是8101和8102交替出現的,實現了負載均衡
簡單來說,就是乙個請求進來,然後進行規則匹配,最後**到匹配到的對應的路由
# zoneddatetime time=zoneddatetime.now();可以得到下面格式的時間
# 在什麼時間之後
- after=2020-09-15t15:11:53.878+08:00[asia/shanghai]
# 在什麼時間之前
- before=2020-09-15t15:11:53.878+08:00[asia/shanghai]
# 在什麼時間之間
- between=2020-09-15t15:11:53.878+08:00[asia/shanghai]
# 帶cookie的請求,而且名字必須匹配正確
- cookie=chocolate, ch.p
# 路徑
- path=/provider
# 更多可去官網檢視新增乙個類,實現globalfilter, ordered介面
@component
@slf4j
public
class
customglobalfilter
implements
globalfilter
, ordered
return chain.
filter
(exchange)
;//本次過濾通過
}@override
public
intgetorder()
}
測試http://localhost:8588/provider,結果呼叫不通
測試http://localhost:8588/provider?id=22,結果能呼叫,配置成功
SpringCloud閘道器配置
用了springcloud一段時間了 今天想動手搭建,結果忘了 註冊中心和服務都建好了 天真的以為可以通過註冊中心的位址加上服務名就可以訪問服務了 結果忘了閘道器這一茬 看來還是對springcloud元件的功能了解非常不足 先貼這塊了 package com import org.springfr...
SpringCloud 服務配置
1 新建專案,新增pom依賴 org.springframework.cloud spring cloud config server 2 編寫配置檔案,在朱啟動類新增 enableconfigserver server port 3001 spring name cloud config cent...
spring cloud 配置中心
遇到的問題 1.無法解析bean 需要把spring.cloud.config裡的內容移出來,放到bootstrap.yml裡 引文 2.url localhost 8091 refresh訪問不到404 因為springcloud2.0之後沒有 refresh手動呼叫重新整理配置位址,需要在boo...