今天有很多的消息传递技巧, 数不清的 ESBs, 和近100 iPaaS供给商在市场上。 天然,这导致了有关若何为您的须要-特别是那些已经投资在一个特定的选择,选择精确的消息传递技巧的问题 。我们批发选择吗? 用精确的对象做精确的工作?我们有没有精确地安排手头的工作以知足营业需求? 鉴于此,对我来说,合适的对象是什么? 更糟糕的是,详尽的市场分析可能永远无法完成,但因为集成代码的平均寿命,尽职查询拜访是至关重要的。
这篇文┞仿致力于赐与潜意识,表意识 一些公平的┞峰酌,大年夜今天最现代,最受迎接的选择: RabbitMQ和Apache Kafka。 每个都有本身的来源故事, 设计意图,应用案例,被应用, 整合才能,和开辟人员的经验。对于任何的软件,来源揭示总体设计意图,都是一个很好的起点。
RabbitMQ是一个通用消息传递解决筹划,平日用于, 当用户等待结不雅时,许可web办事器快速响应请求,而不是被迫履行重资本法度榜样。也有利于分发消息到多个花费者进行花费, 或在高负荷前提下均衡worker之间的荷载 (20k+/sec)。当你的需求超出吞吐量, RabbitMQ有很多供给: 特点,靠得住消息传递, 路由,结合会, HA, 安然, 治理对象和其他特点。让我们看看一些最合适RabbitMQ的场景,比如:
- 您的应用法度榜样须要,与现有协定组合,比如AMQP 0-9-1, STOMP, MQTT, AMQP 1.0.
- 你须要成熟,轻易懂得的一致性包管,为您的信息传递。
- 你的应用须要多种类型的点对点协定,请求/应答,和宣布/订阅 消息.
- 复杂的花费者路由,整合多个办事/应用法度榜样,应用难以控制的路由逻辑。
- 当与你现有的 IT 基本举措措施整合很重要, RabbitMQ 更好。
来源
RabbitMQ 是一个 “传统的” 消息代劳,实现多种消息传递协定。 是第一个开源消息代劳,达到合理的功能程度, 客户端库,开辟对象,和质量文档。 RabbitMQ 最初开辟来实现AMQP,具有强大年夜路由功能的消息传递的开放式路由协定。尽管Java有消息传递标准像JMS,但对须要传递消息的分布式非java应用没有赞助,这严重限制了很多集成筹划,微办事或单组件。跟着AMQP的到来,跨说话的灵活性,成为真正的开源消息代劳。
仁攀类若何做出决定计划? 在日常生活中,情感老是短路身分,导致在复杂或胜过性的决定上扣动扳机。但对于做有经久影响,复杂决定计划,的表意识,弗成能是纯粹的冲动。高机能的人平日应用断路器,“本能,” “直觉,” 或其他的情感,只有一次他们的表意识,潜意识接收了作出决定所需的所有事实。
Apache Kafka是用Scala开辟的,起先应用于 LinkedIn ,作为一种简化Hadoop 大年夜 Apache Flume提撤消息的筹划。 大年夜复数数据源花费和临盆的数据,为每个源和目标配对编写自力的数据管道。Kafka 赞助 LinkedIn 标准化数据管道并许可将数据大年夜每个体系中掏出一次并存入每个系同一次,使管道 (和操作) 更简单。Kafka是如今Apache Software软件基金会的通用设备。特别地,很好的与Apache Zookeeper集成,形成了Kafka分布式分区的支柱。 很多人认为 Zookeeper的需求并不是那么高,它付与了Kafka用户集群的益处。
全局 Apache Kafka 体系构造(1 主题, 1 分区, 4 复制因子). (source)
体系构造和设计
RabbitMQ i被设计为通用消息代劳,采取点对点的几种变更, 请求/答复,和宣布-订阅通信风格模式。它应用智能代劳/哑花费者模型,专注于消息传递花费者的一致性,作为代劳跟踪花费者的状况,包管以大年夜致雷同的速度花费。设备精确时表示优胜,成熟,被支撑的很好 (客户端库包含 Java, .NET, node.js, Ruby, PHP和很多其他说话),有几十个插件可用,将其扩大到更多用例和集成场景。
简化的┞符体 RabbitMQ 体系构造(source).
RabbitMQ的通信,根据须要可所以同步或异步。推送者发送消息到交换区,花费者大年夜队列检索消息。 经由过程发送消息到交换区的情势,将临盆者解耦,确保临盆者不承担硬编码路由压力。 RabbitMQ 还供给了一些分布式安排筹划 (请求所有节点可以解析主机名)。它可以设置为多节点集群为集群联盟,并且不依附外部办事 (但一些集群形成插件可以应用AWS APIs, DNS, Consul,等)。
Apache Kafka 是专为高容量宣布-订阅消息流设计的,意味着经久耐用, 快速,并且可扩大的。在其本质上, Kafka 供给持久的消息存储,在某些方面类似于数据库,在办事器集群中运行,存储流记录的类别称为主题。
每条消息包含一个键,一个值和一个时光戳。 同RabbitMQ几乎相反, Kafka应用了笨代劳, 并应用智能花费者攫取其缓冲区。 Kafka不测验测验跟踪那些被花费者花费的消息,只保存未读消息;相反, Kafka保存所有消息的一组时光,花费者负责跟踪他们在每个日记的地位 (花费状况)。 是以,用精确的开辟者人才 创建花费者代码, Kafka 可以支撑大年夜量的花费者并且保存大年夜量数据以很少的开销。如上图所示,Kafka确切须要外部办事运行 – 在这种情况下,Apache Zookeeper, 平日被认为是须要,懂得,设置,和操作的。
推荐阅读
腾讯电脑管家针对于勒索病毒推出“勒索病毒免疫对象”电脑中毒后屏幕上彪炳来的勒索信5月15日,跟着企事业单位周一集中开机办公,WannaCry勒索病毒可能进一步伸展,高校、银行、>>>详细阅读
本文标题:什么时候该用RabbitMQ ,什么时候该用 Apache Kafka
地址:http://www.17bianji.com/lsqh/35213.html
1/2 1