springcloud 配置gateway做閘道器

2021-10-09 20:06:16 字數 3702 閱讀 4274

新建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...