一,消息队列的分类


    1,点对点

              消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。

                      

       注意:1,消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。

           2,Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。

      2,发布订阅

                 消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费。

       

二,消息队列MQ对比

 

    RabbitMQ:支持的协议多,非常重量级消息队列,对路由(Routing),负载均衡(Load balance)或者数据持久化都有很好的支持。

 

   ZeroMQ:号称最快的消息队列系统,尤其针对大吞吐量的需求场景,擅长的高级/复杂的队列,但是技术也复杂,并且只提供非持久性的队列。

 

   ActiveMQApache下的一个子项,类似ZeroMQ,能够以代理人和点对点的技术实现队列 。

 

   Redis:是一个key-Value的NOSql数据库,但也支持MQ功能,数据量较小,性能优于RabbitMQ,数据超过10K就慢的无法忍受


三,kafka简介


     Kafka 是分布式发布-订阅消息系统。它最初由 LinkedIn 公司开发,使用 Scala语言编写,之后成为 Apache 项目的一部分。Kafka是一个分布式的,可划分的,多订阅者,冗余备份的持久性的日志服务。它主要用于处理活跃的流式数据。


   1,kafka的特点


       同时为发布和订阅提供高吞吐量。据了解,Kafka 每秒可以生产约 25 万消息(50 MB),每秒处理 55 万消息(110 MB)。


       可进行持久化操作。将消息持久化到磁盘,因此可用于批量消费,例如 ETL,以及实时应用程序。通过将数据持久化到硬盘以及 replication 防止数据丢失。

 

      分布式系统,易于向外扩展。所有的 producer、broker 和 consumer 都会有多个,均为分布式的。无需停机即可扩展机器。

 

     消息被处理的状态是在 consumer 端维护,而不是由 server 端维护。当失败时能自动平衡。

 

     支持 online 和 offline 的场景。


   2,kafka性能测试效果



 




               

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