有关系统架构的高可用原则

  • 降级

  对于一个高可用服务,很重要的一个设计就是降级开关。在设计降级开关时,主要有如下思路:
nginx

    1.开关集中化管理:经过推送机制把开关推送到各个应用。后端

    2.可降级的多级服务:好比服务调用降级为只读本地缓存,只读分布式缓存,只读默认降级数据(如库存状态默认有货)缓存

    3.开关前置化:如架构是nginx --> tomcat,能够将开关前置到nginx接入层,在nginx层作开关,请求流量不回源后端tomcat应用或者只是一小部分流量回源。tomcat

    4.业务降级:当高并发流量来袭,在电商系统大促设计时保障用户能下单,能支付是核心要求,并保障数据最终一致性便可。这样就能够把一些同步调用改成异步调用,优先处理高优先级数据或特殊特征的数据,合理分配进入系统的流量,以保证系统可用。架构

  • 限流  

  限流的目的是防止恶意请求流量、恶意攻击,或者防止流量超出系统峰值。能够考虑如下思路:并发

    1.恶意请求流量只访问到cache。
异步

    2.对于穿透到后端应用的流量能够考虑使用nginx的limit模块处理。分布式

    3.对于恶意IP能够使用nginx deny进行屏蔽。
高并发

  这些操做的原则是限制流量穿透到后端薄弱的应用层。spa

  • 可回滚

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

相关文章
相关标签/搜索