2024-09-28 00:35:17
微服务架构开发在软件编程开发领域中是一种非常常见的软件开发方式了,而今天我们就一起来了解一下,基于微服务架构的系统软件在运行过程中都有哪些问题会发生。
一:Hystrix是什么?1.1:基本解释Hystrix开始由Netflix(看过美剧的都知道,它是一个美剧影视制作的巨头公司)开源的,后来由SpringCloudHystrix基于这款框架实现了断路器、线程隔离等一系列服务保护功能,该框架的目标在于通过控制访问远程系统、服务和三方库的节点,从而延迟和故障提供更强大的容错能力。
hystrix具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能。
起到了微服务的保护机制,防止某个单元出现故障.从而引起依赖关系引发故障的蔓延,终导致整个系统的瘫痪。
1.2:断路器的概念断路器本身是一个开关装置,用在电路上保护线路过载,当线路中有电器发生短路的时候。
“断路器”能够及时切断故障,防止发生过载、发热甚至起火等严重后果。
当分布式架构中,断路器模式起到的作用也是类似的。
当某个服务发生故障的时候,通过断路器的故障监控向调用方返回一个错误响应,而不是长时间的线程挂机,无限等待。
这样就不会使线程因故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延。
二:Hystrix解决超时问题2.1:问题假设我们前端提供了用户查询订单的功能,先请求映射到OrderController,控制器通过调用服务orderService获取订单信息,前端传过来两个参数:一个是订单id,一个是用户id,orderService需要通过用户id调取用户服务来获取用户的相关信息返回给订单服务去组装信息,假设这里是通过http请求的,我们有一个单独的工程叫做:userService部署在其他的服务器上。
但是这个服务器宕机了,这时候订单服务调取用户信息就失败了,然后查询订单整个请求就失败了!由一个服务的宕机就导致整个查询都失败了,牵一发而动全身。
三:Hystrix的流程Hystrix实际上的工作原理是这样的:通过command来解耦请求与返回操作,在具体的实例中就是,Hystrix会对依赖的服务进行观察,通过command.toObservable调用返回一个观察的对象,同时发起一个事件,然后用Subscriber对接受到的事件进行处理。
陕西北大青鸟http://www.kmbdqn.cn/建议在command命令发出请求后,它通过一系列的判断,顺序依次是缓存是否命中、断路器是否打开、线程池是否占满,然后它才会开始对我们编写的代码进行实际的请求依赖服务的处理,也就是Hystrix.run方法,如果在这其中任一节点出现错误或者抛出异常,它都会返回到fallback方法进行服务降级处理,当降级处理完成之后,它会将结果返回给,际的调用者,经过一系列流程处理的。