📜  比较——集中式、分散式和分布式系统

📅  最后修改于: 2021-09-10 02:37:33             🧑  作者: Mango

在本文中,我们将尝试理解和比较集中式、分散式和分布式系统的不同方面。

1. 集中式系统:

我们从集中式系统开始,因为它们是最直观、最容易理解和定义的。

集中式系统是使用客户端/服务器架构的系统,其中一个或多个客户端节点直接连接到中央服务器。这是许多组织中最常用的系统类型,其中客户端向公司服务器发送请求并接收响应。

图 –集中式系统可视化

例子 –
维基百科。考虑我们向其发送请求的大型服务器,服务器以我们请求的文章作为响应。假设我们在维基百科搜索栏中输入搜索词“垃圾食品”。这个搜索词作为请求发送到维基百科服务器(主要位于美国弗吉尼亚州),然后根据相关性用文章进行响应。在这种情况下,我们是客户端节点,维基百科服务器是中央服务器。

中心化系统的特点 –

  • 全局时钟的存在:由于整个系统由一个中心节点(服务器/主节点)和许多客户端节点(计算机/从节点)组成,所有客户端节点都与全局时钟(中心节点的时钟)同步)。
  • 一个单一的中央单元:一个单一的中央单元,用于服务/协调系统中的所有其他节点。
  • 组件的相关故障:中心节点故障导致整个系统故障。这是有道理的,因为当服务器关闭时,没有其他实体可以发送/接收响应/请求。

缩放 –
只能在中央服务器上进行垂直扩展。水平缩放将与该系统的单一中央实体的单一中央单元特征相矛盾。

集中式系统的组成部分 –
中心化系统的组成部分是,

  • 节点(计算机、移动设备等)。
  • 服务器。
  • 通信链路(电缆、Wi-Fi 等)。

中心化系统架构 –
客户端-服务器架构。为系统中其他节点提供服务的中心节点是服务器节点,所有其他节点都是客户端节点。

集中式系统的局限性 –

  • 到一定限度后不能纵向扩展——在一定限度后,即使你增加服务器节点的硬件和软件能力,性能也不会有明显的提高,导致成本/收益比<1。
  • 当流量激增时会出现瓶颈——因为服务器只能有有限数量的开放端口来监听来自客户端节点的连接。因此,当发生购物销售等高流量时,服务器本质上可能会遭受拒绝服务攻击或分布式拒绝服务攻击。

集中式系统的优势 –

  • 易于物理保护。凭借它们的位置,很容易保护和服务服务器和客户端节点
  • 流畅优雅的个人体验——客户有自己使用的专用系统(例如个人电脑),公司也有类似的系统,可以修改以满足定制需求
  • 专用资源(内存、CPU 内核等)
  • 对于达到一定限度的小型系统而言更具成本效益 – 由于中央系统需要较少的资金来建立,因此在必须构建小型系统时它们具有优势
  • 快速更新是可能的 – 只需更新一台机器。
  • 从系统中轻松分离节点。只需从服务器上删除客户端节点的连接,瞧!节点分离。

集中式系统的缺点 –

  • 高度依赖网络连接——如果节点失去连接,系统可能会失败,因为只有一个中心节点。
  • 没有系统的优雅降级——整个系统的突然故障
  • 数据备份的可能性较小。如果服务器节点出现故障并且没有备份,您将立即丢失数据
  • 服务器维护困难——只有一个服务器节点,由于可用性原因,将服务器停机维护是低效和不专业的。因此,更新必须即时完成(热更新),这很困难,而且系统可能会崩溃。

集中式系统的应用 –

  • 应用程序开发——设置中央服务器和发送客户端请求非常容易。现在的现代技术确实带有默认的测试服务器,可以通过几个命令启动。例如快递服务器、django 服务器。
  • 数据分析——当所有数据集中在一处并可供分析时,轻松进行数据分析
  • 个人电脑

用例 –

  • 集中式数据库——所有数据在一台服务器上供使用。
  • 单人游戏,如极品飞车、侠盗猎车手罪恶都市——整个游戏在一个系统中(通常是一台个人电脑)
  • 通过部署测试服务器来开发应用程序,从而轻松调试、轻松部署、轻松模拟
  • 个人电脑

组织使用 –
国家信息中心(印度),IBM

2. 去中心化系统:

这些是另一种越来越受欢迎的系统,主要是因为比特币的大肆宣传。现在许多组织都在努力寻找此类系统的应用。

在去中心化系统中,每个节点都做出自己的决定。系统的最终行为是各个节点决策的聚合。请注意,没有单个实体接收和响应请求。

图 – 去中心化系统可视化

例子 –
比特币。让我们以比特币为例,因为它是去中心化系统最流行的用例。没有一个实体/组织拥有比特币网络。该网络是所有节点的总和,这些节点相互通信以维护每个账户持有人拥有的比特币数量。

去中心化系统的特点——

  • 缺少全局时钟:每个节点彼此独立,因此它们运行和遵循不同的时钟。
  • 多个中央单元(计算机/节点/服务器):多个中央单元可以侦听来自其他节点的连接
  • 组件相关故障:一个中心节点故障导致部分系统故障;不是整个系统

