【初出江湖】大白话解释集中式、分布式、微服务的区别?

什么是集中式?

所谓集中式计算系统,是指所有计算都由位于同一位置的单台计算机来执行。(集中式系统就是把所有的程序、功能都集中到一台主机上,从而往外提供服务的方式)。集中式和分布式系统的主要区别在于系统节点之间的通信模式。集中式系统的状态控制在中央节点内,客户端以定制方式访问此节点。集中式系统的各个节点都要访问此中央节点,因此可能会导致网络拥塞和速度缓慢集中式系统存在单点故障,而分布式系统则没有单点故障。左:集中式;右:分布式。
在这里插入图片描述
比如,我们主机的PC电脑,或者手机,我们把各种软件都安装在一台机子上,当我需要什么功能,我就从这台机子上去获取。再比如,我们在学生时代做的课程设计或者开发时的小应用,我们把Web服务器、数据库等都会安装到一台电脑上。好处是,易于理解、方便维护,想要的东西我都放到了一个地方,东西好找啊。当然弊端也是显而易见的,如果这台机子崩了,或者硬盘坏了,那相当与整个系统就奔溃了,而且如果备份也是在这个硬盘上,那相当于招了灭顶之灾。

什么是分布式?

分布式系统由在网络上分散的多个计算单元组成的集合,这些单元利用跨多个独立计算单元的计算资源来实现共同的目标,以提供一种看似单一的协调服务。分布式系统旨在消除系统的瓶颈或中心故障点。广义上就是 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
在这里插入图片描述
狭义上,从进程角度看,两个程序分别运行在两个台主机的进程上,它们相互协作最终完成同一个服务(或者功能),那么理论上这两个程序所组成的系统,也可以称作是“分布式系统”。当然,这个两个程序可以是不同的程序,也可以是相同的程序。如果是相同的程序,我们又可以称之为“集群”。所谓集群,就是将相同的程序,通过不断横向扩展,以提高服务能力的方式。

毫无疑问,分布式系统对于集中式系统而言,在实现上会更加复杂。分布式系统将会是更难理解、设计、构建 和管理的,同时意味着应用程序的根源问题更难发现。

分布式系统的架构一般构成模块

分布式系统的架构

分布式的优点

项目描述
经济微处理机提供了比大型主机更好的性能价格比
速度分布式系统总的计算能力比单个大型主机更强
固有的分布性一些应用涉及到空间上分散的机器
可靠性如果一个机器崩溃,整个系统还可以运转
渐增计算能力可以逐渐有所增加

分布式的缺点

项目描述
软件分布式系统开发的软件还很少
网络网络可能饱和和引起其它的问题
安全容易造成对保密数据的访问

什么是分布式集群?

集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的是一组集群服务器。一组集群服务器包括一堆做做同一件事的服务器,这些机器可能需要统一协调管理,可以分布在一个机房,也可以分布在全国全球各个地区的多个机房。比如下面的Redis集群,每个客户端请求的方式都是一样的,但是背后是很多台机器在协同工作,每台机器干的事情都是一样的(存储和操作数据),只不过通过分片机制不同机器上存储的数据不一样,这样可以分散风险,假如有某个节点的机器挂了也只会影响部分数据。
在这里插入图片描述

什么是微服务?

微服务架构是一种将应用程序作为一组小型服务的设计方法,每个服务运行在其独立的进程中,并通过轻量级机制(TCP或者HTTP)进行通信。

微服务架构是一种分布式系统,因为它会将应用分解为单独的组件或“服务”。例如,微服务架构可能具有与业务功能(支付、用户、产品等)相对应的服务,其中各个对应组件负责相关职责的业务逻辑。因此,系统拥有服务的多个冗余副本,服务便不会出现集中故障点。


微服务里面的每个模块都可以是一个分布式集群
在这里插入图片描述


Spring Cloud微服务治理架构图
在这里插入图片描述

微服务和分布式系统有什么主要区别?

微服务是一种架构风格,它将应用程序分解为一组小的、独立的服务,每个服务都有特定的业务功能。分布式系统则是指多个网络中的计算机协同工作以完成共同的任务或目标。

微服务架构与分布式系统在开发过程中有何不同?

微服务架构强调服务的独立部署、扩展和灵活性,每个服务通常由不同的团队负责。而分布式系统更注重不同计算机之间的通信和协作。

为什么选择微服务架构而不是传统的分布式系统?

微服务架构提供了更好的模块化、更高的灵活性和可扩展性,允许快速开发和部署独立服务。它也有助于更好的错误隔离和容错,适合快速迭代的开发环境。微服务架构适用于需要快速迭代和独立扩展不同业务功能的应用程序。

在这里插入图片描述

  • 42
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java分布式事务是指在分布式系统中,多个独立的服务或应用之间进行数据操作时,保证数据的一致性和可靠性的一种机制。简单来说,就是多个服务或应用在进行数据操作时,要么全部成功,要么全部失败,不会出现部分成功部分失败的情况。 在分布式系统中,每个服务或应用都有自己的数据库,它们之间需要进行数据的读取和写入。当多个服务或应用同时进行数据操作时,可能会出现以下问题: 1. 数据不一致:由于网络延迟或其他原因,某个服务或应用的数据操作成功了,但其他服务或应用的数据操作失败了,导致数据不一致。 2. 并发冲突:多个服务或应用同时对同一份数据进行读写操作,可能会导致数据冲突和错误。 为了解决这些问题,Java分布式事务引入了一些机制和技术,例如: 1. 两阶段提交(Two-Phase Commit):在分布式事务中,引入一个协调者(Coordinator)来协调各个参与者(Participant)的数据操作。在第一阶段,协调者询问各个参与者是否可以提交事务;在第二阶段,如果所有参与者都同意提交,则协调者通知各个参与者提交事务;如果有任何一个参与者不同意提交,则协调者通知各个参与者回滚事务。 2. 分布式事务消息:使用消息队列来实现分布式事务,将数据操作和消息发送放在同一个事务中,保证数据和消息的一致性。 3. 分布式锁:通过分布式锁来控制对共享资源的访问,保证在同一时间只有一个服务或应用可以对资源进行操作,避免并发冲突。 以上是对Java分布式事务的简单介绍,希望能帮到你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值