深入讲解大流量网站下——高可用原则

实现高可用原则主要有:降级、限流、切流量、可回滚,接下来仔细讲述一下。

1.降级

对于一个高可用服务,很重要的一个设计就是降级开关,在设计降级开关时,要根据以下步骤:

 

  • 开关集中化管理:通过推送机制把开关推送到各个应用。

  • 可降级的多级服务:比如服务调用降级为只读本地缓存、只读分布式缓存、只读默认降级数据(例如库存状态默认有货)。
  • 开关前置化,如架构是Nginx-->Tomcat,可以将开关前置到Nginx接入层,在Nginx层做开关,请求流量不回源后端Tomcat应用或者只是一小部分流量回源。
  • 业务降级:当高并发流量来袭,在电商系统大促设计时保障用户能下单、能支付是核心要求,并保障数据最终一致性即可。这样就可以把一些同步调用改为异步调用,优先处理优先级高或者特殊特征的数据,合理分配进入系统的流量,以保障系统可用。

2.限流

限流的目的是放置恶意请求流量、恶意攻击,或者防止流量超出系统峰值。

原则是限制流量穿透到后端薄弱的应用层。

可以设计如下:

  • 恶意请求流量只访问到cache
  • 对于穿透到后端应用的流量可以考虑使用Nginx的limit模块处理
  • 对于恶意IP可以使用nginx deny进行屏蔽

3.切流量

对于一个大型应用,切流量是非常重要的,比如多机房环境下某个机房挂了,或者某个机架挂了,或者某台服务器挂了,都需要切流量,可以用如下方法进行切换:

  • DNS:切换机房入口
  • HttpDNS:主要在APP场景下,在客户端分配好流量入口,绕过运行商LocalDNS并实现更精准流量调度
  • LVS/HaProxy:切换故障的Nginx接入层
  • Nginx:切换故障的应用层

4.可回滚

版本化的目的是实现可审计可追溯可回滚。当程序或数据出错时,如果有版本化机制,那么就可以通过回滚恢复到最近一个正确的版本,比如事务回滚、代码库回滚、部署版本回复你、数据版本回滚、静态资源版本回滚。通过回滚机制可以保证系统某些场景下的高可用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值