首頁 > 軟體

SpringCloud gateway+zookeeper實現閘道器路由的詳細搭建

2022-08-15 10:00:04

準備工作

需要兩個專案去實現路由
demo1為springboot專案用於接入閘道器,測試閘道器連通性
gateway為閘道器路由專案

閘道器搭建

1.電腦安裝好zookeeper,並且正常執行服務
Zookeeper官網

2.建立一個spring cloud gateway專案,並引入zookeeper功能

pom檔案設定

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.8.0</version>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>

建立好專案後,啟動類要啟用服務發現功能
@EnableDiscoveryClient

@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }

}

為了方便設定,將application.properties改成yml
以下是第一部分設定,8080埠會與zookeeper服務衝突,二選一調整埠

server:
  port: 8090
spring:
  application:
    name: rmx-gateway
  cloud:
    zookeeper:
      connect-string: 127.0.0.1:2181

設定完以後,先啟動zookeeper服務,再啟動gateway專案,一定要有先後順序(順序反了,會導致專案無法啟動)

當gateway專案啟動完成以後,去zookeeper服務裡面去查詢是否成功接入該專案服務
以下是一種檢視服務是否接入的方法
啟動zkCli.cmd,這個是client端

啟動後,在控制檯輸入ls /services,檢視到自己的gateway專案名字後,即可確定已經接入了

測試閘道器功能
這一步我們需要建立個springboot專案,並引入zookeeper服務發現

 

pom.xml檔案

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <version>3.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

先設定測試專案的application

server.port=8091
spring.application.name=rmx-demo
spring.cloud.zookeeper.connect-string=127.0.0.1:2181

設定完以後,試著啟動一下,啟動完以後順帶進入zookeeper檢視服務是否被接入

這時候zookeeper已經可以接入閘道器和測試專案了,但是閘道器和測試專案的路由還沒有實現,我們需要停掉閘道器專案,把測試專案設定進入閘道器

回到閘道器的application.yml,並在裡面加入路由設定
srping.cloud.gateway.routes就是路由的設定,這裡使用路徑設定,方便測試,Path後面輸入對應的controller入口
yml的完整內容

server:
  port: 8090
spring:
  application:
    name: rmx-gateway
  cloud:
    zookeeper:
      connect-string: 127.0.0.1:2181
    gateway:
      routes:
        - id: demo1
          uri: http://localhost:8091
          predicates:
            - Path=/test

在測試專案中寫一個測試controller,路徑與設定的名稱保持一致

@RestController
public class TestController {

    @PostMapping("/test")
    public String post(){
        return "埠接通";
    }
}

兩者都弄好後,再將這兩個專案啟動,然後測試路由是否成功

先測試直接用8091測試專案的埠去呼叫介面

再測試用路由埠8090呼叫介面,看是否接通

如果都呼叫成功,則路由實現完成

到此這篇關於SpringCloud gateway+zookeeper實現閘道器路由的文章就介紹到這了,更多相關SpringCloud gateway zookeeper閘道器路由內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com