首页 > 解决方案 > 用于微服务的消息队列(如 RabbitMQ)或 Kafka?

问题描述

我们正在启动一个新项目,我们正在评估微服务之间异步通信的技术堆栈?为此,我们正在考虑使用 RabbitMQ 和 Kafka。

任何人都可以阐明在这两者之间做出决定的关键考虑因素吗?

谢谢

标签: apache-kafkarabbitmqmicroservices

解决方案


选择取决于您的微服务到底需要什么。与其他相比,两者都有不同的东西。

简而言之,RabbitMQ

谁是球员:

  1. 消费者
  2. 出版商
  3. 交换
  4. 路线

流程从 Publisher 开始,它向 Exchange 发送消息,Exchange 是一个中间件层,知道将消息路由到队列,消费者可以定义他们从哪个队列消费(通过定义绑定),RabbitMQ 将消息推送到消费者,一旦消费和确认到达,消息就会从队列中删除。该系统中的任何部分都可以横向扩展:生产者、消费者以及 RabbitMQ 本身都可以集群化,并且具有高可用性。

卡夫卡

谁是球员

  1. 消费者/消费者群体
  2. 制片人
  3. 卡夫卡源连接
  4. 卡夫卡水槽连接
  5. 主题和主题分区
  6. 卡夫卡流
  7. 经纪人
  8. 动物园管理员

Kafka 是一个强大的系统,并且在游戏中有多个成员。但是一旦你很好地理解了流程,这将变得易于管理和使用。生产者向主题发送消息记录,主题是发布记录的类别或提要名称,可以对其进行分区,以获得更好的性能,消费者订阅主题并开始从中提取消息,当主题分区,然后每个分区都有自己的消费者实例,我们将同一消费者的所有实例称为消费者组。在 Kafka 中,消息始终保留在主题中,即使它们被消耗(限制时间由保留策略定义)另外,Kafka 使用顺序磁盘 I/O,这种方法提高了 Kafka 的性能并使其成为队列实现中的领导者选项,并且是大数据用例的安全选择。

比较

如果需要,请使用 Kafka

  1. 时间旅行/持久/提交日志
  2. 同一条消息的许多消费者
  3. 高吞吐量
  4. 流处理
  5. 可复制性
  6. 高可用性
  7. 留言顺序

如果需要,请使用 RabbitMq:

  1. 灵活的路由
  2. 优先队列
  3. 标准协议消息队列

欲了解更多信息


推荐阅读