spring cloud Greenwich 学习笔记(九)spring cloud gateway 集成 eureka

文章目录

  • 概述
  • 环境准备
  • springcloud gateway服务改造

springcloud系列学习笔记目录参见博主专栏 spring boot 2.X/spring cloud Greenwich。
由于是一系列文章,所以后面的文章可能会使用到前面文章的项目。文章所有代码都已上传GitHub:https://github.com/liubenlong/springcloudGreenwichDemo
本系列环境:Java11;springboot 2.1.1.RELEASE;springcloud Greenwich.RELEASE;MySQL 8.0.5;

概述

笔者前面spring cloud gateway 教程入门和spring cloud gateway 高并发限流 源码分析 两篇文章讲述的都是经过单个网关服务访问单个后端服务,这肯定不符合实际的应用场景。公司实际应用中肯定是会有很多的服务组成一个集群,那么本文就介绍一下如何通过gateway集成eureka服务注册发现访问后端的服务集群。

环境准备

本文eureka集群借用之前(六)spring cloud eureka 集群部署 文章中的springcloud-eureka-server-cluster工程。
服务提供者借用(一)spring cloud eureka ribbon 服务注册与发现中的springcloud-eureka-serviceprovider工程,在其中新添加一个controller方法:

@RequestMapping("/hello/hi")
public String hello(String name) {
    return String.format("hello %s , from port=%s", name, port);
}

启动三个eureka服务,端口分别是8001,8002,8003;
启动两个serviceprovider服务,端口分别是8082,8083;
到此准备工作就完成了,可以访问eureka的任何一台服务查看一下:
spring cloud Greenwich 学习笔记(九)spring cloud gateway 集成 eureka_第1张图片
访问http://127.0.0.1:8083/hello/hi?name=1z,返回结果hello 1z , from port=8083

springcloud gateway服务改造

将(七)spring cloud gateway 教程入门中的工程springcloud-gateway-helloworldcopy一份,命名为springcloud-gateway-witheureka
在pom文件中添加eureka的依赖:

<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>

在配置文件中添加集成了eureka的配置,这里我删除了多余的配置,看着简单一些,完整配置如下:

server:
  port: 8097

# 最佳实践:springcloud应用都要指定application.name
spring:
  application:
    name: springcloud-gateway-witheureka
  cloud:
    gateway:
      routes:
      - id: service-hi
        uri: lb://springcloud-eureka-serviceprovider # lb 表示负载均衡loadbalance,SERVICE-HI是服务名称
        predicates:
        - Path=/demo/** # 所有demo开头的请求走这个路由
        filters:
        - StripPrefix=1 # 转发之前将/demo去掉

# 添加 eureka 注册中心集群
eureka:
  client:
    service-url:
      defaultZone: http://admin:123456@eureka2:8001/eureka/,http://admin:123456@eureka3:8002/eureka/,http://admin:123456@eureka2:8003/eureka/

说明:上述配置添加了eureka注册中心的地址,然后gateway.routes[0].uri配置的是eureka配置中心的服务名称,而不是ip+端口,前面 lb 表示负载均衡loadbalance。
启动服务,浏览器访问http://127.0.0.1:8097/demo/hello/hi?name=zhangsan,会发现输出会在一下两个结果中轮询,因为我们启动了两台服务提供者:

hello zhangsan , from port=8082
hello zhangsan , from port=8083

此时的架构图如下:
spring cloud Greenwich 学习笔记(九)spring cloud gateway 集成 eureka_第2张图片

springcloud系列学习笔记目录参见博主专栏 spring boot 2.X/spring cloud Greenwich。
由于是一系列文章,所以后面的文章可能会使用到前面文章的项目。文章所有代码都已上传GitHub:https://github.com/liubenlong/springcloudGreenwichDemo
本系列环境:Java11;springboot 2.1.1.RELEASE;springcloud Greenwich.RELEASE;MySQL 8.0.5;

你可能感兴趣的:(spring,cloud,spring,boot,2.X/spring,cloud,Greenwich)