1 断路器Hystrix
Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。
“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。
1.1 ribbon-hystrix版断路器
启动RibbonHystrixApplication,重复访问:http://localhost:8766/hello?name=shawn
停止一个EurekaClientApplication:8763,重复访问:http://localhost:8766/hello?name=shawn
再多访问几次,发现不再出现‘hello!shawn,An Error Has Occurred’,说明不在访问8763端口。避免了整体服务失败和雪崩效应。
1.2 feign-hystrix版断路器
启动FeignHystrixApplication,重复访问:http://localhost:8767/hello?name=shawn
停止一个EurekaClientApplication:8763,重复访问:http://localhost:8767/hello?name=shawn
************其实feign是自带断路器的,可以试着把hystrix的依赖注释掉,也一样可以测试成功。
2 路由网关Zuul
2.1 概述:
-
Zuul包含了对请求的路由和过滤两个最主要的功能:
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础. -
Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。
注意:Zuul服务最终还是会注册进Eureka
-
代理+路由+过滤三大功能
启动测试,访问:http://localhost:8768/shawn/zuul-a/hello?name=shawn(依次访问zuul-a,zuul-b,zuul-c,zuul-d),交替出现。
关闭EurekaClientApplication:8762端口,重复访问:http://localhost:8768/shawn/zuul-d/hello?name=shawn,说明断路器功能正常,负载均衡功能也正常,重复访问多次后,不再访问8762端口。
2.2 Zuul拦截功能
添加一个Myfilter类集成ZuulFilter, 启动测试,访问:http://localhost:8768/shawn/zuul-a/hello?name=shawn&password=xxxxxx
参考来源:https://blog.csdn.net/weixin_40037053/article/details/85088357