分布式领域所说的同步和异步通信环境具体是指不同的通信模型,同步通信环境中,发送方需要等待接收方确认才能继续执行下面的操作。异步通信环境中,每个进程都可以独立地执行,并且不需要等待其他进程的响应。
一、分布式领域所说的同步与异步通信环境具体是指什么
在分布式领域,同步和异步通信环境是指不同的通信模型。这两种通信模型都可以用于在分布式系统中进行进程间的通信。
同步通信环境中,发送方需要等待接收方确认才能继续执行下面的操作,直到接收方已经成功接收到消息后,发送方才会被释放继续执行。这意味着,在同步通信环境中,发送方和接收方必须遵循严格的同步规则,以便协同工作和沟通。同步通信环境可以确保消息的可靠性和顺序性,但也可能会导致队列阻塞和死锁等问题。
异步通信环境中,发送方并不需要等待接收方确认,即使接收方并没有响应,发送方仍然可以继续执行下面的操作。在异步通信环境中,每个进程都可以独立地执行,并且不需要等待其他进程的响应。这种自由度可能会带来更高的性能和更好的并行性,但也可能会导致一些不确定性,例如消息丢失或乱序到达等问题。
二、分布式概述
1、什么是分布式系统
多个计算机或设备组合起来一起工作的系统。它的特点是在使用者看来,所有的接口看似都是由一个系统提供的;设备之间需要使用网络通信;某个设备发生故障后,其他的设备可能是可用的。如WEB服务,存储服务和应用服务通过网络传输数据,当存储服务宕机后,应用服务可能还会使用缓存继续提供服务。如电话服务,系统由转机和终端共同提供服务,各个设备通过电话线通信。
网络上很多文章所说的分布式大多数互联网的WEB系统,这是由于活跃着大多是WEB系统相关开发人员。但事实上分布式系统没有那么单一,也没有那么复杂,目前我们所使用的服务基本上都是分布式系统而分布式系统也仅仅是一组设备组成的工作集合。
2、为什么需要分布式系统
从分布式系统的特点说起,如果需要大数据量、高可用、可扩展、高性能,那么就需要分布式系统。如:
- 电话系统使用分布式设计,目的是实现系统的灵活性和可用性。
- WEB系统使用分布式设计,目的是提高可用性和并发以及性能。
3、什么是分布式技术
多个计算机组合使用时,会面临一些问题,如网络通信、设备故障、并发等问题,而分布式技术就是为了解决这些问题的。
- RPC 技术解决多个设备的通信问题。
- 复制技术解决数据的备份问题和提升性能和并发。
- 分片技术解决数据存储量问题和提升性能。
- 分布式锁解决多个计算机组合时的并发读写问题。
- 分布式缓存解决多个应用服务时本地缓存的一致性问题。
- 分布式事务解决多个设备行为的一致性和隔离性问题。
4、分布式系统的演变
- 集中式系统
- 非集中式系统
- 混合系统
5、分布式系统的优缺点
优点:
- 提升系统并发、性能、可用性、扩展性、伸缩性等能力;
- 节省成本,利用有限的计算机资源提供更好的服务;
缺点:
- 多个设备的操作一致性和并发问题:用户一个操作需要多个设备的多个操作时,如何实现操作失败后各个设备的回滚和并发操作时的问题。通常使用分布式事务技术尽可能的解决,较好的方式还是避免。
- 多个设备的数据一致性问题:无状态服务的复制无需关注,但有状态服务的复制由于通信延迟和并发原因会使得多个副本上数据不一致。通常使用一致性算法解决(Raft)。
- 多个设备的通信问题:由于需要通络进行通信,因此当网络故障或波动后就会造成设备之间的通信断开问题。通常使用重试和Fullback机制等解决。
- 设备的故障率问题:集中式系统只有一台设备,可以通过优化环境减小故障率,而分布式系统中多个设备组合使用加大了故障率。通常使用复制技术提升系统高可用。
6、分布式系统的类型
实际上,一个系统可能不仅仅是由某一类型的分布式系统独立实现的,很可能是多个分布式类型的系统之间的相互组合,又构成一个大的分布式系统。
如WEB服务中,本身是一个分布式信息系统,但其中可能使用了分布式存储系统中的数据管理系统和消息系统,还可能使用了分布式计算系统用于实现数据的计算与分析。
- 分布式存储系统
- 分布式计算系统
- 分布式信息系统
- 分布式嵌入系统
7、分布式系统面临的挑战
分布式系统需要大量机器协作,面临诸多的挑战:
- 异构的机器与网络:分布式系统中的机器,配置不一样,其上运行的服务也可能由不同的语言、架构实现,因此处理能力也不一样;节点间通过网络连接,而不同网络运营商提供的网络的带宽、延时、丢包率又不一样。怎么保证大家齐头并进,共同完成目标,这是个不小的挑战。
- 普遍的节点故障:虽然单个节点的故障概率较低,但节点数目达到一定规模,出故障的概率就变高了。分布式系统需要保证故障发生的时候,系统仍然是可用的,这就需要监控节点的状态,在节点故障的情况下将该节点负责的计算、存储任务转移到其他节点。
- 不可靠的网络:节点间通过网络通信,而网络是不可靠的。可能的网络问题包括:网络分割、延时、丢包、乱序。相比单机过程调用,网络通信最让人头疼的是超时:节点A向节点B发出请求,在约定的时间内没有收到节点B的响应,那么B是否处理了请求,这个是不确定的。
延伸阅读1:同步的理解
同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;同步就相当于是 当客户端发送请求给服务端,在等待服务端响应的请求时,客户端不做其他的事情。当服务端做完了才返回到客户端。这样的话客户端需要一直等待。用户使用起来会有不友好。