缩放 –
垂直缩放是可能的。每个节点都可以为自身增加资源(硬件、软件)以提高性能,从而提高整个系统的性能。

组件 –
去中心化系统的组成部分是,

  • 节点(计算机、移动设备等)
  • 通信链路(电缆、Wi-Fi 等)

去中心化系统架构 –

  • 点对点架构——所有节点都是彼此的对等点。没有一个节点凌驾于其他节点之上
  • 主从架构——一个节点可以通过投票成为主节点并帮助协调系统的一部分,但这并不意味着该节点对它正在协调的另一个节点具有至高无上的地位

去中心化系统的局限性 –

  • 可能会导致企业层面的协调问题——当每个节点都是自己行为的所有者时,很难实现集体任务
  • 不适合小型系统——由于成本/收益比低,不利于构建和运行小型分散系统
  • 无法调节系统上的节点——没有上级节点监督下级节点的行为

去中心化系统的优势 –

  • 最小的性能瓶颈问题——整个负载在所有节点上得到平衡;导致最少或没有瓶颈情况
  • 高可用性——某些节点(计算机、手机、服务器)始终可用/在线工作,从而实现高可用性
  • 更多的自主权和对资源的控制——由于每个节点控制自己的行为,它具有更好的自主权,从而对资源有更多的控制权

去中心化系统的缺点 –

  • 难以实现全局大任务——没有指挥链来指挥他人执行某些任务
  • 没有监管监督
  • 难以知道哪个节点发生故障——必须对每个节点进行 ping 操作以进行可用性检查和工作分区,以通过检查预期输出和节点生成的内容来实际找出哪个节点发生故障
  • 很难知道哪个节点响应了——当一个请求由一个去中心化的系统提供服务时,该请求实际上是由系统中的一个节点提供的,但实际上很难找出哪个节点确实为该请求提供了服务。

去中心化系统的应用——

  • 专用网络 – 对等节点相互连接以形成专用网络。
  • 加密货币——节点加入成为一个系统的一部分,在这个系统中,数字货币在没有任何痕迹和位置的情况下被发送给谁。然而,在比特币中,我们可以看到公共地址和比特币转移的数量,但这些公共地址是可变的,因此难以追踪。

用例 –

  • 区块链
  • 去中心化数据库——整个数据库分成几部分,分布到不同的节点进行存储和使用。例如,一个节点中名称从“A”到“K”,第二个节点中名称从“L”到“N”,第三个节点中名称从“O”到“Z”的记录
  • 加密货币

组织使用 –
比特币、Tor 网络

3. 分布式系统:

这是我们要讨论的最后一种系统。让我们直接进入吧!

在去中心化系统中,每个节点都做出自己的决定。系统的最终行为是各个节点决策的聚合。请注意,没有单个实体接收和响应请求。

图 –分布式系统可视化

例子 –
谷歌搜索系统。每个请求都由数百台计算机处理,这些计算机爬行网络并返回相关结果。对于用户来说,Google 看似是一个系统,但实际上是多台计算机协同工作以完成一项任务(将结果返回给搜索查询)。

分布式系统的特点——

  • 组件的并发性:节点应用共识协议来就相同的值/事务/命令/日志达成一致。
  • 缺少全局时钟:所有节点都维护自己的时钟。
  • 组件独立失效:在分布式系统中,节点独立失效,不会对整个系统产生显着影响。如果一个节点发生故障,则整个系统不会让故障节点继续工作。

缩放 –
水平和垂直缩放是可能的。

分布式系统的组成部分——
分布式系统的组件是,

  • 节点(计算机、移动设备等)
  • 通信链路(电缆、Wi-Fi 等)

分布式系统架构 –

  • 点对点——所有节点彼此对等,并朝着共同的目标努力
  • 客户端-服务器——一些节点成为协调器、仲裁器等角色的服务器节点。
  • n层体系结构-一个应用程序的不同部分分布在系统的不同节点和这些节点共同作为函数用户/客户端的应用程序

分布式系统的局限性 –

  • 难以为系统设计和调试算法。由于没有公共时钟,这些算法很困难;所以不能对命令/日志进行时间排序。节点可能具有不同的延迟,在设计此类算法时必须牢记这些延迟。复杂性随着节点数量的增加而增加。访问此链接了解更多信息
  • 没有共同的时钟会导致事件/交易的时间排序困难
  • 节点难以获得系统的全局视图,因此难以根据系统中其他节点的状态做出明智的决策

分布式系统的优势——

  • 比集中式系统低延迟——分布式系统由于地理分布广泛而具有低延迟,因此获得响应的时间更短

分布式系统的缺点 –

  • 难以达成共识
  • 按事件发生的绝对时间记录事件的传统方式在这里是不可能的

分布式系统的应用——

  • 集群计算——一种将多台计算机耦合在一起工作以实现全球目标的技术。计算机集群就像是一台计算机
  • 网格计算——所有资源汇集在一起,在这种计算中共享,将系统变成强大的超级计算机;本质上。

用例 –

  • 基于 SOA 的系统
  • 多人在线游戏

组织使用 –
苹果、谷歌、脸书。