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


我选择RabbitMQ主要有两种情况;对于长时间运行的任务 , 当我需要运行可靠的后台作业时 。 以及应用程序内部和应用程序之间的通信和集成 。 e作为微服务之间的中间人 , 系统只需通知系统的另一部分开始处理一项任务 , 比如在网上商店的订单处理(下订单、更新订单状态、发送订单、付款等) 。
长时间运行的任务消息队列支持异步处理 , 这意味着它们允许您在不立即处理消息的情况下将消息放入队列 。 RabbitMQ非常适合长时间运行的任务 。
在我们的RabbitMQ初学者指南中可以找到一个例子 , 它遵循一个经典的场景 , 即一个web应用程序允许用户上传信息到一个web站点 。 该网站将处理这些信息 , 生成PDF , 并通过电子邮件发送给用户 。 完成本例中的任务需要几秒钟 , 这就是为什么要使用消息队列的原因之一 。
我们的许多客户让RabbitMQ队列充当事件总线 , 使web服务器能够快速响应请求 , 而不是被迫当场执行计算密集型任务 。
【游龙战神|「事件驱动架构」何时使用RabbitMQ或 Kafka?】以Softonic为例 , 他们在一个每月支持1亿用户的基于事件的微服务体系结构中使用了RabbitMQ 。
微服务架构中的中间人RabbitMQ也被许多客户用于微服务体系结构 , 作为应用程序之间通信的一种方式 , 避免了传递消息的瓶颈 。
例如 , 您可以阅读Parkster(一个数字停车服务)如何使用RabbitMQ将一个系统分解为多个微服务 。
MapQuest是一个大方向服务 , 每月支持2310万独立移动用户 。 地图更新被发布到组织和公司的个人设备和软件上 。 这里 , RabbitMQ主题分布在适当数量的队列上 。 数千万用户通过该框架接收到准确的企业级地图信息 。
Apache Kafka的用例通常 , 如果您需要一个用于存储、读取(重复读取)和分析流数据的框架 , 请使用Apache Kafka 。 它非常适合被审计的系统或需要永久存储消息的系统 。 这些也可以分解为两个主要用例 , 用于分析数据(跟踪、摄取、日志记录、安全等)或实时处理 。
数据分析:跟踪、摄入、日志记录、安全在所有这些情况下 , 需要收集、存储和处理大量的数据 。 需要洞察数据、提供搜索功能、审计或分析大量数据的公司证明使用Kafka是合理的 。
据Apache Kafka的创建者说 , Kafka最初的用例是跟踪网站活动 , 包括页面浏览、搜索、上传或用户可能采取的其他行动 。 这种类型的活动跟踪通常需要非常高的吞吐量 , 因为会为每个操作和每个用户生成消息 。 许多这些活动——实际上是所有的系统活动——都可以存储在Kafka中并根据需要进行处理 。
数据生产者只需要将数据发送到单个位置 , 而后端服务主机可以根据需要使用数据 。 主要的分析、搜索和存储系统都与Kafka集成 。
Kafka可以用来将大量的信息流传输到存储系统中 , 而且这些天硬盘空间的花费并不大 。
实时处理Kafka作为一个高吞吐量分布式系统;源服务将数据流推入目标服务 , 目标服务实时拉出数据流 。
卡夫卡可以在系统处理许多生产者实时与少数消费者;例如 , 财务IT系统监控股票数据 。
从Spotify到荷兰合作银行的流媒体服务通过Kafka实时发布信息 。 实时处理高吞吐量的能力增强了应用程序的能力 。, 使得这些应用程序比以往任何时候都更强大 。
CloudAMQP在服务器设置的自动化过程中使用了RabbitMQ , 但我们在发布日志和指标时使用了Kafka 。
RabbitMQApache Kafka是什么RabbitMQ是一种可靠、成熟、通用的消息代理Apache Kafka是一种为高接入数据流和重放而优化的消息总线主要用途用于应用程序内部和应用程序之间通信和集成的消息队列 。 用于长时间运行的任务 , 或需要运行可靠的后台作业时 。 用于存储、读取(重复读取)和分析流数据的框架 。 许可证开放源码:Mozilla公共许可证开放源码:Apache License 2.0Written inErlangScala (JVM)