有关系统架构的高可用原则
程序员文章站
2022-04-21 17:28:33
降级 降级 对于一个高可用服务,很重要的一个设计就是降级开关。在设计降级开关时,主要有以下思路: 1.开关集中化管理:通过推送机制把开关推送到各个应用。 2.可降级的多级服务:比如服务调用降级为只读本地缓存,只读分布式缓存,只读默认降级数据(如库存状态默认有货) 3.开关前置化:如架构是nginx ......
-
降级
对于一个高可用服务,很重要的一个设计就是降级开关。在设计降级开关时,主要有以下思路:
1.开关集中化管理:通过推送机制把开关推送到各个应用。
2.可降级的多级服务:比如服务调用降级为只读本地缓存,只读分布式缓存,只读默认降级数据(如库存状态默认有货)
3.开关前置化:如架构是nginx --> tomcat,可以将开关前置到nginx接入层,在nginx层做开关,请求流量不回源后端tomcat应用或者只是一小部分流量回源。
4.业务降级:当高并发流量来袭,在电商系统大促设计时保障用户能下单,能支付是核心要求,并保障数据最终一致性即可。这样就可以把一些同步调用改为异步调用,优先处理高优先级数据或特殊特征的数据,合理分配进入系统的流量,以保证系统可用。
-
限流
限流的目的是防止恶意请求流量、恶意攻击,或者防止流量超出系统峰值。可以考虑以下思路:
1.恶意请求流量只访问到cache。
2.对于穿透到后端应用的流量可以考虑使用nginx的limit模块处理。
3.对于恶意ip可以使用nginx deny进行屏蔽。
这些操作的原则是限制流量穿透到后端薄弱的应用层。
-
可回滚
版本化的目的是实现可审计可追溯,并且可回滚。当程序或者数据出错时,如果有版本化机制,那么就可以通过回滚恢复到最近一个正确的版本,比如事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等。通过回滚机制可保证系统某些场景下实现高可用。
推荐阅读
-
[原创]分布式系统之缓存的微观应用经验谈(二) 【主从和主备高可用篇】
-
设计高可用和高负载的网站系统的几个注意事项
-
高并发高可用复杂系统中的缓存架构(十五) 缓存架构讲解,如何保证缓存数据库一致性
-
高并发高可用复杂系统中的缓存架构(三) 能够支撑高并发 + 高可用 + 海量数据 + 备份恢复的 redis 的重要性
-
简单的方法构建一个高可用服务端 架构高可用Java
-
高并发&高可用系统的常见应对策略
-
简单的方法构建一个高可用服务端 架构高可用Java
-
阿里云Overlay的SDN 实践: 架构设计与产品实现 架构高可用
-
让你的系统“坚挺不倒”的最后一个大招——「降级」 degradation降级高可用分布式分布式系统
-
分布式系统关注点——99%的人都能看懂的「补偿」以及最佳实践 补偿compensation重试回滚高可用