SpringCloudGateway配合注册中心的使用

SpringCloudGateway是微服务中的一员,其结合注册中心的使用场景是比较常见的,比如在统一鉴权方面,一般是向网关发起访问某个服务的请求,网关校验客户端是否登录,验证通过才向目标服务发起调用,目标服务的地址是从注册中心获取,而不是通过配置文件或者java类配置了。

1. 配置Eureka服务端:

引入eureka-server

		dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

配置yml文件:

server:
  port: 8765

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

spring:
  application:
    name: eureka-server

启动eureka服务:

@SpringBootApplication
@EnableEurekaServer
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

2.配置目标服务

引入jar:

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

配置yaml文件:

server:
  port: 8768

spring:
  application:
    name: backend-service

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8765/eureka/

启动服务,修改上面port,可以同时启动多个服务

@RestController
@SpringBootApplication
@EnableEurekaClient
public class DemoApplication {

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

    @GetMapping("/getInfo")
    public String getInfo(){
        int port = httpRequest.getLocalPort();
        System.out.println("访问的端口:" +  port);
        // 每个服务启动端口不一致,用来做测试
        return "hello:" + port;
    }
}

3.配置gateway

引入jar:

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--  如果是编译的gateway源码,则不需要引入下面gateway jar  -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

配置yaml文件:

server:
  port: 8081

spring:
  application:
    name: spring-cloud-gateway-sample
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true #开启服务注册发现,这时
          lowerCaseServiceId: true

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8765/eureka/

启动gateway

@SpringBootApplication
@EnableEurekaClient
public class GatewaySampleApplication {
	public static void main(String[] args) {
		SpringApplication.run(GatewaySampleApplication.class, args);
	}
}

到这里我们已经把服务都起来了,假如我启动了三个目标服务器,端口分别为8768,8769,8770,则可以访问eureka-server,看到注册的服务:
浏览器访问http://localhost:8765/,页面如下:
在这里插入图片描述
访问gateway三次,则可以看到每次返回的端口信息不一样,看这里应该是用了轮询算法。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值