作者:禅与计算机程序设计艺术
1.背景介绍
消息驱动编程(Message-driven programming)和事件驱动编程(Event-driven programming)是两种分布式计算编程模式。由于通信的延迟性、网络带宽等因素的影响,分布式应用程序的开发通常采用异步通信方式,即通过事件、信号或者广播的方式来同步处理应用中的不同组件。消息驱动编程和事件驱动编程都属于并行计算模型,这两个概念可以帮助我们更好的理解Go语言中消息驱动和事件驱动编程的特性。
消息驱动编程模型
消息驱动编程模型主要有两种类型:命令式消息模型(Command and Message)、幂等消息模型(Idempotent message)。
命令式消息模型
命令式消息模型又称为基于命令的消息传递模型或请求响应型消息模型。这种模型下,客户端向服务器发送一条命令,服务器根据命令对数据进行操作并返回结果给客户端。命令式消息模型与HTTP协议很相似,它允许客户端向服务器发送一个请求,服务器按照其指令对数据进行操作并返回响应。 如上图所示,客户端向服务器发送一条命令,服务器执行命令后将结果通过发布订阅机制通知所有关注该命令的客户端。在这种模型下,客户端不需要一直等待服务端的响应,只需要关注自己的接收队列即可,因此被动地等待服务端的响应,称之为命令式消息模型