高可用原则

版权声明:如果转载,请注明 https://blog.csdn.net/weixin_44607176/article/details/88727898
一, 降级: 对于一个高可用服务很重要的的一个设计就是降级开关,在设计降级开关时,主要依据这么几点:
  1. 开关集中化管理: 通过推送机制把开关推送到各个应用里面
  2. 可降级的多级读取服务: 比如服务调用降级为只读本地缓存、只读分布式缓存、只读默认降级数据
    配置中心系统(推送开关配置信息)—> 订单中心服务–①本地缓存–②redis缓存–③降级托底数据
  3. 开关前置化:如架构是Nginx --> Tomcat, 可以将开关前置到Nginx接入层,在Nginx层做开关,请求流量不回源后端 Tomcat 应用或者只是一小部分流量回源
  4. 业务降级:当高并发流量来袭,在电商系统大促设计时保障用户能下单、能支付是核心要求,并保障数据最终一致性即可.这样就可以把一些同步调用改成异步调用,优先处理高优先级数据或特殊特征的数据,合理分配进入系统的流量,以保证系统可用.
二,限流: 限流的目的是防止恶意请求流量、恶意攻击,或者防止流量超出系统峰值.思路:
  1. 恶意请求流量只访问到cache.
  2. 对于穿透到后端应用的流量可以考虑使用Nginx的limit模块做处理.
  3. 对于恶意IP可以使用Nginx deny进行屏蔽.
    原则是限制流量穿透到后端薄弱的应用层.
三,切流量: 对于一个大型的应用,切流量太重要了,比如某台服务器挂了或者某个机架挂了都需要切流量,可以使用这几个方法来切换
  1. DNS: 切换机房入口
  2. HttpDNS: 主要APP场景下,在客户端分配好流量入口,绕过运营商LocalDNS,并实现更精准流量调度
  3. LVS/HaProxy: 切换故障的Nginx接入层
  4. Nginx: 切换故障的应用层
四, 回滚: 当出现数据或程序错误时, 有版本化机制,就可以通过回滚恢复到正确的版本,比如事物回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等等…通过回滚机制可以保证系统某些场景下的高可用

猜你喜欢

转载自blog.csdn.net/weixin_44607176/article/details/88727898