Redis vs Kafka vs RabbitMQ

117 阅读1分钟

在微服务中使用消息队列来进行异步通信是很常见的。队列(broker)确保不同微服务之间的通信是可靠和稳定的,保证消息能被系统进行管理和监控,并且不会丢失。目前开源市场上有很多消息队列可供选择,这些队列在规模(伸缩性)和数据处理能力上各异。这篇博客主要是比较一下目前三个最受欢迎的消息队列:RabbitMQ, Kafka 和 Redis.

微服务通信:同步&异步

微服务间进行通信主要有同步和异步两种方式。在同步通信中,消息发送者只有在收到响应后才能进行下一条消息的发送,相反,异步通信中消息发送是不需要等待响应的,这对于分布式系统非常合适

通信类型的选择应该考虑到不同的因素,例如你是如何构建你的微服务的?目前有什么基础设施?时延多少?规模多大?选择异步通信的原因是很复杂的,并且可能需要额外增加很多组件,但异步通信的优点是盖过缺点的

异步通信的优点

首先第一点,异步通信是非阻塞的,相比于同步操作有了更多的扩展性。其次,当微服务发送崩溃时,异步通信机制提供了各种恢复机制并且在处理崩溃相关错误的能力很强。 (todo)