分布式系统学习笔记

分布式系统学习笔记(一)

一.基础概念

  1. 节点:可独立完成一组逻辑的个体,既能提供服务,也能存储数据,分为有状态和无状态两种。存储、读取数据的节点称为有状态节点。

  2. 通信:节点之间相互独立,唯一的信息传输方式是不可靠的网络通信。

  3. 异常:

    1. 机器宕机

      机器宕机是分布式系统中常见的异常之一,是完全随机事件,一旦发生宕机,该节点就进入不可用状态,丢失所有内存信息。重启后有两种状态:对于有状态的节点,需要通过读取本地存储或者其他节点数据恢复内存信息至宕机前的状态,才达到可用状态。对于无状态的节点重启后可直接使用。

    2. 网络异常

      消息丢失,网络分化: 多机房部署的分布式文件系统可能出现,机房通信中断,各机房节点通信正常,两个机房同时对外提供服务。

      消息乱序、数据错误、TCP不完全可靠。

    3. 系统三态

      对每一个远程调用,节点操作后的状态有三种:成功,失败,超时。出现超时时就不能确定这一个RPC最终的执行结果,可以通过:读取数据来验证,或者设计可重试机制。

    4. 存储丢失

      数据存储在机械硬盘上,随时有可能发生异常,导致数据没有能正确存储。对于有状态的节点,存储丢失会导致服务不可用,需要读取其他节点数据,恢复状态。

  4. 分布式文件系统设计原则就是:设计推演阶段,考虑一切有可能出现的异常,以及异常情况下系统的处理方式。

  5. 副本:数据或者服务的冗余,可以提高数据的冗余,提高系统的可用性,但是在使用副本时,也同样需要付出成本维护副本。

    1. 数据副本:多节点存储一份数据,失状态节点可以通过读取副本恢复状态。解决分布式系统中数据丢失的方法。(GFS 一个chunk多个副本)
      服务副本:多节点提供相同服务,一般不能依赖节点的本地存储。(Map Reduce)

    2. 副本一致性:在一定的协议控制下,使得从外部读取到的各个副本的数据相同。

      强一致性:任何时刻任何用户或节点都能读到最近一次更新的数据。

      单调一致性:从用户角度出发,某个用户一旦读到某次更新后的数据,他就不可能读到更旧的值。其他用户不保证。

      会话一致性:在一次会话内,用户一旦读到某次更新后的数据,会话期间就不会读到更旧的值。只保证单个用户单次会话的一致性。(seeion机制)

      最终一致性:系统中的副本数据最终将会达到完全一致的状态,但这个过程的时间无法确定。用户始终读取一个副本就是单调一致性

      弱一致性:某一次数据更新成功后,不能保证用户就能读到这次更新,读到更新后,也不保证不会读到更旧的值

  6. 分布式系统指标

    性能:系统吞吐力,系统响应延迟,系统并发力。三者相互制约,不可兼得。

    可用性:用系统停服务的时间与正常时间的比例来体现,考核系统在面对各种异常情况时的容错能力。

    可扩展性:分布式系统通过扩展集群提高系统的各项指标。最好的扩展性是线性扩展,某一指标随着机器的数量线性增长。

    一致性:就是上文提到的为提供服务冗余而增加的副本,需要保证一致性,越强的一致性越能满足用户需求,但是也更难实现。

posted @ 2016-02-29 10:38  灼灼其华_lyp  阅读(198)  评论(0)    收藏  举报