分布式常见面试题:如何提高系统可用性?

面试题 潘老师 10个月前 (06-14) 39 ℃ (0) 扫码查看

在分布式环境下,有一点至关重要,那就是想尽办法提升系统的可用性,尤其是像电商系统、门户网站这类访问量巨大的。一旦出现故障,可能引发一系列连锁反应。比如突然涌来的超大流量,如果系统没做好高可用的准备,很可能抵挡不住流量洪峰,导致宕机。这种情况老板不想看到,程序员也不想看到,毕竟这和大家的前途紧密相关。

那问题来了,怎么去规避这类问题,提高系统的可用性呢?其实解决思路挺简单,就是尽量给每个服务找个备胎。但这个备胎可不是集群概念里的备用机器,而是一种备用方案。

比如说常见的降级备案。像查询商品信息,一般查的是 Redis 集群,但要是 Redis 集群全挂了,各种故障扎堆,这时候就需要设计个备胎,比如用 Elasticsearch ,虽说查询速度可能比不上 Redis ,但好歹能应急。

再比如流量控制,也就是限流,包括单机限流和集群限流。像在订单系统的某个环节加个开关,就如同地铁进站口,人多要排队,保证流量持续进入,而不是让服务器崩溃大家都没法用。比如把系统的 QPS 控制在 2000 ,后面进来的用户就告知他们稍后再试。这样无非就是让用户多等会儿,能缓解大流量下的访问压力。

还有熔断机制。当下游服务因压力过大或其他原因导致系统变慢时,上游服务为保护自身和系统整体的可用性,可以暂时切断对下游服务的调用。熔断可以理解成电路跳闸,电压超负荷就自动跳闸,防止电路短路或触电。这也是为保护系统整体可用性采用的备胎策略。

一般来说,提高可用性的方案主要就是降级、限流和熔断。大家在实际的产品中可以应用起来。

好了,今天关于提高系统可用性的内容就分享到这儿,如果您对本期内容有任何疑问,欢迎在评论区给我留言。谢谢大家!


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/ms/13025.html
喜欢 (1)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】