这篇我将介绍的是网关服务,那么从标题已经知道我们整合的组件时gateway;
也许有人说,为啥不用zuul,这个组件也可以用于做网关。 至于这两组件的性能比较与区别,我们来看一个表格简单了解下:
Gateway与Zuul
接下来我们开始整合gateway,实现该组件的基础使用:
创建一个springboot项目,起名 gateway:
(同样,我们这里选用的springcloud版本是:Finchley.RELEASE)
pom.xml里核心的依赖包为:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>2.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>2.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
实现基础功能使用,我们可以直接在application.yml进行配置:
server: port: 8081 spring: 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=1 eureka: 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服务跑起来,逐一调用接口看看:
访问:http://localhost:8081/testclient/haveatry?name=JCccc
访问: http://localhost:8081/service-feign/feignTest?name=TestMessage
可以看到通过网关访问,路由转发都是OK的。