title: SpringCloud学习笔记五:Sentinel
date: 2020-04-30 16:17:03
tags:
- SpringCloud
- Zuul
categories: SpringCloud
toc_number: true
Zuul
路由
Zuul是Spring Cloud全家桶中的微服务API网关。
所有从设备或网站来的请求都会经过Zuul到达后端的Netflix应用程序。作为一个边界性质的应用程序,Zuul提供了动态路由、监控、弹性负载和安全功能。
Zuul底层利用各种filter实现如下功能:
- 认证和安全 识别每个需要认证的资源,拒绝不符合要求的请求。
- 性能监测 在服务边界追踪并统计数据,提供精确的生产视图。
- 动态路由 根据需要将请求动态路由到后端集群。
- 压力测试 逐渐增加对集群的流量以了解其性能。
- 负载卸载 预先为每种类型的请求分配容量,当请求超过容量时自动丢弃。
- 静态资源处理 直接在边界返回某些响应。
下面简单介绍一下使用方式
zuul项目是独立项目。
添加依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency>
添加配置文件
zuul:routes:producer: # 路由ID,可自定义path: /producer-server/** # 使用时URL中携带的路径url: http://127.0.0.1:8000 # 映射的真实地址
面向服务映射:
- 开启zuul项目的eureka服务发现功能
- 配置文件中的url修改:
zuul:routes:producer: # 路由ID,可自定义path: /producer-server/** # 使用时URL中携带的路径# url: http://127.0.0.1:8000 # 映射的真实地址serviceId: micro-producer # 映射的真实服务ID
配置简化
如果,被映射的服务名称与路由ID一致,可简写为:
zuul:routes:micro-producer: /producer-server/** # 服务名称:访问路径
zuul存在默认访问方式,即直接访问以服务名称为URL的地址也是可以的。
添加注解
在启动类中添加@EnableZuulProxy注解。
过滤器
添加依赖
省略
实现ZuulFilter抽象方法
自定义过滤器:
/*** 自定义过滤器*/@Componentpublic class ZuulFilterImpl extends ZuulFilter {/*** @return 当前过滤器类型*/@Overridepublic String filterType() {return "pre";}/*** 返回值越小,代码越先执行** @return 过滤器执行顺序*/@Overridepublic int filterOrder() {return 1;}/*** @return 是否开启当前过滤器*/@Overridepublic boolean shouldFilter() {return true;}/*** 过滤器执行内容** @return* @throws ZuulException 异常*/@Overridepublic Object run() throws ZuulException {// 执行zuul过滤器return null;}}
过滤器类型:
- pre:转发之前执行
- routing:路由请求时执行
- post:执行服务获取返回值之前执行
- error:出现异常时执行
