大型交易系统之高可用

       上一篇讲到了大型交易系统之高并发原则,本篇我们来聊聊大型交易系统高可用原则
原则一 降级
       对于一个高可用的系统,很重要一个设计就是降级开关,开关降级一般有如下四种设计方式。
       1.开关集中化管理:通过推送机制把开关推送到各个应用。以商品服务为例。
在这里插入图片描述
       2.可降级的多级读服务:比如服务调用降级为只读本地缓存、只读分布式缓存、只读默认降级数据。
在这里插入图片描述
       3.开关前置化:如架构是Nginx作为前置、后端连接tomcat的结构,可以将开关前置到Nginx接入层,在Nginx层做开关,请求流量回源后端应用或者只是一小部分流量回源。
在这里插入图片描述       4.业务降级:当高并发流量来袭,在电商系统大促设计时保障用户能下单、能支付是核心要求,只要能保障数据最终一致性即可。这样就可以把一些同步调用改成异步调用,优先处理高优先级数据,合理分配进入系统的流量,保障系统可用。

原则二 限流
       限流的目的是防止恶意请求流量、恶意攻击,或者防止流量超出系统峰值。可以考虑如下思路。
       1.恶意请求流量只访问catch。
       2.对于穿透到后端应用的流量可以考虑使用Nginx的limit模块处理
       3.对于恶意IP可以使用nginx deny 进行屏蔽。
原则是限制流量穿透到后端薄弱的应用层。

原则三 切流量
       对于一个大型应用,切流量是非常重要的,比如多机房环境下某个机房挂了,或者某个机架挂了,或者某台服务器挂了等等,都需要切流量,有如下常用手段可以进行流量切换。
       1.DNS:切换机房入口。
       2.HttpDNS:主要在APP场景下,在客户端分配好流量入口,绕过运营商LocalDNS并实现更精准流量调度。
       3.LVS/HaProxy:切换故障的Nginx接入层。
       4.Nginx:切换故障应用层。
       有些应用为了更方便切换,还可以在Nginx接入层做切换,通过Nginx进行一些流量切换,而没有通过LVS/HaProxy做切换。

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

发布了21 篇原创文章 · 获赞 0 · 访问量 1609

猜你喜欢

转载自blog.csdn.net/kaijixin/article/details/105618439