在本文中,我们将尝试理解和比较集中式、分散式和分布式系统的不同方面。
1. 集中式系统
这里先从集中式系统开始,因为它们是最直观、最容易理解和定义的。集中式系统是使用客户端/服务器架构的系统,其中一个或多个客户端节点直接连接到中央服务器。 这是许多组织中最常用的系统类型,其中客户端向公司服务器发送请求并接收响应。
例子
维基百科 – 考虑一个我们向其发送请求的大型服务器,该服务器以我们请求的文章进行响应。假设在维基百科搜索栏中输入搜索词“垃圾食品”。这个搜索词作为请求发送到维基百科服务器(主要位于美国弗吉尼亚州),然后根据相关性回复文章。在这种情况下,我们是客户端节点,维基百科服务器是中央服务器。
集中式系统的特点
- 全局时钟的存在:由于整个系统由一个中心节点(一台服务器/一台主机)和许多客户端节点(一台计算机/一台从机)组成,所有客户端节点都与全局时钟同步(中心节点的时钟) )。
- 一个单一的中央单元:一个单一的中央单元,它服务/协调系统中的所有其他节点。
- 组件的相关故障:中心节点故障导致整个系统故障。这是有道理的,因为当服务器关闭时,没有其他实体可以发送/接收响应/请求。
扩展
只有中央服务器上的垂直扩展是可能的。 水平缩放将与单个中央实体的该系统的单个中央单元特征相矛盾。
集中式系统的组成部分
集中式系统的组成部分是:
- 节点(计算机、移动设备等)。
- 服务器。
- 通信链路(电缆、Wi-Fi 等)。
集中式系统架构
客户端-服务器架构。 为系统中其他节点服务的中心节点是服务器节点,所有其他节点都是客户端节点。
集中式系统的局限性
- 一定限制后无法纵向扩展——限制后,即使增加服务器节点的硬件和软件能力,性能也不会有明显提升,导致成本/收益比
<1
。 - 当流量激增时,可能会出现瓶颈——因为服务器只能拥有有限数量的开放端口,这些端口可以监听来自客户端节点的连接。 因此,当像购物销售这样的高流量发生时,服务器基本上会遭受拒绝服务攻击或分布式拒绝服务攻击。
集中式系统的优势
- 易于物理安全。 凭借它们的位置,很容易保护和服务服务器和客户端节点
- 流畅而优雅的个人体验——客户有一个他使用的专用系统(例如,个人电脑),而公司有一个类似的系统,可以修改以满足定制需求。
- 专用资源(内存、CPU 内核等)
- 在一定限度内对小型系统更具成本效益 – 由于中央系统需要较少的资金来建立,因此在必须构建小型系统时它们具有优势
- 可以进行快速更新——只需更新一台机器。
- 轻松将节点从系统中分离出来。 只需从服务器中删除客户端节点的连接,节点分离。
集中式系统的缺点
- 高度依赖网络连接——如果节点失去连接,系统可能会失败,因为只有一个中心节点。
- 系统没有优雅降级——整个系统突然失效。
- 数据备份的可能性较小。 如果服务器节点发生故障并且没有备份,将立即丢失数据。
- 服务器维护困难——只有一个服务器节点,由于可用性原因,将服务器停机维护是低效和不专业的。 因此,必须即时进行更新(热更新),这很困难并且系统可能会崩溃。
集中式系统的应用
- 应用程序开发——非常容易设置中央服务器并发送客户端请求。 如今,现代技术确实带有默认测试服务器,可以通过几个命令启动。 例如,Express 服务器、Django 服务器。
- 数据分析 – 当所有数据都在一个地方并可供分析时,易于进行数据分析
- 个人计算
用例
- 集中式数据库——一台服务器中的所有数据供使用。
- 单人游戏,如极品飞车、GTA 罪恶都市——一个系统中的完整游戏(通常是个人电脑)。
- 通过部署测试服务器进行应用程序开发,从而轻松调试、轻松部署、轻松模拟。
- 个人电脑。
2. 去中心化系统
这些是其他类型的系统,它们已经获得了很大的普及,主要是因为比特币的大规模炒作。 现在许多组织都在努力寻找此类系统的应用。
在去中心化系统中,每个节点都做出自己的决定。 系统的最终行为是各个节点决策的集合。 请注意,没有单个实体接收和响应请求。
示例
比特币 – 这里以比特币为例,因为它是去中心化系统中最流行的用例。 没有一个实体/组织拥有比特币网络。 该网络是所有节点的总和,这些节点相互通信以维持每个账户持有人拥有的比特币数量。
去中心化系统的特点——
- 缺少全局时钟:每个节点彼此独立,因此它们运行和遵循的时钟不同。
- 多个中央单元(计算机/节点/服务器):多个中央单元可以侦听来自其他节点的连接
- 组件依赖失效:一个中心节点失效导致系统的一部分失效; 不是整个系统
扩展
垂直扩展是可能的。 每个节点都可以为自己添加资源(硬件、软件)以提高性能,从而提高整个系统的性能。
组件
去中心化系统的组成部分是 –
- 节点(电脑、手机等);
- 通信链路(电缆、Wi-Fi等);
去中心化系统架构
- 点对点架构——所有节点都是彼此的对等点,没有一个节点优于其他节点
- 主从架构——一个节点可以通过投票成为主节点并帮助协调系统的一部分,但这并不意味着该节点对它正在协调的另一个节点具有至高无上的地位
去中心化系统的局限性
- 可能会导致企业层面的协调问题——当每个节点都是自己行为的所有者时,很难实现集体任务;
- 不适合小型系统 – 由于成本/收益比低,不利于构建和运营小型分散式系统;
- 无法监管系统上的节点——没有上级节点监督下级节点的行为;
去中心化系统的优势
- 发生性能瓶颈的最小问题——整个负载在所有节点上得到平衡; 导致最小甚至没有瓶颈情况;
- 高可用性——一些节点(计算机、手机、服务器)始终可用/在线工作,从而实现高可用性;
- 更多的自主权和对资源的控制——当每个节点控制自己的行为时,它具有更好的自主权,从而可以更好地控制资源;
去中心化系统的缺点
- 难以完成全局性大任务——没有指挥链来指挥他人执行某些任务;
- 没有监管监督;
- 很难知道哪个节点发生故障——必须对每个节点进行 ping 操作以进行可用性检查,并且必须进行工作分区,以便通过检查预期输出和节点生成的内容来实际找出哪个节点发生故障;
- 很难知道哪个节点响应了——当请求由去中心化系统提供服务时,该请求实际上是由系统中的一个节点提供服务的,但实际上很难找出哪个节点确实为请求提供服务。
去中心化系统的应用
- 专用网络——对等节点相互连接以形成专用网络。
- 加密货币——节点加入成为系统的一部分,在该系统中数字货币的交换没有任何踪迹和位置,谁向谁发送了什么。 然而,在比特币中,我们可以看到比特币的公共地址和转移的数量,但这些公共地址是可变的,因此难以追踪。
用例
- 区块链
- 去中心化数据库——将整个数据库拆分成多个部分,分布到不同的节点进行存储和使用。 例如,一个节点中名称从“A”到“K”,第二个节点中名称从“L”到“N”,第三个节点中名称从“O”到“Z”的记录
- 加密货币
3. 分布式系统
在去中心化系统中,每个节点都做出自己的决定。 系统的最终行为是各个节点决策的集合。 请注意,没有单个实体接收和响应请求。
谷歌搜索系统。每个请求都由数百台计算机处理,这些计算机抓取网络并返回相关结果。 对用户而言,Google 看似是一个系统,但实际上是多台计算机协同工作以完成一项任务(将结果返回给搜索查询)。
分布式系统的特点
- 组件的并发性:节点应用共识协议来就相同的值/事务/命令/日志达成一致。
- 缺少全局时钟:所有节点都维护自己的时钟。
- 组件独立失效:在分布式系统中,节点独立失效,对整个系统没有显着影响。 如果一个节点发生故障,整个系统没有故障节点继续工作。
扩展
水平和垂直扩展是可能的。
分布式系统的组件是 –
- 节点(电脑、手机等);
- 通信链路(电缆、Wi-Fi 等);
分布式系统架构
- 点对点——所有节点都是彼此的对等点,并朝着一个共同目标努力。
- 客户端-服务器——一些节点成为协调者、仲裁者等角色的服务器节点。
- N层架构——应用程序的不同部分分布在系统的不同节点中,这些节点协同工作以充当用户/客户端的应用程序。
分布式系统的局限性
- 难以为系统设计和调试算法。 由于没有公共时钟,这些算法很困难; 因此不能对命令/日志进行时间排序。 节点可能有不同的延迟,在设计此类算法时必须牢记这些延迟。 复杂度随着节点数量的增加而增加。
- 没有通用时钟会导致事件/事务的时间排序困难。
- 节点难以获得系统的全局视图,因此难以根据系统中其他节点的状态做出明智的决策。
分布式系统的优势
- 比集中式系统低延迟 – 分布式系统由于地理分布高而具有低延迟,因此导致获得响应的时间更短
分布式系统的缺点
- 难以达成共识。
- 按绝对时间记录事件的传统方式在这里是不可能的。
分布式系统的应用
- 集群计算——一种将多台计算机耦合在一起工作以实现全球目标的技术。 计算机集群就像一台计算机一样工作。
- 网格计算——所有资源都汇集在一起,在这种计算中共享,将系统变成强大的超级计算机;
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264239.html