容错方式
错误始终会出现,不可避免,但可以尽最大可能延迟发生和降低错误的影响。
消除单点
实现系统更高的可用性,首先要消除单点,通过负载均衡分配流量,部署多个业务服务,存多份数据。
节点数越多,可用性就越高,根据实际情况避免浪费资源。
特性开关
实现简单的特性开关,通过配置文件或者程序中的一个静态变量来实现某一功能或特性的启停。
针对繁杂场景,建立自动化的特性开关功能。
服务分级
梳理出业务的核心流程,找到核心的服务是哪些,根据这些给服务分级,表示服务的运维关键程度。
重点关注核心业务流程,否则一旦发生故障,将直接导致业务遭受重大损失
降级设计
当高出预期的流量来临时,无法做到快速扩展,只能通过流控和降级来保障核心功能,利用目前有限的资源,暂时关闭非核心服务。
降级的前提条件是要对服务进行分级,需要明确降级的条件。
降级需要事先测试,并且进行演练。否则当问题真正来临的时候,会导致更大的故障。
向最终用户进行友好的提示,降低负面影响。
- 关闭某个功能,页面显示不全或不能点击某个按钮。请求短路,直接返回缓存结果。
- 简化流程,放弃某个操作,如给用户发注册成功短信。
- 延迟执行,停止定时任务,如某些结算。
超时重试
因超时而引发的频繁发起重试,会导致更严重的事故。
在制定超时重试的策略时,需要考虑:
- 超时时间
- 重试的总次数
- 重试的间隔时间
- 重试间隔时间的衰减度