springCloud网关组件zuul和gateway
zuul
概述
什么是zuul?
Zuul包含了对请求的路由和过滤两个最主要的功能:
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器
功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。Zuul和Eureka进行
整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后
的访问微服务都是通过Zuul跳转后获得。
注意:Zuul服务最终还是会注册进Eureka
提供:代理 + 路由 + 过滤 三大功能!
路由的基本配置
新建Module模块springcloud-zuul-gateway-9527
pom文件
添加Eureka和zuul的配置
<dependencies>
<!--Zuul-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
<!--eureka相关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
</dependencies>
application.yml配置
server:
port: 9527
#spring的相关配置
spring:
application:
name: springcloud-zuul-gateway
#eureka配置
eureka:
client:
service-url:
defaultZone:
http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http:/
/eureka7003.com:7003/eureka/
instance:
instance-id: gateway9527.com
prefer-ip-address: false #true访问路径可以显示IP地址
#info配置
info:
app.name: kuang-springcloud
company.name: www.kuangstudy.com
build.artifactId: ${project.artifactId}
build.version: ${project.version}
主启动类
@SpringBootApplication
@EnableZuulProxy
public class SpringCloudZuulApp9527 {
public static void main(String[] args) {
SpringApplication.run(SpringCloudZuulApp9527.class,args);
}
}
启动
- Eureka集群
- 一个服务提供类:springcloud-provider-dept-8001
- zuul路由
- 访问 :http://localhost:7001/
测试
- 不用路由 :http://localhost:8001/dept/get/2
- 使用路由 :http://myzuul.com:9527/springcloud-provider-dept/dept/get/2
- 网关 / 微服务名字 / 具体的服务
gateway
概述
什么是gateway?
Gateway是一个构建于Spring Boot 2.x, Spring 5(Spring WebFlux), and Project Reactor的
Spring生态系统之上的网关,旨在提共一个简单有效的方式路由接口,并提供跨领域的关注点,比如安
全,监控,恢复能力。
能够使用网关去进行鉴权,日志记录等。
路由的基本配置
新建Project项目gateway
pom文件
添加Eureka和zuul的配置
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
application.yaml配置
spring:
application:
name: gateway
cloud:
gateway:
discovery:
locator:
enabled: true #开启当前项目服务注册与发现功能
lower-case-service-id: true #是否把服务名都转化成小写,Eureka中默认都是大写
#在yml中如果一个属性是list类型。且list的泛型为类类型。不是简单数据类型
# - 标识一个对象
routes:
- id: msg
uri: lb://gateway
#如果list类型中也可使用逗号进行分割
predicates: Path=/msg
server:
port: 9000
主启动类
@SpringBootApplication
@EnableEurekaClient
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
启动
- Eureka集群
- 一个服务提供类:client-8000
- gateway路由
- 访问 :http://localhost:8761/
测试
- 不用路由:http://localhost:8000/msg
- 使用路由:http://localhost:9000/client/msg
- 网关 / 微服务名字 / 具体的服务