分布式存储与集中式存储比较( 二 )


1、组件分布在网络计算机上
2、组件之间仅仅通过消息传递来通信并协调行动
严格讲 , 同一个分布式系统中的计算机在空间部署上是可以随意分布的 , 这些计算机可能被放在不同的机柜上 , 也可能在不同的机房中 , 甚至分布在不同的城市 。无论如何 , 一个标准的分布式系统在没有任何特定业务逻辑约束的情况下 , 都会有以下几个特征:
1、分布性
分布式系统中的多台计算机都会在空间上随意分布 , 同时 , 及其的分布情况也会随时变动
2、对等性
分布式系统中的计算机没有主/从之分 , 既没有控制整个系统的主机 , 也没有被控制的 从机 , 组成分布式系统的所有节点都是对等的 。副本(Replica)是分布式系统最常见的概念之一 , 指的是分布式系统对数据和服务提供的一种冗余方式 。在 常见的分布式系统中 , 为了对外提高可用的服务 , 我们往往会对数据和服务进行副本处理 。数据副本是指在不同的节点上持久化同一份数据 , 当某一个节点上存储的 数据丢失时 , 可以从副本上读取到该数据 , 这是解决分布式系统数据丢失问题最为有效的手段 。另一类副本是服务副本 , 指多个节点提供同样的服务 , 每个节点都有 能力接收来自外部的请求并进行相应的处理
3、并发性
在一个计算机网络中 , 程序运行过程中的并发性操作是非常常见的行为 , 例如同一个分布式系统的多个节点 , 可能会并发地操作一些共享的资源 , 诸如数据库或分布式存储等 , 如何准确并高效地协调分布式并发操作也成为了分布式系统架构与设计中最大的挑战之一
4、缺乏全局时钟
一个典型的分布式系统是由一系列空间上随意分布的多个进程组成的 , 具有明显的分布性 , 这些进程之间通过交换消息来进行相互通信 。因此 , 在分布式系统中 , 很难定义两个事件究竟谁先谁后 , 原因就是因为分布式系统缺乏一个全局的始终控制序列
5、故障总是会发生
组成分布式系统的所有计算机 , 都有可能发生任何形式的故障 。一个被大量工程实践过 的黄金定理是:任何在设计阶段考虑到的异常情况 , 一定会在系统实际运行中发生 , 并且 , 在系统实际运行中还会遇到很多在设计时未考虑到的异常故障 。所以 , 除 非需求指标允许 , 在系统设计时不能放过任何异常情况
6、处理单点故障
在整个分布式系统中 , 如果某个角色或者功能只有某台单机在支撑 , 那么这个节点称为单点 , 其发生的故障称为单点故障 , 也就是通常说的SPoF(Single Point of Failure) , 避免单点而对关键就是把这个功能从单机实现变为集群实现 , 当然 , 这种变化一般会比较困难 , 否则就不会有单点问题了 。如果不能把单点变为集群实现 , 那么一般还有两种选择:
(1)给这个单点做好备份 , 能够在出现问题时进行恢复 , 并且尽量做到自动恢复
(2)降低单点故障的影响范围
分布式系统的意义
从单机单用户到单机多用户 , 再到现在的网络时代 , 应用系统发生了很多的变化 。而分布式系统依然是目前很热门的讨论话题 , 那么 , 分布式系统给我们带来了什么 , 或者说是为什么要有分布式系统呢?从三方面考虑:
1、升级单机处理能力的性价比越来越低
【分布式存储与集中式存储比较】摩尔定律:当价格 不变时 , 每隔18个月 , 集成电路上可容纳的晶体管数目会增加一倍 , 性能也将提升一倍 。这个定律告诉我们 , 随着时间的推移 , 单位成本的支出所能购买的计算机 能力在提升 。不过 , 如果我们把时间固定下来  , 也就是固定在某个具体时间点来购买单颗不同型号的处理器 , 那么所购买的处理器性能越高 , 所要付出的成本就越高 , 性价比就越低 。那么 , 也就是说在一个确定 的时间点 , 通过更换硬件做垂直扩展的方式来提升性能会越来越不划算


推荐阅读