系统大PK:集中式VS分布式,计算机世界的格斗之战

什么是集中式系统?

集中式系统是指把整个系统的所有功能,比如数据库、缓存等这些全都部署在一起,然后通过整套系统对外提供服务。但是集中式系统存在大而复杂、难以维护、容易发生单点故障、扩展性比较差等问题。然而这些问题在分布式系统中就可以很好地解决。

什么是分布式系统?

分布式系统是相对相对于集中式系统而言的,分布式系统是指将一个集中式的系统拆分成多个系统,然后每一个系统单独对外提供部分功能,整个分布式系统整体对外提供一整套服务。但是对于访问分布式系统的用户来说,其感知就如同在访问一台计算机一样。

分布式系统即通过利用多台普通计算机(相对于昂贵的大型机)组成分布式集群,对外提供系统服务。随着计算机台数的增加,CPU、内存、存储资源等计算机资源也不断变多,该系统可以处理的并发访问量也就越大,但是随之而来也带来了一些问题,由于是集群部署,不是在一台机子上,所以该系统可能存在许多问题,如网络通信延迟、数据一致性等问题。

这里我们拿一个电商网站来举例(主要是电商网站一般功能比较齐全,很多场景都能学习到),我们这里把这个电商系统拆分成多个子系统,比如订单系统、购物车系统、物流系统、支付系统等。我们把不同的模块部署到不同的机器上,各个模块之间通过RPC(Dubbo、gRPC)即远程服务调用等方式进行通信,然后以一个分布式系统的方式对外提供服务。

分布式与集群之间的区别?

分布式(Distributed) 是指在多台不同的服务器中部署不同的服务模块, 通过远程调用的方式相互之间进行协同工作,然后对外提供服务。

集群(cluster) 是指在多台不同的服务器中部署相同的应用或者服务模块,构成一个集群,通过请求负载均衡的方式对外提供服务。

那如何理解集群与分布式之间的区别呢?你可以通过一个案例来理解,集群的话就是一个组织里的所有人都干同一件事情,比如,百度搜索,这个在每个人的电脑上其都是一样的,主要负责搜索的业务,而分布式就是指一个团队中每部分人负责一部分的内容,比如阿里里面,有些人负责淘宝业务的内容,有些人负责阿里云业务·······每部分人负责的业务有所差异,这种就是分布式。

分布式系统的特征

分布式系统需要各个主机之间通信和协调主要通过网络进行,所以,分布式系统中的计算机在空间上几乎没有任何限制,这些计算机可能被放在不同的机柜上,也可能被部署在不同的机房中,还可能在不同的城市中,对于大型的网站甚至可能分布在不同的国家和地区。

但是,无论空间上如何分布,一个标准的分布式系统应该具有以下几个主要特征:

  1. 分布性

分布式系统中的多台计算机之间在空间位置上可以随意分布,系统中的多台计算机之间没有主、从之分,即没有控制整个系统的主机,也没有受控的从机。

  1. 透明性

系统资源被所有计算机共享。每台计算机的用户不仅可以使用本机的资源,还可以使用本分布式系统中其他计算机的资源(包括CPU、文件、打印机等)。

  1. 同一性

系统中的若干台计算机可以互相协作来完成一个共同的任务,或者说一个程序可以分布在几台计算机上并行地运行。

  1. 通信性

系统中任意两台计算机都可以通过通信来交换信息。

相比集中式系统,分布式系统有什么优势与不足?

和集中式系统相比,分布式系统的性价比更高、处理能力更强、可靠性更高、也有很好的扩展性。但是,分布式在解决了网站的高并发问题的同时也带来了一些其他问题。

  1. 分布式的必要条件就是网络,这可能对性能甚至服务能力造成一定的影响。
  2. 一个集群中的服务器数量越多,服务器宕机的概率也就越大。
  3. 由于服务在集群中分布式部署,用户的请求只会落到其中一台机器上,所以,一旦处理不好就很容易产生数据一致性问题。
相关推荐
yx9o3 小时前
Kafka 源码 KRaft 模式本地运行
分布式·kafka
Gemini19954 小时前
分布式和微服务的区别
分布式·微服务·架构
G丶AEOM4 小时前
分布式——BASE理论
java·分布式·八股
P.H. Infinity10 小时前
【RabbitMQ】03-交换机
分布式·rabbitmq
龙哥·三年风水12 小时前
群控系统服务端开发模式-应用开发-个人资料
分布式·php·群控系统
funnyZpC14 小时前
quartz集群增强版🎉
java·分布式·开源·集群·定时任务
明达技术15 小时前
工业4.0时代下的分布式IO模块
分布式
天冬忘忧16 小时前
Spark 程序开发与提交:本地与集群模式全解析
大数据·分布式·spark
一叶飘零_sweeeet17 小时前
Dubbo 构建高效分布式服务架构
分布式·架构·dubbo
孤蓬&听雨18 小时前
RabbitMQ自动发送消息工具(自动化测试RabbitMQ)
分布式·测试工具·自动化·rabbitmq·自动发送消息