分布式系统之消息队列(草稿)

本文深入探讨了消息队列的概念、特性及其在不同模式下的应用,包括Topic模式、Point-to-Point模式和AMQP路由。同时,介绍了消息队列的实现,如Apollo、RabbitMQ和Kafka,并对比了它们的特点。最后,分析了Apache Qpid和nanoMSG等协议,并概述了消息队列在日志处理领域的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

消息队列概述--概念和特性

      队列——FIFO

     异步 -松耦合

     弹性----消息可以适度积压

消息队列-模式

        Topic模式和订阅模式

            

            topic是广播的形式,一个topic地址的多个订阅者都能收到

            topic数据默认不落地,是无状态的

            并不保证publisher发布的每条数据,subscriber都能接受到。

     


          Point-to-Point 点对点(这是一种可靠的模式,运用最广的)

            保证每条数据都能被receiver接收

            Queue数据默认会在mq服务器上以文件形式保存

消息队列架构

        

经典的JMS架构(只是提供了一个统一的接口,jms api programming model)

  

    一个具体的hornetQ


消息队列的协议

    1,STOMP (Streaming Text Orientated Message Protocol)

          这是一个文本型简单协议,方便与用户查看和调试

    2,MQTT 协议

    3,AMQP

          提供一个可靠的消息协议,这是一个跨语言的协议。      

          AMQP:

       

消息队列的实现

 Apollo:下一代ActiveMQ

            还在孵化阶段,支持多种协议(STOMP,AMQP,MQTT...)

 RabbitMQ

        

        AMQP的路由

        直接路由,通过匹配路由key,点对点

        

        广播

        

       最后比较有意思,定义多种key,依据key来进行消息广播

        

   apache qpid

        


    kafka 下一代的消息队列 ((最先是为了解决日志传输)抛弃了企业级的大部分特性)

            

         kafka的特点:

         1,采用zookeeper做选举策略

          2,采用生产者推,消费者主动拉

          3,消息存储机制分析

                162922_hH7c_1262585.jpg

                消息存储,采用类似数据库的存储机制

                  163117_1JVa_1262585.jpg

            4,对消息进行分区切分

                   163146_c7FG_1262585.jpg

                   1,每个分区对应一个consumer,

                    2,如果某个topic量非常大,就可以采用分区的方式,进行动态扩容

                        (以前只能修改代码,编程不同的topic)                   

            5,容错机制

                    163158_UKV1_1262585.jpg

                     每个消息,都有3个副本,当一个副本不可达的时候,会被移出集群,继续重试下一个副本(一个比较好的设计)

            nanomsg:zeromq的替代品

            

公司现有日志处理框架

162813_hjX5_1262585.jpg

            

            



转载于:https://my.oschina.net/osenlin/blog/522714

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值