高可用架构设计(1) - hystrix与高可用系统架构:资源隔离+限流+熔断+降级+运维监控
1 hystrix是什么?
Netflix(国外最大的类似于,爱奇艺,优酷)视频网站,五六年前,也是,感觉自己的系统,整个网站,经常出故障,可用性不太高
有时候一些vip会员不能支付,有时候看视频就卡顿,看不了视频。。。
影响公司的收入!!!
五六年前,netflix,api team,提升高可用性,开发了一个框架,类似于spring,mybatis,hibernate,等等这种框架
高可用性的框架,hystrix
hystrix,框架,提供了高可用相关的各种各样的功能,然后确保说在hystrix的保护下,整个系统可以长期处于高可用的状态
最理想的状况下,软件的故障,就不应该说导致整个系统的崩溃,服务器硬件的一些故障,服务的冗余
唯一有可能导致系统彻底崩溃,就是类似于之前,支付宝的那个事故,工人施工,挖断了电缆,导致几个机房都停电
不可用,和产生一些故障或者bug的区别
2 高可用系统架构
2.1 资源隔离
让你的系统里,某一块东西,在故障的情况下,不会耗尽系统所有的资源,比如线程资源
项目中的一个case,有一块东西,是要用多线程做一些事情,小伙伴做项目的时候,没有太留神,资源隔离,那块代码,在遇到一些故障的情况下,每个线程在跑的时候,因为那个bug,直接就死循环了,导致那块东西启动了大量的线程,每个线程都死循环
最终导致系统资源耗尽,崩溃,不工作,不可用,废掉了
资源隔离,那一块代码,最多最多就是用掉10个线程,不能再多了,就废掉了,限定好的一些资源
2.2 限流
高并发的流量涌入进来,比如说突然间一秒钟100万QPS,废掉了,10万QPS进入系统,其他90万QPS被拒绝了
2.3 熔断
系统后端的一些依赖,出了一些故障,比如说MySQL宕机,每次请求都是报错的,熔断了,后续的请求过来直接不接收了,拒绝访问,10分钟之后再尝试去看看MySQL恢复没有
2.4 降级
MySQL挂了,系统发现了,自动降级,从内存里存的少量数据中,去提取一些数据出来
2.5 运维监控
监控+报警+优化,各种异常的情况,有问题就及时报警,优化一些系统的配置和参数,或者代码
如果你的各种依赖的服务有了故障,那么很可能会导致你的系统不可用
hystrix对系统进行各种高可用性的系统加固,来应对各种不可用的情况
X 交流学习
Java交流群
博客
Github
- 高可用服务架构设计(8) - 基于hystrix的线程池隔离技术进行商品服务接口的资源隔离
- 高可用服务架构设计(9) - 基于Hystrix的信号量技术对地理位置获取逻辑进行资源隔离与限流
- 高可用架构设计(2) -hystrix要解决的分布式系统可用性问题以及其设计原则
- 高可用服务架构设计(10)-Hystrix的线程池+服务+接口划分以及资源池的容量大小控制
- 运维角度浅谈MySQL数据库优化一个成熟的数据库架构并不是一开始设计就具备高可用、高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善。这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方
- 马蜂窝大交通业务监控报警系统架构设计与实现
- 架构学习之路——高可用高并发系统设计原则
- 分布式系统监控平台-Overwatch架构设计(已开源)
- 可用性高达5个9!支付系统高可用架构设计实战
- 企业运维监控平台架构设计与实现(ganglia篇)
- 阿里带你一起学习企业运维监控平台架构设计与实现
- 系统架构设计资源
- 【SD2.0大会】钱宏武:从SOHU社区架构和运维谈高并发系统开发与设计
- 马蜂窝大交通业务监控报警系统架构设计与实现
- 【人在运维囧途_07】GNU/Linux 系统资源监控神器--collectl【重点推荐】
- 支付系统高可用架构设计实战
- 轻松监控上万台服务器:企业运维监控平台架构设计与实践指南
- 新手也能看懂的监控报警系统架构设计 - 架构
- 秒杀系统架构解密与防刷设计 - 高可用架构系列