分布式原则

分布式的定义

分布式就是利用软件,通过线性扩展的方式解决单一计算节点上的计算能力(CPU)和存储能力(磁盘)无法从硬件上无限突破的瓶颈。解决CPU的问题就是分布式计算,解决磁盘的问题就是分布式存储。

  • 分布式计算

    分布式计算的目的就是提升参与计算的节点个数以提高计算能力。同一类的任务由超过一个CPU完成的系统都算是分布式。计算节点并不一定是一台独立的计算机,它可以是线程、进程、机器、集群等,分布式应用也不一定必须是多机应用,多进程、多线程一样是分布式。

  • 分布式存储

    分布式存储是在维持单位存储容量的成本不变的前提下,提升参与存储的节点数以提升存储容量和存储访问能力。

  • 分布式与集群
    • 分布式:一个业务分拆多个子业务,部署在不同的服务器上;分布式是以缩短单个任务(原始任务)的执行时间来提升效率的
    • 集群:同一个业务,部署在多个服务器上。而集群则是通过提高单位时间内执行的任务数来提升效率。

分布式系统

  • 分布式系统定义 分布式系统是一个硬件或软件分布在网络计算机上,通过消息传递进行通信和动作协调的系统。
  • 分布式系统特点
    • 并发性
      • 程序并发、资源共享、线性扩展
    • 缺乏全局时钟
      • 时间、全局状态、一致性状态
    • 故障独立性
      • 故障隔离、故障感知
  • 分布式系统挑战

    • 异构性
    • 开放性
      • 主要接口对外发布
      • 一致的通讯机制
      • 可以采用不同的供应商的异构软硬件产品
    • 安全性
      • 类型
        • 机密性,防止泄露给未授权的人
        • 完整性,防止改变和讹误
        • 可用性,防止对访问资源的干扰
      • 挑战
        • 拒绝服务攻击
        • 移动代码安全
    • 可伸缩性

      • 如果用户梳理和资源梳理激增,系统仍能保持有效,则此系统具备伸缩性
      • 伸缩性的边界,当前支撑用户量为n的系统
        • 物理资源应成正比扩展,上线是O(n)
        • 性能损失下线是O(log n),数据量增加会导致一些性能丢失,最大丢失值不应比O(log n)差。
        • 避免性能瓶颈
    • 故障处理

      • 容错
      • 冗余
      • 故障恢复
    • 并发性
    • 透明性:对用户和应用程序屏蔽分布式组件的分散性,系统被认为是一个整体,而不是独立组件的集合。[ANSA 1989]和ISO的开放分布式处理参考模型(RM-ODP)标识了8种透明性的分类。其中访问透明性、位置透明性最重要
      • 访问透明性,用相同的操作访问本地和远程资源
      • 位置透明性,不需要知道资源的位置就可以访问到
      • 并发透明性,进程并发对共享资源进行操作而互不干扰
      • 复制透明性,用户和应用对被访问资源的副本数无需关心,底层资源可以任意增减副本
      • 故障透明性,屏蔽错误,不论软件还是硬件故障,运行用户或应用完成他们的任务
      • 移动透明性,资源在系统内部迁移不影响用户和应用的感知
      • 性能透明性,负载变化后系统能提升性能
      • 伸缩透明性,系统架构不变,系统和应用可以扩展

分布式需求

  • 本质需求,构造和使用分布式系统的本质动力是对资源共享的需求。
  • 现实需求
    • Data Scalability: 单台机器的容量不足以(经济的) 承载所有资料,所以需要分散。如: NoSQL
    • Computing Scalability: 单台机器的运算能力不足以(经济的) 及时完成运算,所以需 要分散。如:科学运算。

CAP原理

  • CAP定义

  • C: Consistency 一致性,服务原子操作,多点数据一致。
  • A: Availability 可用性,每个请求都要被执行,有返回信息。
  • P: Tolerance of network Partition 分区容忍性(分布式),系统可以水平切分扩展

    CAP理论告诉我们,一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。 对大型分布式系统,可用性(A)与分区容忍性(P)优先级要高于数据一致性,应尽量朝着 A、P 的方向设计,然后通过其它手段保证对于一致性需求。

最终一致性

一致性问题有2个视角,客户端视角和服务端视角。客户端视角,要求数据访问如何保障一致性;客户端观察到的一致性指的是,何时以及如何能观察到对存储系统中数据对象所做的更新。服务端视角,关注数据如何在多节点实现一致性。

  • 一致性的分类
    • 强一致性:所有节点数据必须同时一致,A节点写入数据,其他节点也写入更新。
    • 弱一致性:A节点写入数据,其他节点不能获得A节点写入的数据,而保持写入前的数据。A节点和其他节点数据不一致的这一段时间,为“不一致性窗口”。
    • 最终一致性:若一致性的特例;

results matching ""

    No results matching ""