游龙战神|「事件驱动架构」何时使用RabbitMQ或 Kafka?( 四 )


监控RabbitMQ有一个用户友好的界面 , 让你监控和处理你的RabbitMQ服务器从一个网络浏览器 。 除了其他功能外 , 队列、连接、通道、交换器、用户和用户权限可以在浏览器中处理(创建、删除和列出) , 并且可以手动监控消息率和发送/接收消息 。
对于Kafka , 我们有很多用于监控的开源工具 , 也有一些商业工具 , 提供管理和监控功能 。 有关Kafka的不同监视工具的信息可以在这里找到 。
推或拉消息从RabbitMQ推送到使用者 。 配置预取限制以防止令使用者不堪重负(如果消息到达队列的速度比使用者处理它们的速度快)是很重要的 。 消费者也可以从RabbitMQ获取消息 , 但不推荐这样做 。 另一方面 , Kafka使用拉取模型 , 如前所述 , 消费者从给定的偏移量请求一批消息 。
许可证RabbitMQ最初由Rabbit Technologies Ltd公司创建 。 该项目于2013年5月成为Pivotal Software的一部分 。 RabbitMQ的源代码是在Mozilla公共许可下发布的 。 牌照从未更改(截至2019年11月) 。
Kafka最初是由LinkedIn创建的 。 2011年 , 它被授予开源地位 , 并移交给了Apache基金会 。 Apache Kafka受Apache 2.0许可证的保护 。 一些经常与Kafka组合使用的组件由另一个名为Confluent Community许可证所涵盖 , 例如Rest Proxy、Schema Registry和KSL 。 这个许可证仍然允许人们免费下载、修改和重新分发代码(非常像Apache 2.0所做的) , 但是它不允许任何人以SaaS的形式提供软件 。
这两个许可证都是免费和开源软件许可证 。 如果Kafka再一次将许可证更改为更严格的东西 , 这就是RabbitMQ的优势所在 , 因为它可以很容易地被另一个AMQP经纪人取代 , 而Kafka不能 。
复杂性就我个人而言 , 我认为开始使用RabbitMQ更容易 , 并且发现它很容易使用 。 正如我们的一位客户所说;
“我们没有花任何时间学习RabbitMQ , 它工作了很多年 。 在DoorDash的高速增长期间 , 它无疑降低了大量的运营成本 。 ”Zhaobang Liu Doordash
在我看来 , Kafka的架构带来了更多的复杂性 , 因为它从一开始就包含了更多的概念 , 比如主题/分区/消息偏移量等等 。 你必须熟悉消费者群体以及如何处理抵消 。
作为Kafka和RabbitMQ操作符 , 我们觉得在Kafka中处理失败有点复杂 。 恢复或修复某些东西的过程通常更耗费时间 , 也更麻烦一些 。
卡夫卡的生态系统Kafka不仅仅是一个经纪人 , 它是一个流媒体平台 , 还有很多工具可以在主发行版之外很容易地与Kafka集成 。 Kafka生态系统由Kafka核心、Kafka流、Kafka连接、Kafka REST代理和模式注册表组成 。 请注意 , Kafka生态系统的大多数附加工具都来自于Confluent , 而不是Apache的一部分 。
所有这些工具的好处是 , 您可以在需要编写一行代码之前配置一个巨大的系统 。
Kafka Connect让您集成其他系统与Kafka 。 您可以添加一个数据源 , 允许您使用来自该数据源的数据并将其存储在Kafka中 , 或者相反 , 将主题中的所有数据发送到另一个系统进行处理或存储 。 使用Kafka Connect有很多可能性 , 而且很容易上手 , 因为已经有很多可用的连接器 。
Kafka REST代理让您有机会从集群接收元数据 , 并通过简单的REST API生成和使用消息 。 可以从集群的控制面板轻松启用该特性 。
常见用例——RabbitMQ vs Apache Kafka关于一个系统能做什么或不能做什么 , 有很多信息 。 下面是两个主要用例 , 描述了我和我们的许多客户是如何考虑和决定使用哪个系统的 。 当然 , 我们也看到过这样的情况:客户在构建一个系统时 , 应该使用一个系统 , 而不是另一个系统 。
RabbitMQ的用例一般来说 , 如果您想要一个简单/传统的发布-订阅消息代理 , 那么RabbitMQ是一个明显的选择 , 因为它的规模很可能比您所需要的更大 。 如果我的需求足够简单 , 可以通过通道/队列来处理系统通信 , 并且不需要保留和流 , 我就会选择RabbitMQ 。