hystrix停止维护_深入了解Hystrix弹性维护

hystrix停止维护

在我之前的《微服务教程》中,我展示了如何将Hystrix用作断路器,以及如何使我们的服务有喘息的空间来恢复自我。

在本教程中,我们将深入研究Hystrix架构,最终我们将了解它如何管理复杂系统中的弹性。

假设在一个复杂的系统中有100多个微服务,要执行任何业务功能或多或少,它取决于5-10个基础微服务(大约)。

通常,在上述基于微服务的体系结构中发现三种类型的服务:

  1. 核心服务
  2. 聚合服务
  3. 边缘服务

Edge服务从UI /客户端接收请求的地方,将其转发到Aggregator服务。 然后,聚合器服务将请求散开,并将调用发送到核心服务,最终从核心服务收集响应,然后发送回边缘服务,该服务实际上将响应发送到UI /客户端。

想象一下,我们有一个复杂的基于微服务的系统,其中单个传入请求将分发超过10个相关服务。 一个请求拆分为10个内部请求(扇出)并转到单个核心服务。 在高峰时间内,每秒钟有100个并发请求。

因此,每秒将创建100 * 10 = 10000个内部请求。 考虑一下系统的负载。 甚至一分钟的核心服务延迟响应都会造成瓶颈,因为在Web服务器(Tomcat,Jetty)中,线程池中的线程数是固定的。

60 * 100 * 1 = 6000个请求正在等待单个服务一分钟。 因此,即使您有99.99%的服务正常运行时间,我们也可以假设失败是不可避免的,因为当我们进行服务调用时,我们必须依赖于两个外部实体Network和Socket,而可悲的是,对网络的控制不在开发人员手中。 为了使系统具有弹性,我们必须应对这种现象并根据其进行计划。

现在,让我们看看解决上述情况所需的选项。

非阻塞请求:如果不管服务是否可用,请求都没有在等待服务,则只有所有请求都将被服务或拒绝。 如果我们遵循此方法,则等待队列中将没有请求,就好像该服务不可用或没有立即延迟响应一样,该请求将被拒绝,并且回退/默认响应将提供给调用方服务。

因此,请求已短路,并且调用了回退路径-依赖服务获得了恢复自身的机会。 我们知道Hystrix会为我们做这些事情。 但这并不是一件容易的事。 在内部,Hystrix维护了复杂的流程以提供弹性微服务架构。

我们现在将讨论该工作流程。

深入了解Hystrix工作流程

ThreadPool: Hystrix维护线程池,以便当服务调用另一个服务时-该调用将分配给该线程池中的一个线程。 基本上,要处理并发性,它提供了辅助线程。 每个线程都有一个超时限制。 如果在提到的“线程超时”之内未返回响应,则该请求将被视为失败,并将调用后备路径。

网络和套接字超时:当服务调用另一个服务时,发生了两件事:数据通过网络传输,服务通过套接字相互通信。 当数据通过网络传输时,它必须跨越多个跃点,因此,如果跃点变慢或变慢,我们就会感觉网络变慢。 因此,我们必须计算请求/响应行程时间的平均时间以及Socket读/写时间,才能以最佳方式计算线程超时。

Hystrix工作流程:

  1. 当服务调用相关服务时,Hystrix介入并检查Hystrix电路是否打开。 如果它是打开的,则返回到后备路径。
  2. 如果Circuit未打开,则Hystrix会检查池中是否所有工作线程都在使用中。 如果是这样,它将立即返回并调用后备路径。
  3. 如果线程在池中可用,则它将分配一个空闲线程,并等待相关服务的响应。 如果响应时间大于线程超时,则它将再次调用后备路径。
  4. 如果一切顺利,则实际响应将返回给呼叫者服务。
  5. 如果在一定时间内(默认为10秒),请求的50%失败,则Hystrix断开电路。

明智地选择“线程池”和“线程超时”非常重要,除非出现必要的影响。 如果线程池数很大,则可以说它大于数据库连接线程池,那么尽管有hystrix,所有Connection仍被服务再次占用。 如果线程池数较少,则我们不能同时处理许多请求,因为这可能会导致性能下降。 因此,请根据您的系统配置选择线程池计数。

超时也是如此。 如果超时很大,则队列中将有更多传入请求。 但是,如果超时很短,那么即使您的服务运行良好,所有呼叫也都将超时,因为服务的平均响应时间大于超时。

结论

如今,无论您为项目选择哪种体系结构(微服务/独占),弹性都是最重要的标准。 拥有它不是一个很好的附加功能,现在是一等公民。

因此,复原力是必不可少的-在计划和开发项目时,还请考虑一下复原力。 想想如何提供弹性架构。 有许多策略可以实现弹性,例如请求超时,最大重试次数,失败率等。因此,在开发项目时,请识别资源密集型区域,尝试以这种方式进行构建,以免发生资源浪费。 另外,提供回退机制,这样您就可以避免级联故障并最终获得一个可靠的系统。

翻译自: https://www.javacodegeeks.com/2017/09/deep-dive-hystrix-resiliency-maintenance.html

hystrix停止维护

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值