集群、分布式、微服务的区别和介绍

article/2025/9/1 16:05:49

目录

一、集群的概念

二、为什么要使用集群?

1、集群的特点

2、集群的优势

3、集群分类及不同分类的特点

三、集群分类介绍

1、负载均衡集群

2、高可用性集群

3、高性能计算集群

四、集群与分布式区别

1、分布式图解

2、集群模式图解

五、分布式与微服务区别

1、分布式是否属于微服务?

2、微服务架构


一、集群的概念

服务器集群简称集群是一种服务器系统,它通过一组松散集成的服务器软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台服务器。

集群系统中的单个服务器通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群服务器通常用来改进单个服务器的计算速度和/或可靠性。一般情况下集群

服务器比单个服务器,比如工作站或超级服务器性能价格比要高得多。集群就是一组独立的服务器,通过网络连接组合成一个组合来共同完一个任务。

说的直白点,集群就是一组相互独立的服务器,通过高速的网络组成一个服务器系统,每个集群节点都是运行其自己进程的一个独立服务器。对网络用户来讲,网站后端就是一个单一的系统,协同起来向用户提供系统资源,系统服务。

二、为什么要使用集群?

1、集群的特点

-  高性能performance

一些需要很强的运算处理能力比如天气预报,核试验等。这就不是几台服务器能够搞定的。这需要上千台一起来完成这个工作的。

-  价格有效性

通常一套系统集群架构,只需要几台或数十台服务器主机即可,与动则上百万的专用超级服务器具有更高的性价比。

-  可伸缩性

当服务器负载压力增长的时候,系统能够扩展来满足需求,且不降低服务质量。

-  高可用性

尽管部分硬件和软件发生故障,整个系统的服务必须是7*24小时运行的。

2、集群的优势

-  透明性

如果一部分服务器宕机了业务不受影响,一般耦合度没有那么高,依赖关系没有那么高。比如NFS服务器宕机了其他就挂载不了了,这样依赖性太强。

-  高性能

访问量增加,能够轻松扩展。

-  可管理性

整个系统可能在物理上很大,但很容易管理。

-  可编程性

在集群系统上,容易开发应用程序,门户网站会要求这个。

3、集群分类及不同分类的特点

计算机集群架构按照功能和结构一般分成以下几类:

-  负载均衡集群(Load balancing clusters)简称LBC

-  高可用性集群(High-availability clusters)简称HAC

-  高性能计算集群(High-perfomance clusters)简称HPC

-  网格计算(Gridcomputing)

就集群分类而言, 网络上面一般认为是有三个,负载均衡和高可用集群式我们互联网行业常用的集群架构。

三、集群分类介绍

1、负载均衡集群

负载均衡集群为企业提供了更为实用,性价比更高的系统架构解决方案。负载均衡集群把很多客户集中访问的请求负载压力可能尽可能平均的分摊到计算机集群中处理。

客户请求负载通常包括应用程度处理负载和网络流量负载。这样的系统非常适合向使用同一组应用程序为大量用户提供服务。每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间动态分配,以实现负载均衡。

负载均衡运行时,一般通过一个或多个前端负载均衡器将客户访问请求分发到后端一组服务器上,从而达到整个系统的高性能和高可用性。这样集群有时也被称为服务器群。

一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用性与负载均衡的特点。

负载均衡集群的作用:

a)分担访问流量(负载均衡)

b)保持业务的连续性(高可用)

2、高可用性集群

一般是指当集群中的任意一个节点失效的情况下,节点上的所有任务自动转移到其他正常的节点上,并且此过程不影响整个集群的运行,不影响业务的提供。

类似是集群中运行着两个或两个以上的一样的节点,当某个主节点出现故障的时候,那么其他作为从 节点的节点就会接替主节点,继续上面的任务。从节点可以接管主节点的资源(IP地址,架构身份等),此时用户不会发现提供服务的对象从主节点转移到从节点。

高可用性集群的作用:当一台机器宕机另一台进行接管。比较常用的高可用集群开源软件有:keepalive,heardbeat。

3、高性能计算集群

高性能计算集群采用将计算任务分配到集群的不同计算节点儿提高计算能力,因而主要应用在科学计算领域。

