消息队列的两种模式
消息队列包括两种模式,点对点模式(point to point, queue)和发布/订阅模式(publish/subscribe,topic)
1. 点对点模式
点对点模式下包括三个角色:
消息队列
发送者 (生产者)
接收者(消费者)
消息发送者生产消息发送到 queue 中,然后消息接收者从 queue 中取出并且消费消息。消息被消费以后,queue 中不再有存储,所以消息接收者不可能消费到已经被消费的消息。
点对点模式特点:
· 每个消息只有一个接收者(Consumer)(即一旦被消费,消息就不再在消息队列中);
· 送者和接发收者间没有依赖性,发送者发送消息之后,不管有没有接收者在运行,都不会影响到发送者下次发送消息;
· 接收者在成功接收消息之后需向队列应答成功,以便消息队列删除当前接收的消息;
2. 发布/订阅模式
发布/订阅模式下包括三个角色:
角色主题(Topic)
发布者(Publisher)
订阅者(Subscriber)
发布者将消息发送到 Topic,系统将这些消息传递给多个订阅者。
发布/订阅模式特点:
· 每个消息可以有多个订阅者;
· 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。
· 为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行;
3. Kafka
apache kafka 是一个分布式发布-订阅消息系统和一个强大的队列,可以处理大量的数据,并使能够将消息从一个端点传递到另一个端点,kafka 适合离线和在线消息消费。kafka 消息保留在磁盘上,并在集群内复制以防止数据丢失。kafka 构建在 zookeeper 同步服务之上。它与 apache 和 spark 非常好的集成,应用于实时流式数据分析。
4. kafka 的好处
可靠性:分布式的,分区,复本和容错的。
可扩展性:kafka 消息传递系统轻松缩放,无需停机。
耐用性:kafka 使用分布式提交日志,这意味着消息会尽可能快速的保存在磁盘上,因此它是持久的。
性能:kafka 对于发布和定于消息都具有高吞吐量。即使存储了许多 TB 的消息,他也爆出稳定的性能。
kafka 非常快:保证零停机和零数据丢失。
版权声明: 本文为 InfoQ 作者【五分钟学大数据】的原创文章。
原文链接:【http://xie.infoq.cn/article/a0a67620957b12d2cd972a103】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论 (1 条评论)