北大青鸟设计培训:微服务架构的软件运营可能存在哪些问题?
一:什么是Hystrix?1.1:基本解释Hystrix最早是由网飞(看过美剧的人都知道,是制作美剧的巨头公司)开放的,随后SpringCloudHystrix基于这个框架实现了断路器、线程隔离等一系列服务保护功能。该框架的目标是通过控制访问远程系统、服务和三方库的节点,为延迟和故障提供更强大的容错能力。
Hystrix具有服务降级、服务融合、线程和信号隔离、请求缓存、请求合并和服务监控等强大功能。
它起到了微服务的保护机制,防止一个单元失效,导致依赖性扩散,最终导致整个系统瘫痪。
1.2:断路器的概念断路器本身就是一种开关器件,用来保护电路过载,当电路中出现短路时。
“断路器”能及时切断故障,防止过载、发热甚至火灾等严重后果。
在分布式架构中,断路器模式扮演着类似的角色。
当一个服务失败时,通过断路器的故障监控向调用者返回错误响应,而不是长时间挂起线程,无限期等待。
这样线程就不会因为故障服务而被长时间占用,避免了故障在分布式系统中的蔓延。
二:Hystrix解决超时问题2.1:问题假设我们的前端提供了用户查询订单的功能。首先,请求被映射到OrderController,控制器通过调用服务orderService获取订单信息。前端传递两个参数:一个是订单id,一个是用户id。OrderService需要通过用户id调用用户服务,获取用户的相关信息,并返回给order service组装信息。假设是through/suggest,command命令发出请求后,通过一系列判断,顺序是缓存是否命中,断路器是否打开,线程池是否满,然后它会开始实际请求我们写的代码的服务依赖处理。也就是Hystrix.run方法,如果这些节点中的任何一个有错误或者抛出异常,它就会返回到fallback方法进行服务降级。当降级完成后,它会将结果返回给国际调用者进行一系列的处理。