如何让系统更稳定

一、高可用(availability)

高可用(HA)是系统架构设计中必须要考虑的,是指系统所能提供无故障服务的一种能力,是指7*24提供服务,任何一台机器挂了或者磁盘坏了,服务不终止,文件不丢失
1)如何衡量高可用
假设你的系统全年都是正常提供服务,那么就是说你系统的可用性是100%,当然这个值是理想状态下,一般都是以几个9来表示系统的可用性,99.99的可用性较多,9越多就代表可用性越强,下面来看看这个几个9是如何计算出来的:
可用性=平均故障间隔/(平均故障间隔 + 故障恢复平均时间)
2)如何设计系统的高可用
想要高可用就要避免使用单点,单台服务器再强应用优化的再极致,只要它宕机,就啥都凉凉了,所以需要多台机器也就是需要集群,方法论中叫冗余。只是有了集群是不能完全满足复杂业务的高可用的,我们要让系统在当前节点宕机的情况下,自己进行切换到好的节点去,这即所谓的故障转移。所以我们现在设计高可用系统的目标明确了,那就是:冗余 + 故障转移
3)如何发现问题并提高可用性
当前大部分互联网的系统架构:
在这里插入图片描述
看上图你会想到什么地方会出现不可用的情况:
3-1)从客户端到反向代理Nginx这块,这个1台nginx是会可能发生故障的,所以这里可以再冗余一台Nginx,可以利用linux的 keeplived进行探测可用性,当一台Nginx挂了之后,责会自动转移到另一台Nginx机器上来,从而保证高可用。可参考博主之前写的nginx高可用
在这里插入图片描述3-2)从反向代理到后端服务service这块,反向代理这块,目前最受欢迎的是nginx,性能方面表现也很好,nginx能够自动探测后端服务的可用性,只需在nginx,config配置多台后端服务就可以了。
在这里插入图片描述
3-3)从后端服务到缓存这块,缓存这块推荐使用redis主从同步方案来达到高可用,redis主从同步加上sentine哨兵机制来自动探活redis实例。
在这里插入图片描述
3-4)从后端服务到写数据库这块,这里可以采用双主机制,一台给线上使用,另一台冗余,当线上那台挂了才会阶梯过来使用写功能,同样是通过linux的keepalived进行自动探活。可参考博主之前写的mysql高可用
在这里插入图片描述
3-5)从后端服务到读数据库这块,这里同样是将读库部署多台,例如部署2台,通过代码段增加连接池组件进行路由读库和探活。
在这里插入图片描述
延伸思路:
上面介绍了我们在宏观方面怎么设计系统高可用,其实我们在编码的时候除了故障转移方案,同样需要考虑很多东西来保证系统的可用性,主要体现在,超时机制、降级、限流等。例如:

  • 超时机制
  • 降级
  • 限流

二、高可靠(reliability)

是指正确的输入,得到正确的输出,读取a文件,不会得到b文件
如何保证?

三、高性能(performance)

是指吞吐量很牛逼,每秒响应几十万请求
如何保证?

四、高扩展(scalability)

是指加机器,就能提升性能,就能存更多文件
如何保证?

五、总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值