springcloud入门(一)之基本概念、服务提供者及消费者
springcloud入门(二)之eureka服务发现与注册
springcloud入门(三)之Ribbon负载均衡及自定义负载均衡
springcloud入门(四)之feign负载均衡与rest调用
springcloud入门(五)之Hystrix熔断、降级及监控
springcloud入门(七)之config配置中心
1 Zuul路由 网关
1.1 什么是zuul
zuul包含了对请求的路由和过滤网关两个最主要的功能:
其中路由功能负责将外部请求转发到具体的微服务实例上,实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预;
是实现请求校验,服务聚合等功能的基础。zuul和eureka进行整合,将zuul自身注册为eureka服务治理下的应用,同时从eureka中获取其他微服务的消息
以及以后的访问微服务都是通过zuul跳转后获取
注意 :zuul服务最终还是会注册进eureka
提供:代理、路由及过滤三大功能
1.2 zuul能干嘛
- 路由
- 过滤
官网:
1.3 代码示例
老规矩,新建一个项目zuul-9527;然后三大步上篮
pom
添加依赖
<dependencies>
<!--zuul-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
<!--actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--eureka-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
yml
编写配置
server:
port: 9527
eureka:
client:
service-url:
defaultZone: http://eureka0.com:8000/eureka/,http://eureka1.com:8100/eureka/,http://eureka2.com:8200/eureka/
instance:
instance-id: zuul9527.com #修改在Eureka上默认的状态名字
prefer-ip-address: true #true可以显示服务器的ip
info:
app.name: Damon-springcloud
company.name: www.ccct.com
#zuul配置
zuul:
routes:
mydept.serviceId: provider-dept # 原来的id
mydept.path: /mydept/** #serviceId 和path 是配套使用的,前面的mydept可以随便写
#ignored-services: provider-dept # 不能使用这个路径访问了 yml的数组表示方法
#prefix: /ccct #统一前缀
启动类
开启注解
@SpringBootApplication
@EnableZuulProxy//加上zuul代理注解即可
public class ZuulApplication9527 {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication9527.class,args);
}
}
三大步走完打完收工
测试访问
访问地址:
http://localhost:9527/provider-dept/dept/findById/1
http://localhost:9527/mydept/dept/findById/1
http://localhost:8001/dept/findById/1
三个都能成功
将yml中ignored-services注释放开后,再次访问
如果#prefix注释放开,为接口添加统一前缀。
自此zuul大致有了了解。