ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring Cloud Hytrix 是什么?

2020-01-16 21:05:45  阅读:216  来源: 互联网

标签:调用 服务 请求 Hystrix Spring 熔断 线程 Hytrix Cloud


本文内容如有错误、不足之处,欢迎技术爱好者们一同探讨,在本文下面讨论区留言,感谢。

文章目录

简述

Spring Cloud Hystrix 是 Spring Cloud Netflix 子项目的核心组件之一,供分布式系统使用,具有服务容错及线程隔离等一系列服务保护功能,保证复杂的分布系统在面临不可避免的失败时,仍能有其稳定性。

概念

Hystrix 是一个容错库,它实现了断路器,避免了一次某个服务崩溃可能会导致的级联故障,从而导致过多的网络调用失败造成内存耗尽,并使整个应用访问失败。

Hystrix 具备以下几个功能:

  • 服务降级
  • 服务熔断
  • 线程隔离
  • 请求缓存
  • 请求合并
  • 服务监控
功能介绍

首先先了解下面电表保险丝的概念,方便后面的内容理解。
电表保险丝:家里电表上的保险丝,当电路上电流过大,保险丝烧断,断开电路,保护电器,对电流进行熔断

  • 请求熔断:在微服务体系统,服务直接相互调用,例如:订单服务调用库存服务,订单系统一个请求发送到库存系统,由于网路问题或者系统问题,等了5秒(或更长时间)没有反应,然后在这个过程中不断有订单系统发送请求到库存系统,此时线程占用不断在变多,导致订单系统资源耗尽,订单系统本来好的,只是调用了一个本来有问题的库存系统,结果导致订单系统也不能对外提供服务(由于资源耗尽,已经无法使用)。hystrix 在掉用一定时间内,如果调用的服务没有反应,停止访问,进行熔断,释放资源,同时进行服务降级。
  • 服务降级:提供一个默认的返回结果,针对实际调用没有返回结果或者出现异常时使用,防止出现服务调用阻塞。
  • 依赖隔离:A 服务调用 B、 C 两个服务,B 、C 服务分配到一个线程池中进行调用,此时如果B服务出现问题无法访问,将会导致调用B服务的线程资源一直被占用,时间一长,那么 这个线程池的所有线程资源都会被阻塞在调用B服务采用一种舱壁模式,给服务B 分配50个线程,给服务C 分配20个线程,每个服务之间的线程资源不可相互使用。这就避免了一个服务不可用导致我整个服务都不可用的问题发生。例如:运维工具 Docker 的容器和容器之间的实现就是舱壁模式。
  • 请求缓存:客户端进行请求,服务端返回数据并对该请求返回的数据进行缓存,这时相同的客户端有发来相同的一个请求,就会使用之前请求的缓存。
  • 请求合并:一个服务依赖于某个服务,这个服务要调用n次,可以把这个请求合并成一个请求,进行发送,只需要发送一条请求。
  • 服务监控:hytrix 提供可以进行服务监控的功能,监控内容包括:错误次数,访问次数。。。

请注意:请求熔断和服务降级这两个概念是一同出现的,有请求熔断就要有服务降级。

图解请求熔断

未进行服务熔断的调用过程
未进行服务熔断
进行服务熔断的调用过程
进行服务熔断

小结

本文主要介绍 Spring Cloud Hystrix 的概念性质的东西,如果对使用感兴趣可以访问这个地址

参考资料

circuit breaker(断路器

SpringCloud使用Hystrix实现断路器

A Guide to Spring Cloud Netflix – Hystrix(Spring Cloud Netflix指南– Hystrix

Spring Cloud

feng_xiaoshi 发布了57 篇原创文章 · 获赞 14 · 访问量 3万+ 私信 关注

标签:调用,服务,请求,Hystrix,Spring,熔断,线程,Hytrix,Cloud
来源: https://blog.csdn.net/feng_xiaoshi/article/details/104010884

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有