比较流行的HPC采用Linux操作系统和其它一些免费软件来完成并行运算。这一集群配置通常被称为Beowulf集群。这类集群通常运行特定的程序以发挥HPCcluster的并行能力。这类程序一般应用特定的运行库, 比如专为科学计算设计的MPI库。HPC集群特别适合于在各计算节点之间发生大量数据通讯的计算作业,比如一个节点的中间结果或影响到其它节点计算结果的情况。

四、集群与分布式区别

集群是个物理形态,分布式是个工作方式

  • 分布式:一个业务拆分成多个子业务,每个子业务分别部署在不同的服务器上
  • 集群:同一个业务,部署在多个服务器上

1)分布式是指将不同的子业务分布在不同的地方。而集群指的是将几台服务器集中在一起,实现同一业务。

2)分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。

举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。

3)而分布式,从窄意上理解,也跟集群差不多,但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。

4)分布式的每一个节点,都完成不同的子业务,一个节点垮了,那这个业务就不可访问了。

简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

好的设计应该是分布式和集群的结合,先分布式再集群,具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样每个子业务如果出了问题,整个系统完全不会受影响。

1、分布式图解

将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。区别分布式的方式是根据不同机器不同业务。

上面:service A、B、C、D 分别是业务组件,通过API Geteway进行业务访问。

注:分布式需要做好事务管理

2、集群模式图解

 

集群模式是不同服务器部署同一套服务对外访问,实现服务的负载均衡。区别集群的方式是根据部署多台服务器业务是否相同。

注:集群模式需要做好session共享,确保在不同服务器切换的过程中不会因为没有获取到session而中止退出服务。

一般配置Nginx*的负载容器实现:静态资源缓存、Session共享可以附带实现,Nginx支持5000个并发量。

五、分布式与微服务区别

另外,还有一个概念和分布式比较相似,那就是微服务。

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

1、分布式是否属于微服务?

分布式一定是微服务,微服务不一定是分布式

分布式的定义:把一个服务拆分成多个子服务,分别放在不同的服务器上。微服务可以放在同一个服务器上,也可以放在不同的服务器上。

2、微服务架构

微服务的设计是为了不因为某个模块的升级和BUG影响现有的系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。

 

 


http://chatgpt.dhexx.cn/article/M1sR9yvy.shtml

相关文章

理解分布式和集群的区别

简单理解: 分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 一句话,就是:“分头做事”与“一堆人”的区别 图文理解: 详细理解&#x…

什么是分布式和集群?

漫小画 擅长漫话 程小员 擅长编程 某天,下班较早,我正在玩吃鸡,已经到决赛圈了,这时候,女朋友满脸求知欲的朝我走过来。 上次他们都说你给我讲的面向对象太简单了。 那你想怎样?为什么我一玩游戏你就过来问…

分布式和集群区别与分布式的应用场景

分布式是指将一个业务拆分不同的子业务,分布在不同的机器上执行,集群是指多台服务器集中在一起,实现同一业务,可以视为一台计算机,一个云计算平台,就是通过一套软件系统把分布式部署的资源集中调度使用。要…

java集群和分布式 区别_集群和分布式的区别?

集群和分布式有什么区别? 分布式系统: 分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作…

分布式和集群的区别

分布式和集群的区别 分布式 分布式就是将多台服务器集中在一起,每台服务器都实现总体中的不同业务。每台服务器都缺一不可,如果某台服务器发生宕机了,则网站的 部分功能缺失,将导致整体无法运行。 分布式存在的作用主要是将应用…

php常用换行代码

文章目录 一、""二、"\n" 记录一下php换行的代码书写 一、"</br>" "<br/>"浏览器显示换行&#xff0c;源代码显示<br/>例&#xff1a; <?php echo "Test"."<br/>"; echo "one…

php不换行显示,php中\n不换行

本文俺将跟大家介绍两个解决办法。 原因 PHP中默认输出的文档格式是text/html&#xff0c;在html文件中识别\n为空格。 解决办法 办法一 设置content-type 显示的将content-type设置为text/plain&#xff0c;注&#xff1a;设置后将不能使用html标签。 例&#xff1a; /** * 犀…

php 保存文件并换行,php是怎样向文件中写入换行_后端开发

php向文件中写入换行的要领是&#xff1a;1、在变量【$filename】背面加上“\r\n”&#xff1b;2、在代码中写入【file_put_contents($filelist&#xff0c;$filename“\r\n”&#xff0c;FILE_APPEND)】函数。 PHP写文件换行的体式格局 直接在字符串背面加"\r\n"不行…

