微服务02:如何解决或者说降低架构复杂度?

1.什么是CAP

        CAP定理,也被称为Brewer定理,是分布式计算中的一个重要概念。它由计算机科学家Eric Brewer于2000年提出,并由Seth Gilbert和Nancy Lynch于2002年正式证明。

CAP定理强调了分布式系统三个关键属性之间的固有权衡,这三个属性分别是:

  1. 一致性(Consistency)
  2. 可用性(Availability)
  3. 分区容忍性(Partition Tolerance)

以下是CAP定理的详细解释:

  1. 一致性(Consistency)

    • 在分布式系统中,一致性意味着系统中的所有节点在同一时间看到相同的数据

    • 换句话说,当发生写操作时所有后续的读操作都应反映该写操作

    • 一致性保证了数据的同步性

  2. 可用性(Availability)

    • 可用性指的是系统中每个节点对读和写请求的响应能力,即使一些节点经历故障或延迟。

    • 可用性系统确保请求得到响应,但不保证它包含最新的写入

    • 在一个高可用的系统中,即使某些节点出现故障,用户仍然能够提交请求并获得响应。

  3. 分区容忍性(Partition Tolerance)

    • 分区容忍性涉及系统在发生网络分区(通信失败)时继续运行和提供服务的能力。

    • 它意味着系统可以容忍消息的丢失或节点间通信的延迟

    • 在分布式系统中,节点之间的网络通信可能会发生故障,导致节点之间无法直接通信,形成网络分区。

        CAP定理的核心思想是,一个分布式系统最多只能同时实现这三个属性中的两个。具体来说,系统设计者必须在以下三者之间做出权衡:

  • 一致性与可用性 :如果系统选择一致性和可用性,那么它会牺牲分区容忍性。在这种情况下,系统在发生网络分区时可能会停止服务,直到网络恢复以确保数据的一致性和系统的可用性。传统的关系型数据库(如MySQL、PostgreSQL)通常属于这一类别。

  • 一致性与分区容忍性 :如果系统选择一致性和分区容忍性,那么它会牺牲可用性。在网络分区发生时,系统会优先保证数据的一致性,即使这意味着在分区期间无法提供服务。HBaseZookeeper等系统在某些配置下可以保证一致性和分区容忍性。

  • 可用性与分区容忍性 :如果系统选择可用性和分区容忍性,那么它会牺牲一致性。在网络分区发生时,系统会继续处理请求,即使这可能导致数据的不一致。这种系统通常依赖于“最终一致性”模型,即数据在一定时间内会达到一致性状态DynamoDBCassandra等NoSQL数据库系统在设计时会优先保证可用性和分区容忍性。

一、为什么必须要保证分区容错性?(Base理论)

        BASE理论由eBay的架构师提出,是对CAP理论的一种延伸和补充。CAP理论指出,一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)这三个属性。而BASE理论则提供了一种新的视角,即在无法做到强一致性的情况下,每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。

BASE理论包含三个核心要素:

  1. 基本可用(Basically Available)

    • 系统保证在出现故障或部分失效的情况下仍然可以保证基本的可用性。这意味着虽然系统可能无法保证100%的可用性,但是它仍然会尽力保证在任何时候都能够提供基本的服务

    • 基本可用通常允许系统在出现故障时部分功能暂时失效,但其他功能仍然可以正常工作。

  2. 软状态(Soft State)

    • 系统中的数据状态可以在一段时间内是不一致的,即系统中的数据副本可能存在短暂的冲突或不同步。这种状态是暂时的,系统会通过后续的处理来逐渐将数据状态调整为一致。

    • 软状态允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性。

  3. 最终一致性(Eventually Consistent)

    • 系统的数据最终会达到一致的状态,但在某个时间点上可能存在不一致的情况。分布式系统中的不同节点可能具有不同的数据副本,而这些副本之间的同步需要一定的时间。

    • 最终一致性要求系统在一定时间范围内能够达到数据的一致性,允许在同步过程中存在短暂的不一致状态。

二、BASE理论的应用场景

BASE理论适用于大型高可用、可扩展的分布式系统。与传统ACID(原子性、一致性、隔离性、持久性)特性相反,BASE理论通过牺牲强一致性来获得可用性,并允许数据在短时间内的不一致,但最终达到一致状态。

在实际应用中,BASE理论常用于以下场景:

  1. 电子商务网站

    • 在高峰期,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面,但其他功能(如浏览商品)仍然可以正常使用。

    • 允许异步的数据复制方式,将数据副本在后台进行异步同步,从而提高系统的响应性能和可用性。

  2. 社交媒体平台

    • 用户需要实时地与其他用户进行互动,并获取最新的信息更新。

    • 可以采用缓存技术和分布式数据存储,以加速数据访问和查询。

    • 在一致性方面,可以采用最终一致性的策略,即用户可以看到稍有延迟的最新数据。

  3. 金融交易系统

    • 数据的一致性和可靠性至关重要。

    • 但在某些情况下,为了提高性能和可用性,可能会采用最终一致性的策略,并通过其他手段(如分布式事务)来确保关键数据的一致性

三、BASE理论与CAP理论的关系

        BASE理论是对CAP理论的一种延伸和补充CAP理论强调了分布式系统中三个关键属性之间的固有权衡,而BASE理论则提供了一种新的视角和解决方案。具体来说:

  • CAP理论指出,一个分布式系统不可能同时满足一致性、可用性和分区容忍性这三个属性。

  • BASE理论则强调,在无法做到强一致性的情况下,可以通过牺牲部分一致性来获得更高的可用性和灵活性。

  • BASE理论中的基本可用、软状态和最终一致性三个要素,正是对CAP理论中一致性、可用性和分区容忍性权衡的结果。

四、BASE理论的优缺点

优点

  1. 提高了系统的可用性和灵活性 :通过牺牲部分一致性,BASE理论允许系统在出现故障或部分失效的情况下

你可能感兴趣的:(微服务,架构,微服务,云原生)