Spring Cloud Gateway 集成 Nacos 實現請求負載


    如圖所示,是spring cloud gateway 集成 Nacos 實現負載均衡的架構圖,下面演示一下整個實現過程,首先准備如下項目。

  • spring-cloud-gateway-nacos-provider, 提供REST服務,並將服務注冊到Nacos上。
  • spring-cloud-gateway-nacos-consumer, 提供網關路由,基於Nacos 服務注冊中心。

    spring-cloud-gateway-nacos-provider服務的構建過程如下,該項目提供REST接口,並且將該注冊到Nacos服務器上。

添加相關Jar包依賴,Spring Cloud 使用的版本為 Greenwich.SR2.

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter<artifactId>
     <version>2.1.2.RELEASE</version>
</dependency>
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web<artifactId>
     <version>2.1.1.RELEASE</version>
</dependency>
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-alibaba-nacos-discovery<artifactId>
     <version>2.1.1.RELEASE</version>
</dependency> 
  •  創建NacosController, 提供一個/say 接口
 1 @RestController
 2 
 3 Public Class NacosController {
 4     
 5    @GetMapping("/say")
 6    Public String sayHello(){
 7         return "[spring-cloud-nacos-gatewayh-provider]:sayHello";
 8     }
 9 
10 }
  • 在application.yml 中添加服務注冊地址的配置
spring:
  application:
    name: spring-cloud-nacos-gateway-provider
  cloud:
     nacos:
      discovery:
        server-addr: 192.168.216.128:8848

server:
  port: 8080
        

 

   為了演示請求負載,將 spring-cloud-gatewa-nacos-provider 部署兩份,分別開放8080 和 8081端口。 服務啟動成功之后,進入Nacos Dashboard 的服務列表。

 

  spring-cloud-gateway-nacos-consumer 作為網關,會從Nacos 上根據服務名稱獲取目標URI進行服務調用。

  添加Jar 依賴。

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter<artifactId>
     <version>2.1.2.RELEASE</version>
</dependency>
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web<artifactId>
     <version>2.1.2.RELEASE</version>
</dependency>
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-alibaba-nacos-discovery<artifactId>
     <version>2.1.1.RELEASE</version>
</dependency> 
  • 在application.yml 中添加如下配置。
server:
  port: 8888



spring:
  application:
    name: spring-cloud-nacos-gateway-consumer
  cloud:
    nacos:
      discovery:
                server-addr: 192.168.216.128.8848
    gateway:    
      discovery:
        locator:
          enabled: true #開啟從注冊中心動態創建路由的功能,利用微服務名進行路由
          lowerCaseServiceId: true
      routes:
          id: nacos-gateway-provider    #路由的ID,沒有固定規則但要求唯一,建議配合服務名
        
          uri: lb://apring-cloud-nacos-gateway-provider
          #匹配后提供服務的路由地址
          predicates:
            - Path=/nacos/**         # 斷言,路徑相匹配的進行路由
           filters:
            -StripPrifix=1

關鍵配置如下:

  • lower-case-service-id:  是否使用service-id 的小寫, 默認是大寫。
  • spring.cloud.gateway.discovery.locator.enabled: 開啟從注冊中心動態創建路由的功能。
  • uri:   其中配置的lb://表示從注冊中心獲取服務,后面的spring-cloud-nacos-gateway-provider 表示目標服務在注冊中心上得服務名。

    通過curl指令訪問網關,如果配置成功,將會正確返回目標服務的內容。

curl   http://localhost:8888/nacos/say

  

 


免責聲明!

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



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