Kafka进阶
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.1 同步消息机制与异步消息机制

1. 同步消息机制

两个通信服务之间必须进行同步,而且两个通信服务必须都是正常的并一直处于运行状态的,随时做好通信准备,发送程序在向接收程序发送消息后,阻塞自身与其他应用的通信进程,等待接收程序返回消息,然后继续执行下一个业务。

图1.2展示了一个同步消息系统的典型架构。

图1.2 同步消息系统

2. 异步消息机制

两个通信应用之间可以不用同时在线等待,任何一方只处理自己的业务而不用等待对方的响应。发送程序在向接收程序发送消息后,不用等待接收程序的返回消息,就可以继续执行下一个业务。

图1.3展示了一个异步消息系统的典型架构。

图1.3 异步消息系统

下面通过具体的例子来说明同步消息机制和异步消息机制的区别。

首先,我们来看同步消息机制的一个例子。在付款的时候,如果A已经扫码付款了,没有收到支付成功的状态提示,就会想自己是否已经支付成功了呢?A就会一直处于等待状态,直到系统反馈一个消息,要么是支付成功要么是支付失败才会进行后续的操作,这就是同步消息机制。

那么什么是异步消息机制呢?比如A给B发送一封电子邮件,A不需要知道B是否收到了,A只是把自己的信息传达出去,这样的场景就是异步消息。因为在这个过程中,A在乎的是把某件事情传达出去,而不必在乎其他人的状态,比如张贴告示也是这样,不需要知道每个人都是否知道这则告示的内容,而是张贴出去就可以了。

在了解了同步消息机制和异步消息机制以后,它们各自有什么样的优点和缺点呢?异步消息传递有一些关键优势。它能够提供灵活性和更高的可用性。系统对信息采取行动的压力较小,或者以某种方式做出响应。另外,一个系统被关闭不会影响另一个系统。例如,你可以发送数千封电子邮件给你的朋友,而不需要他们回复你。

异步消息传递的缺点是缺乏直接性,没有直接的相互作用。思考一下你与你的朋友在即时通话或视频聊天,除非你的朋友及时回复你,否则这不是即时通话或视频聊天,这正是同步消息传递的优点。另一方面,异步消息传递允许更多的并行性。由于进程不阻塞,所以它可以在消息传输时进行一些计算。