断路器Hystrix与高可用系统架构:资源隔离+限流+熔断+降级+运维监控

概述

在分布式系统下,微服务之间不可避免地会发生相互调用,但是没有一个系统能够保证自身运行的绝对正确。微服务在调用过程中,很可能会面临依赖服务失效的问题,这些问题的发生有很多原因:

  • 微服务之间的网络通信出现较大的延迟;
  • 被调用的微服务发生了调用异常;
  • 依赖的微服务负载过大无法及时响应请求等。
    因此希望有一个公共组件能够在服务通过网络请求访问其他微服务时,对延迟和失败提供强大的容错能力,为服务问调用提供保护和控制。
    Hystrix Netflix 一个开源项目,它能够在依赖服务失效的情况下,通过以下两种方式来处理:
  • 隔离系统依赖服务的方式,防止服务级联失败;
  • 提供失败回滚机制,使系统能够更快地从异常中恢复。

Hystrix基础能力

Spring对Hystrix 进行封装和适配,使 Hystrix 能够更好地运行于Spring Cloud 环境中,为微服务间的调用提供强有力的容错机制。Hystrix提供如下的能力:

  • 通过第三方客户端访问(一般是网络)依赖服务出现高延迟或者失败时,为系统提供保护和控制
  • 在复杂的分布式系统中防止级联失败(服务雪崩效应)。
  • 快速 Fail fast 同时能快速恢复。
  • 提供失败回滚 Fallback 和优雅的服务降级机制。
  • 提供近实时的监控和运维控制。

Hystrix原理

断路器为隔断服务调用者和异常服务提供者防止服务雪崩的现象,提供了一种保护措施。

1. 服务雪崩

服务雪崩效应是一 种因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程。


服务雪崩

2.断路器

在分布式系统中,不同服务之间经常互相调用,当服务提供者不可用时就很有可能发生服务雪崩效应,导致整个系统的不可用 所以为了预防这种情况的发生,可以使用断路器模式进行处理。
断路器将远程方法调用包装在断路器对象中,用于监控方法调用过程的失败。一旦该方法调用发生的失败次数达到一定的阀值,那么这个断路器将会跳闸,在接下来时间里再次调用该方法将会被断路器 直接返回异常,而不再发生该方法的真实调用。这样就避免了服务调用者在服务提供者不可用时发送请求,从而减少线程池中资源的消耗,保护了系统 。

3.服务降级操作

而服务降级是为了在整体资源不够的时候,适当放弃部分服务,将主要的资源投放到核心服务中,待渡过难关之后,再开启已关闭的服务,保证了系统核心服务的稳定。

  • 当调用发生问题时,采用备用的Fallback 方法代替主方法执行并返回结果,对失败服务进行了服务降级。
  • 当调用服务失败次数超过了断路器的阀值时,断路器将打开,不再进行调用,而是快速失败 ,直接执行Fallback 逻辑进行服务降级,减少资源消耗,保护线程资源。

4.资源隔离

在 Hystrix 中采用了舱壁模式,将系统中的服务提供者隔离起来, 某个服务提供者延迟升高或者失败,并不会导致整个系统失败,同时也能够控制调用这些服务的并发度。

  • 线程与线程池
    Hystrix 通过将调用服务线程与服务访问的执行线程分隔开来,调用线程能够空出来做其他的工作而不至于因为服务调用的执行阻塞过长时间。
    Hystrix将使用独立的线程池对应每一个服务提供者,用于隔离和限制这些服务。
    于是,某个服务提供者的高延迟或者饱和资源受限只会发生在该服务提供者对应的线程池中。如果服务提供者的线程池被占满,对该服务提供者的调用会被 Hystrix 直接进入回滚逻辑,快速失败,保护服务调用者的资源稳定。


    资源隔离
  • 信号量
    除了线程池外, Hystrix 还可以通过信号量(计数器)来限制单个服务提供者的并发量。如果通过信号量来控制系统负载,将不再允许设置超时控制和异步化调用,这就表示在服务提供者出现高延迟时,其调用线程将会被阻塞,直至服务提供者的网络请求超时。如果对服务提供者的稳定性有足够的信心,可以通过信号量来控制系统的负载。

总结:Hystrix高可用系统架构

hystrix 提供了这些功能功能实现高可用系统架构:

  • 资源隔离:
    让某一刻服务在故障的情况下,不会耗尽系统所有资源。通过资源隔离限制只能使用 10 个线程,那么这个服务出问题,也不会影响整个系统。
  • 限流:
    高并发流量涌入,比如突然间一秒钟 100万 QPS,系统完全承受不住会直接崩溃。 限流可以只对 10 万 QPS 进行服务,其他的都拒绝。
  • 熔断:
    服务发生连续故障,导致在一段时间内直接拒绝服务。
  • 降级:
    如 mysql 挂了,系统发现了就会自动降级。从内存里存的少量数据中,去提取一些数据出来。
  • 运维监控:
    监控 + 报警 + 优化,各种异常的情况,有问题就及时报警,然后自动化处理。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容