高可用系统设计

什么叫高可用

在大部分的时间内是可用的,发生故障和系统升级的时候,服务仍然是可用的
一般情况下 ,我们使用有多少个9来评判一个系统的可用性,比如99.9999%的就是代表系统在所有的运行时间内只有0.0001%的时间是不可用的,这样的系统可用性就是非常高的。当然,可用性底的时候可能9都用不上

有些情况下,可以用失败次数总的请求次数进行比较。比如对网站请求1000次,失败10次,可用性就是99%

哪些情况会导致不可用呢

  • 黑客攻击
  • 断电等硬件故障,服务器坏掉
  • 并发量激增,导致系统宕机或者部分系统不可用
  • 服务架构中的部分坏掉,比如nginx,数据库等
  • 自然灾害

如何保证高可用呢

  • 使用异步
就是不用关心最后的结果,直接返回。需要和业务进行沟通,比如秒杀活动。
除了在程序中实现异步外,我们还可以通过中间件消息队列等实现异步,做到削峰,减少响应所需时间,并且可以降低系统耦合度。
  • 灰度发布
集群中先发布一部分,没问题继续发 ,有问题就回滚已经发布的
  • 使用集群
单机容易达到负载上限,使用集群平均流量
  • 使用缓存
并发量较高的系统单纯使用数据库的话,大量请求直接落地数据库可能会让数据库直接挂掉。有些常用的热点数据,或者访问量比较高的可以放到缓存中,提高运行速度
  • 超时报错和重试
超时应该报错结束,而不是一直等待响应。报错后有相应的重试机制,但不应重试太多次(一般三次)
  • 限流
昨天提到的限流,限制某个时间节点qps在系统可处理的范围内(控制在阈值之下)
  • 熔断
当某个节点超出负载能力,或者出错了可以自主熔断,不让无法处理的请求一直往坏掉的节点发送并且堵塞。
  • 注重代码质量
比较重要的一点,代码的不规范容易出现oom,死锁,死循环之类的问题。循环依赖之类。
限流,降级,熔断
  • 其他
1.注意定期检查硬件,更换老旧设备
2.注意备份,必要时回滚
3.做好系统的监控和报警
4.核心应用用较好的服务器硬件设备
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值