Kafka(2)消息队列

消息队列概述(MQ)

之前在RabbitMQ栏目(博客)中说明过MQ,在这里做一些补充:

  1. 屏蔽了底层复制的通讯协议,定义了一套更加简单的通信协议
  2. 消息队列解决的问题:通信问题
  3. 消息队列中间件:

    Kafka(2)消息队列_第1张图片
    可以分为两个大类:
    Broker可以当作一个中转站

    1. 有broker的MQ
    2. 五Broker的MQ

有Broker的MQ

这个流派通常有一台服务器作为Broker,所有的消息都通过它中转生产者把消息发送给它就结束自己的任务了,Broker则把消息主动推送给消费者(或者消费者主动轮询)

比如说,去发送一条消息,该消息是到消息队列(MQ)里面的,该消息再由消息中间件(MQ)分配到某一个队列里面,在中间件里面的这种转发,就是Broker做的

有Brooker的又分为两种:

  1. 重Topic:Kafka、RockerMQ、ActiveMQ
  2. 轻Topic:RabbitMQ

重Topic

Kafka、JMS(ActiveMQ)属于这个流派

重Topic:指整个消息进行转发的时候,以Topic作为依据

整个broker,依据topic来进行消息的中转。在重topic的消息队列里必然需要topic的存在

比如说,一个消费者1订阅Topic1,另一个消费者2订阅Topic2;如果一个消息发送给Topic1的话,消费者1能够收到,而消费者2收不到

轻Topic

代表:RabbitMQ

轻Topic:内部可以使用Topic,也可以不使用

topic只是一种中转模式

无Broker的MQ

代表:ZeroMQ,直接使用socket进行通信
在这里插入图片描述
节点之间通讯的消息都是发送到彼此的队列中,每个节点都既是生产者又是消费者。ZeroMQ做的事情就是封装出一套类似于Socket的API可以完成发送数据,读取数据

你可能感兴趣的:(#,Kafka,kafka,rabbitmq,中间件)