简单聊聊分布式和集群

前言

分布式和集群,我们都听的比较多,分布式系统和集群的概念对于刚进入职场的小伙伴可能不是很清楚,这篇文章我们就一起看看两者到底是什么,有什么区别。

什么是分布式系统?

先看下书面解释:
分布式系统(Distributed System)是由多个相互独立的计算节点组成的系统,这些节点通过网络相互通信与协作,以实现共同的目标。分布式系统的设计思想是将计算任务分散到不同的节点上,每个节点负责特定的子任务,从而提高系统的整体性能、可靠性和可扩展性。

书面解释看完了也就看完了,我还是比较喜欢大白话,那我们就大白话来解释一下:
假设我们有一个电商系统,早期时候我们将它部署到一台服务器上,如下图所示:
在这里插入图片描述
这个系统运行在一个服务器节点上,里面包含订单(order)服务、用户(user)服务、商品(item)服务。
这种情况下存在什么问题呢? 就是所有的计算和任务都依赖于单个节点(理解为部署的这台服务器)的性能,那一台服务器的处理能力肯定是有上限的,一旦达到上限,系统的整体性能就会受到限制,难以进一步扩展,而且扩展很麻烦。同时,如果这台服务器宕机,那么整个系统将不能使用。也就是我们说的单点故障。还有其他问题,我就不一一举例了。

那怎么解决呢?
现在,我们将系统拆分成各个子系统;这时电商系统就被拆分为:订单(order)子系统、用户(user)子系统、商品(item)子系统,他们共同协作完成电商系统的完整服务,如下图:
在这里插入图片描述
每个子系统部署在独立的服务器上,他们共同协作以提供完整功能服务。
通过以上介绍,总结出以下特点:

  • 独立性:每个节点都是独立的计算单元,拥有自己的处理器、内存和存储
  • 通信:节点之间通过网络通信进行数据交换和协作
  • 分布性:任务和数据分散在不同节点上进行处理
  • 容错性:系统能容忍部分节点的故障,通过冗余和数据副本保证系统的可靠性
  • 可扩展性:通过增加更多的节点,系统可以轻松扩展处理能力

接下来,我们看看集群的概念

什么是集群?
集群(Cluster)是由多台计算机通过高速网络连接构成的一个整体系统,这些计算机共同工作以提供高性能、高可用性的服务。集群系统的设计思想是通过将多个计算机资源整合起来,共同完成任务,从而实现负载均衡、故障转移和高可用性。
大白话说就是,把一个完整的系统复制多份,部署在不同的节点(服务器)上,如下图所示:

在这里插入图片描述
每一个节点上,都是完整的系统,能提供完整的服务。这个就是集群啦。
特点如下:

  • 高可用性:通过冗余配置和故障转移机制,保证系统的连续运行。
  • 高性能:通过并行处理,提高系统的整体性能。
  • 负载均衡:将任务均匀分配到各个节点上,避免单点过载。
  • 集中管理:通常通过集群管理软件统一管理各个节点。

那二者有什么区别?
往下看:

分布式系统与集群的区别

设计目标:

  • 分布式系统:侧重于任务和数据的分散处理,提高系统的扩展性和容错性。
  • 集群:侧重于高可用性和高性能,通过节点协同工作实现负载均衡和故障转移。

节点关系:

  • 分布式系统:节点相对独立,具有更高的自治性和独立性。
  • 集群:节点紧密耦合,通过统一的集群管理软件进行协调和管理。

应用场景:

  • **分布式系统:**适用于需要大规模数据处理和存储的场景,如分布式数据库和文件系统。
    **集群:**适用于需要高性能计算和高可用服务的场景,如科学计算和服务器集群。

总结

分布式系统和集群都是通过多个节点协同工作来提高系统性能和可靠性的技术,但它们在设计目标、节点关系和应用场景上有所不同。分布式系统侧重于任务和数据的分散处理,而集群侧重于通过节点协同工作实现高可用性和高性能。在实际应用中,常常需要根据具体需求选择合适的架构,以充分发挥系统的优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/706535.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin核心编程知识点-02-面向对象

