异步消息传递
问题说明
微服务架构将应用程序构建为一组松散耦合的微服务,每个服务都可以以敏捷的方式独立开发,以实现持续交付/部署。 微服务处理来自客户端的请求,并且通常需要与其他微服务通信来满足请求。 所以就需要进程间通信协议。
解决方案
我们可以使用异步消息模式进行服务间通信,因为使用同步通信会导致服务的紧密耦合,并且还要求客户端和服务在请求期间都可用。
使用异步消息传递,服务可以通过消息传递通道交换消息来进行通信。 以下是异步消息通信的一些不同方式。
请求/同步响应 − 在此方法中,服务向另一个服务发出请求并期望立即得到答复。
通知 − 在此方法中,服务向收件人发送消息,但不期望任何响应。 预计收件人也不会发送回复。
请求/异步响应 − 在此方法中,服务向另一个服务发出请求并期望在合理的时间范围内得到答复。
发布/订阅 − 在此方法中,服务向零个或多个收件人发布消息。 订阅该消息的服务也会收到相同的消息。 无需回复。
发布/异步响应 − 在此方法中,服务向零个或多个收件人发布消息。 订阅该消息的服务也会收到相同的消息。 其中一些发回确认/回复。
示例
RabbitMQ 和 Apache Kafka 是微服务领域异步消息传递的好例子。