zoukankan      html  css  js  c++  java
  • CAP 定理 && 高可用系统的常用设计手段

    原文:https://www.jianshu.com/p/b9642f99d9cc

    CAP 定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于分布式计算系统来说,不可能同时满足以下三点:

    CAP 定理
    • 一致性(Consistence) : 所有节点访问同一份最新的数据副本
    • 可用性(Availability) : 每次请求都能获取到响应,但是不保证获取的数据为最新数据
    • 分区容错性(Partition tolerance) : 分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

    CAP 仅适用于原子读写的 NOSQL 场景中,并不适合数据库系统。现在的分布式系统具有更多的特性,比如扩展性、可用性等等,在进行系统设计和开发时,就不应该仅仅局限在 CAP 问题上。

    很多人理解这一定律时,常常简单的表述为:“一致性、可用性、分区容错性三者只能同时达到其中两个,不可能同时达到”。实际上,这是一个具有误导性质的说法,在 CAP 理论诞生12年之后,CAP 之父也在2012年重写了之前的论文。

    当发生网络分区的时候,如果我们要继续服务,那么强一致性和可用性只能2选1,也就是说当网络分区之后,P是前提,决定了P之后才有C和A的选择。也就是说分区容错性(Partition tolerance)是我们必须要实现的。

    如果想深入学习一下 CAP ,可以看看这篇文章: 《分布式系统之CAP理论》

    高可用系统的常用设计手段:

    1. 降级: 服务降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面进行有策略的降级,以此释放服务器资源来保证核心任务的正常运行。降级往往会指定不同的级别,面临不同的异常等级来执行不同的处理。

    根据服务方式:可以拒接服务,可以延迟服务,有时候也可以随机服务。根据服务范围:可以砍掉某个功能,也可以砍掉某些模块。总之服务降级需要根据不同的业务需求采用不同的降级策略,主要的目的就是服务虽然有损但是总比没有要好;

    1. 限流: 防止恶意请求流量、恶意攻击,或者防止流量超出系统峰值;

    2. 缓存: 避免大量请求直接落到数据库,将数据库击垮;

    3. 超时和重试机制: 避免请求堆积造成雪崩;

    4. 回滚机制: 快速修复错误版本。

    作者:happyJared
    链接:https://www.jianshu.com/p/0025c7d29a00



  • 相关阅读:
    黑产上演《三体》剧情:蠕虫病毒入侵手机群发“钓鱼”短信
    安天AVL联合小米MIUI首擒顽固病毒“不死鸟”
    阿里云存储OSS服务端签名客户端直传
    mariadb 安装配置
    NPOI 打印设置
    windows2008 r2 网络负载均衡搭建
    SqlServer数据库技巧
    达梦数据库备份还原
    ASP.NET CORE Docker发布记录
    DataReader转换
  • 原文地址:https://www.cnblogs.com/lshan/p/13716939.html
Copyright © 2011-2022 走看看