springcloud-zuul

1.zuul是开源的微服务网管,具有以下功能

  • 降低客户端的复杂性,客户端只需发送一次请求到zuul,zuul对多个微服务进行整合。
  • 解决跨域请求
  • 解决了每个服务都需要单独认证(身份认证与安全)
  • 解决了客户端与微服务直接通信强耦合,难以重构
  • 易于监控,可以收集网关监控数据,推送到外部系统进行分析
  • 减少了服务端与客户端的交换次数、
  • 动态的路由规则
  • 可以进行压力测试
  • 可以负载分配
  • 可以静态响应处理:直接在网管中直接返回数据。

2.一个简单的微服务网关

  1. 导入zuul包,
  2. 启动类中加入@EnableZuulProxy(声明一个zuul代理,包含了ribbon与hystrix)
  3. 编写配置文件,将zuul注册到eureka中
  4. 默认zuul代理了所有的eureka上的微服务,路由规则:通过请求路径,zuulhost:zuulpost/微服务serviceId/xxx  通过serviceId定位

3.管理端点

  • 与actuator配合使用可以暴露两个端点 routes和filters

4.路由配置

  • 直接指定:配置zuul.routes.微服务的serviceId=指定路径
  • 忽略相关路径:zuul.ignored-services:xxx,*表示忽略所有微服务
  • 路由前缀
  • 指定path与url
  • 使用正则表达式

5.zuul的header,可以设置敏感header与忽略header

6.zuul的文件上传

  • 小文件无需处理直接上传
  • 10M以上需要添加zuul前缀
  • 超大文件要增加hystrix/ribbon的超时时间
  • 命令测试上传 curl -v -H "xxx" -F "file=@small.file" localhist:8040/xx/upload

7.zuul的核心组件-过滤器

zuul中分为了五种过滤器:

  • PRE:请求被路由之前,身份认证,选择微服务,记录调试信息等
  • ROUTING:将请求路由到微服务的过滤器,构建发送给微服务的请求
  • POST:请求到达微服务之后,进行响应添加header,收集信息和指标,发送回客户端
  • ERROR:发生错误的过滤器
  • 自定义过滤器:直接响应不发送给微服务
  • 过滤器间的通讯采用requestContext封装了httpServletRequest,httpServletResponse,目标,错误信息等

8.@EnableZuulProxy与@EnableZuulService 

@EnableZuulProxy是@EnableZuulService 的增强版,包括使用ribbon负载均衡,hystrix容错(通多增加的routing类型过滤器RibbonRoutingFilter)

两者都有的FormBodyWrapperFilter:解析表单数据,不高效,没有表单提交时禁用该过滤器

9.zuul整合hystrix后所有经过zuul的请求都会被hystrix保护。服务异常时访问会报错,要实现回退

  • 实现FallbackReovider,指定哪个微服务提供回退,返回ClientHttpResponse
  • 添加回退后,任意微服务不可用则返回指定信息
  • 方法上加入@HystrixCommand(fallbackMethod=“xx”)指定回退方法

10.饥饿加载,zuul整合ribbon后,由于ribbon是懒加载,首次请求较慢

开启饥饿加载:eager-load:enable:true

11.由于hystrix的隔离策略有thread和semaphore,zuul默认为semaphore,可以指定为thread

  • 当为thread时,所有路由默认在相同的hystrix线程池中进行
  • 可以指定每个路由使用独立线程池

12.zuul的高可用

  • 客户端注册到eureka,所有zuul节点都注册到eureka中,浏览器等会访问eureka获取zuul列表,使用ribbon负载均衡的请求zuul集群
  • 客户端没有注册在 eureka中时,需要额外的负载均衡,f5,nginx等来实现zuul高可用。

13.整合非jvm服务,非jvm可以操控eureka中的rest节点

  • 采用sidecar,更加方便进行整合
  • 整合了zuul
  • 引入sidecar包,启动类上添加@EnableSideCar(@EnableCircuitBreaker和@EnableZuulProxy的组合)
  • 配置文件中注册到eureka,配置监听端口
  • 非jvm服务返回satus:UP/DOWN/OUT_OF_SERVICE来实现健康检查

14.zuul聚合微服务,在controller中进行聚合

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值