文章目录 1.类和构造方法1.1.Kotlin 中的类及接口1.1.1.Kotlin 中的类1.1.2.可带有属性和默认方法的接口 1.2.更简洁地构造类的对象1.2.1.构造方法默认参数1.2.2.init 语句块1.2.3.延迟初始化:by lazy 和 lateinit 1.3.主从构造方法 2.不同的访问控制原则2.1.限制修…

一种新型多任务模型:模仿皮肤科医生进行临床图像中皮肤疾病的准确鉴别诊断

文章目录 A Novel Multi-task Model Imitating Dermatologists for Accurate Differential Diagnosis of Skin Diseases in Clinical Images摘要方法实验结果 A Novel Multi-task Model Imitating Dermatologists for Accurate Differential Diagnosis of Skin Diseases in Cli…

C语言 | Leetcode C语言题解之第86题分隔链表

题目: 题解: struct ListNode* partition(struct ListNode* head, int x) {struct ListNode* small malloc(sizeof(struct ListNode));struct ListNode* smallHead small;struct ListNode* large malloc(sizeof(struct ListNode));struct ListNode* …

Linux基础之进程的优先级

目录 一、进程优先级的概念 二、进程优先级的查看 三、怎么修改进程优先级 四、进程饥饿 一、进程优先级的概念 cpu资源分配的先后顺序,就是指进程的优先权(priority)。优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linu…

react18【系列实用教程】useReducer —— 升级版的 useState (2024最新版)

useReducer 可看做升级版的 useState ,其强大之处在于,可以自定义复杂的响应式变量修改逻辑。 useReducer 语法 useReducer 是 hook 函数 第一个参数(必要): 自定义的 reducer 函数(详见下文介绍&#xff…

【算法】网络图中的dfs

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、单词搜索二、黄金矿工三、不同路径 |||四、图像渲染五、岛屿数量六、岛屿的最大面积七、被围绕的区域…

从零入门激光SLAM(十七)——SLAM中为什么用ESKF误差卡尔曼滤波器

上一节,介绍了卡尔曼滤波的基本原理,但在SLAM中却使用ESKF,让我们一起看看具体的原因是什么吧 一、误差卡尔曼滤波器ESKF(Error State Kalman Filter) 1.1动机 在常规的卡尔曼滤波器中,需要假定系统的状态服从高斯分布&#xf…

3D Slicer:从入门到精通(六)——图像分割

图像分割 文章目录 图像分割基本概念分割和段表示方式二进制标签图表示 分割模块教程 基本概念 图像分割(也称为轮廓绘制或注释)是一种在图像中划定区域的程序,通常对应于解剖结构、病变和各种其他对象空间。它是医学图像计算中非常常见的程…

衡量代理IP的因素

当你随便点开百度搜索IP代理,然后你就会看到,五花八门的IP代理商出现在视线中。再点进去链接,我们会发现,大多数IP代理商提供的基础IP服务都大差不差,东家这样说,西家又那样说,尽管我们看的头昏…

二进制部署Kubernetes集群——单Master和Node组件

前言 本文将介绍如何使用二进制文件手动搭建 Kubernetes v1.20 集群。通过这种方法,我们可以更好地理解 Kubernetes 的内部工作原理,并具备更大的灵活性和控制权。下面将逐步构建 Kubernetes 集群,并进一步了解其各个组件之间的交互和配置。…

Chirpstack配合网关与lora设备通信

之前的章节讲过chirpstack的下载和安装部署,这节算是后续,利用chirpstack和lora设备做通信, 首先开启chirpstack,并登录,登录完成之后需要添加网关和设备,添加网关也就是Gatway,所以点开左侧的G…

路由交换技术-静态路由 + 动态路由

实验目的与要求 1、掌握单臂路由配置直连路由 2、掌握静态路由配置方法 3、掌握动态路由配置方法 4、理解OSPF链路状态算法的含义 5、掌握DNS、web等网络服务的配置 实验原理与内容 原理: 1、静态路由与默认静态路由 路由器可通过两种方式获知远程网络: 手动 - 远程…