博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Springboot 整合 SpringCloud组件-Gateway 网关服务 (四)
阅读量:138 次
发布时间:2019-02-27

本文共 2681 字,大约阅读时间需要 8 分钟。

这篇我将介绍的是网关服务,那么从标题已经知道我们整合的组件时gateway;

也许有人说,为啥不用zuul,这个组件也可以用于做网关。 至于这两组件的性能比较与区别,我们来看一个表格简单了解下:

Gateway与Zuul

  gateway zuul
基本介绍 Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代Netflix ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。
 
Zuul1 是基于 Servlet 框架构建,如图所示,采用的是阻塞和多线程方式,即一个线程处理一次连接请求,这种方式在内部延迟严重、设备故障较多情况下会引起存活的连接增多和线程增加的情况发生。
性能 WebFlux 模块的名称是 spring-webflux,名称中的 Flux 来源于 Reactor 中的类 Flux。Spring webflux 有一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现非常好。使用非阻塞API。 Websockets得到支持,并且由于它与Spring紧密集成,所以将会是一个更好的 开发 体验。  本文的Zuul,指的是Zuul 1.x,是一个基于阻塞io的API Gateway。Zuul已经发布了Zuul 2.x,基于Netty,也是非阻塞的,支持长连接,但Spring Cloud暂时还没有整合计划。
源码维护组织 spring-cloud-Gateway是spring旗下spring-cloud的一个子项目。还有一种说法是因为zuul2连续跳票和zuul1的性能表现不是很理想,所以催生了spring孵化Gateway项目。 zuul则是netflix公司的项目,只是spring将zuul集成在spring-cloud中使用而已。关键目前spring不打算集成zuul2.x。
版本 springboot2.0 springboot1.x

接下来我们开始整合gateway,实现该组件的基础使用:

创建一个springboot项目,起名 gateway:

(同样,我们这里选用的springcloud版本是:Finchley.RELEASE) 

pom.xml里核心的依赖包为:

org.springframework.boot
spring-boot-starter
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
2.0.0.RELEASE
org.springframework.cloud
spring-cloud-starter-gateway
2.0.0.RELEASE
org.springframework.boot
spring-boot-starter-test
test

实现基础功能使用,我们可以直接在application.yml进行配置:

server:  port: 8081spring:  application:    name: test-gateway-service  cloud:      gateway:        discovery:          locator:            enabled: false#开启小写验证,默认feign根据服务名查找都是用的全大写            lowerCaseServiceId: true        routes:        - id: client-test          uri: lb://CLIENT-TEST          predicates:            - Path=/testclient/**          filters:            - StripPrefix=1        - id: service-feign          uri: lb://FEIGN          predicates:            - Path=/service-feign/**          filters:            - StripPrefix=1eureka:  instance:    preferIpAddress: true    instance-id: ${spring.cloud.client.ip-address}:${server.port}  client:    service-url:      defaultZone: http://localhost:8761/eureka/

启动类也同样加上 @EnableEurekaClient。

 

可以看到我们简单配置了2个路由:

路由id为client-test的,

只要是访问路径带有 /testclient的, 都会根据从Eureka注册中心获取的服务信息去寻找储服务名为CLIENT-TEST的服务实例,进行接口转发调用。

路由id为service-feign的,

同理,只要是访问路径带有 /service-feign的, 都会根据从Eureka注册中心获取的服务信息去寻找储服务名为FEIGN的服务实例,进行接口转发调用。

 

那么我们先把网关gateway服务跑起来,逐一调用接口看看:

 访问:

访问: 

可以看到通过网关访问,路由转发都是OK的。 

转载地址:http://dxwb.baihongyu.com/

你可能感兴趣的文章