博客 深入ZooKeeper之分布式
Post
Cancel

深入ZooKeeper之分布式

概述

ZooKeeper是一个优秀的高性能分布式协调框架,就因为它主打分布协调所以现在分布式架构满天下的时代,也让它成了一个十分给力的基础组件,所以深入了解它的原理是一件十分有价值的事情。本文是笔记属性,易懂地方只记要点,在难点地方着重去描述。

何为分布式

分布式系统是一个硬件或软件组件分布在不同的网络计算机上的,彼此之间仅仅通过消息传递进行通信和协调的系统

分布式特点

  • 分布性

    系统各节点可分布在不同的网络与地区

  • 对等性

    分布式各个节点的角色是对等的,不是主从等的关系

  • 并发性

    并发的调用某个服务等,如同时去请求数据

  • 缺乏全局时钟

    意思就是各节点的请求不能保持同步的,能像单机电脑那样保留,利用全局时钟来控制各节点执行逻辑的顺序

  • 节点故障

    要考虑到各节点是可能出现故障的

分布式环境问题

  • 通信异常

    分布在不同的网络中的节点,当然容易出现通信问题

  • 网络分区

    在地域或者区域里集群之间的通信不畅时,形成“脑裂”现象,如两个数据中心服务不同时,数据无法同步,这样就形成了网络分区

  • 三态

    平时请求都只有两个状态,成功与失败,但在分布式的世界里,当请求消息丢失时,就可能出现未知状态,然后超时未响应

  • 节点故障

    就是分布式里的机器故障。

从ACID到CAP/BASE

说到事务就会涉及到ACID特性,这些事务特性针对单机来说,是很容易实现的,但对于分布式的系统来说,很就非常复杂了,这出现相关的CAP理论及BASE理论。下面来简单说说,

ACID

  • A(Atomicity) 原子 性

  • C(Consistency) 一致性

    其中这个一致性,其中一个解释是指,在执行事务前后保留数据库状态一致,如数据库操作破坏约束规范,如唯一性

  • I (Isolation) 隔离性

    说到隔离性,就要提到经典的数据读取问题,脏读,不可重复读,幻读,然后针对这几个问题弄成了四个隔离级别分别

    1. Read Uncommitted
    2. Read Committed
    3. Repeatable Read
    4. Serializable
  • D(Durability)持久性

CAP

针对分布式系统,有一个特点就是无法同时做到一致性,可用性,分区容错性,最多只能同时满足基中两个,这就是著名的CAP理论

  • C(Consistency)这里的到一致性和数据库事务里的一致性不一样,这里的一致性是指在分布式的系统中读取结果都是一致的,如读取张三的余额为100,从各个节点读取张三的余额都为100

  • A( Availability) 可用性,就是系统服务是否可用

  • P (Partition tolerance) 分区容错性,从前面提到过的分布式的常见的问题之一网络分区,当出现这个问题时,系统是否即为分区容错性。

    作为分布式的框架都是优先满足分区容错性,因为作为分布式系统某些节点故障就导致不可用,那这个分布式就非常脆弱的,所以是都是在满足P这个基准下,在C和A中作权衡,然后有了AP 与 CP 的一些框架,

    • 如Zookeeper是满足CP,追求的是强一致性,集群中节点数N,则必须保证N/2+1个节点是可用,集群的一致性才能得到保证,否则一致性得不到保证的情况下,这个集群也停止对外提供服务
    • Eureka 是满足AP的,追求是可用性,集群里只要还有一个节点活,都是可用的,就算出现了网络分区,两边网络分区里的数据不一致,也一样的可用
    • 在实现框架时选择CP与AP,是根据需求来权衡,无优劣之分,只有适用与否

BASE理论

它的由Basically Available, Soft state, Eventual consistency,三个短语缩写而成,它是由eBay的架构师Dan Pritchett 经过大量分布式架构中提出的,就是在CAP理论下,权衡了服务的可用性和数据一致性想出来的这么一套理论。

这套论本来是拿来解决数据库的ACID,在分布式的架构下放弃了强一致性所提出来的一套方案

  • Basically Available 基本可用是指数据库不保证一致性,能保证读写的可用性,能读,能写,但读取的值 可能是旧值,所以叫它基本可用
  • Soft state 软状态,指的是各个指点之间的数据从不一致到一致时的中间状态
  • Eventual consistency, 最终一致性,指的是更新一个值后,在后面没有更新的情况下,经过一定时间后,系统从软状态到最终所有节点的数据保持一致。

其中我们最常听见的就是这个最终一致性, 如在实现我们的业务时使用分布式锁时会使用大大降低系统的性能,就是可以通过BASE理论来实践。

总结

这章就是主要介绍了一下,分布式系统的特点及分布式环境所遇到的问题,及解决这些问题所出现的一些理论,有了理论,在我们实现业务时就可以用这套理论来指导实践。

参考:

《从Paxos到ZooKeeper分布式一致性原理与实践》

Eventual consistency

This post is licensed under CC BY 4.0 by the author.

关于Spring Boot 应用监控几种方案

一致性协议

Comments powered by Disqus.