分级管理:核心应用和服务具有更高的优先级,比如用户及时付款比能否评价商品更重要
超时设置:设置服务调用的超时时间,一旦超时后,通过框架抛出异常,应用程序则根据服务调度策略选择重试or请求转移到其他服务上
异步调用:通过消息队列等异步方式完成,避免一个服务失败导致整个应用系统失败的情况
服务降级:网站访问高峰期间,为了保证核心应用的正常运行,需要对服务进行降级
降级有两种手段:
一是拒绝服务,拒绝掉优先级低的应用的调用,减少服务并发数,确保核心应用的正常运行;
二是关闭功能,关闭部分不重要的服务。或者服务内部关闭部门不重要的功能,以节约系统开销,为核心应用让出资源
幂等性设计:保证服务重复调用一次产生的结果相同
数据备份:又分为冷备份和热备份
冷备份是定期复制。不能保证数据可用性。热备份又分为异步热备和同步热备
异步热备是指多份数据副本的写入操作异步完成而同步方式则是指多分数据副本的写入操作同时完成
关系数据库的热备份机制就是通常所说的主从同步机制。实践中通常使用读写分离的方法访问master和slave数据库,也就是说写操作只访问mastger库,读操作均访问slave库
可用性设计的原则:
核心服务有限
可降级(读服务降级 如动静隔离 动态化降级为静态化,平时网站可以走动态话渲染页面,但是到了大促来临的时候可以将其切换为静态化来减少核心资源的占用,而且可以提升性能。写服务降级 就是同步转异步)
限流
幂等
切流量
可回滚
以数据为中心
保证高可用系统的方向策略
分层
保证应用自身的高可用
负载均衡-负载均衡策略和易调节的方式,无状态
冗余备份
避免单点故障
主备模式
-一主多备,备份在主节点故障时采用
主从模式
一主多备,同时使用
zookeeper,数据库读写分离
横向易扩展
超时设置-超时设置的好处在于当某个服务不可用时,不至于整个系统发生连锁反应
异步调用
服务分级和降级
灰度发布和回滚机制
监控告警
如何避免缓存雪崩的问题呢
缓存高可用
避免单点故障,保证缓存命中率高
降级和流控
故障期间通过降级非核心功能来保证核心功能
故障期间拒掉部分请求保证有部分请求还能正常响应
清楚后端资源容量
更好的预制风险点,提前做好准备
即使出现问题,更好的流控(具体应该放量多少)