php换行替换,php怎么替换回车换行

php替换回车的方法&#xff1a;1、使用语句“str_replace(array("/r", "/n", "/r/n"), "", $string);”&#xff1b;2、利用正则表达式&#xff1b;3、通过语句“$str str_replace(PHP_EOL,)”。 PHP替换回车换行的三种方法 一个小小…

关于PHP中echo换行问题

前提&#xff1a;在 PHP 中仅双引号支持字符串转义“\” 但是我发现即使是双引号&#xff0c;\n也没有正常换行 echo "hello \n world";首先&#xff0c;PHP没有任何问题&#xff0c;成功将转移换行符\n解析出来&#xff0c;最初还以为PHP不兼容\n这个语法呢。 检查…

php换行操作总结

作为php的初学者,常常遇到一个容易混淆的小问题, 那就是在php代码中写入\n换行操作符&#xff0c;以为在浏览器那里呈现的输出是换行&#xff0c;没想到却没有。但是写入 br 却顺利通过.导致很多初学者傻傻分不清! 其实<br>和\n都可以,为什么说都可以呢&#xff1f; 这…

php echo换行

<?php $root [1, 2, 2, 3, 4, 4, 3];echo count($root) . "<br>";echo $root[0]; ?>

PHP如何换行

mac下<br>和\n都可以 为什么说都可以呢&#xff1f; 这和php文件的执行方式有关 php文件有两种执行方式&#xff0c;一种是通过网页访问&#xff0c;一种是通过命令提示符 <?phpecho "this is a \n"; echo "test \n";?> ① 通过网页执行 …

php 换行替换成p,php 换行如何替换

php换行替换的方法&#xff1a;1、使用str_replace来替换换行&#xff0c;语法如“str_replace(array("\\r\\n", "\\r", "\\n"), "", $str);”&#xff1b;2、使用正则表达式替换&#xff1b;3、使用php定义好的变量替换。 推荐&#…

如何在PHP中换行

文章目录 正文解决方法方法一&#xff1a;使用 HTML 中的换行符方法二&#xff1a;查看 PHP 解析的源代码 额外说明参考资料 本文是对 PHP 换行符的使用讲解 正文 今天在学习 PHP 的过程中发现 \n 并没有像书上说的正常换行。 举个例子&#xff0c;如下 PHP 代码&#xff1a…

PHP字符串换行

目录直达 PHP字符串中换行方法一&#xff1a;&#xff08;PHP_EOL&#xff09;方法二&#xff1a;&#xff08;\n&#xff08;或 \r\n&#xff09;换行&#xff09;方法三&#xff1a;&#xff08;enter键换行&#xff09;方法四&#xff1a;&#xff08;使用HTML换行符<br …

PHP如何使用换行符?(代码示例)

在PHP脚本中有时需要进行换行输出&#xff0c;那么如何进行换行&#xff1f;下面本篇文章就来给大家介绍一下在PHP中如何使用换行符进行换行&#xff0c;希望对大家有所帮助。 方法一&#xff1a;使用PHP换行符 换行符是用于逃避继续使用相同行的分隔符。这是为了将冗长的线分…

java本地缓存简介

java中的本地缓存&#xff0c;工作后陆续用到,一直想写&#xff0c;一直无从下手&#xff0c;最近又涉及到这方面的问题了&#xff0c;梳理了一下。自己构造单例、guava、ehcache基本上涵盖了目前的大多数行为了。 为什么要有本地缓存&#xff1f; 在系统中&#xff0c;有些数…

【java缓存、redis缓存、guava缓存】java中实现缓存的几种方式

一、通过HashMap实现缓存 这种方式可以简单实现本地缓存&#xff0c;但是实际开发中不推荐使用&#xff0c;下面我们来实现一下这种方式。 首先创建一个管理缓存的类 public class LocalCache {public static HashMap<String,String> cache new HashMap<>();sta…

Java实现一个简单的缓存

cache 阅读原文请访问我的博客BrightLoongs Blog  缓存是在web开发中经常用到的&#xff0c;将程序经常使用到或调用到的对象存在内存中&#xff0c;或者是耗时较长但又不具有实时性的查询数据放入内存中&#xff0c;在一定程度上可以提高性能和效率。下面我实现了一个简单的…