kafka的使用1:消息队列的通信模式 您所在的位置:网站首页 消息队列的模式怎么设置不了呢苹果 kafka的使用1:消息队列的通信模式

kafka的使用1:消息队列的通信模式

2024-07-01 04:14| 来源: 网络整理| 查看: 265

目录

一、点对点模式

二、发布订阅模式

消息队列的通信模式主要有两种:

点对点模式发布订阅模式 一、点对点模式

如下图为点对点模式。点对点模式通常是基于拉取或者轮询的消息传送模型,这个模型的特点是发送到队列的消息被一个且只有一个消费者进行处理。生产者将消息放入队列后,由消费者主动的拉取消息进行消费。

消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者,但是对一个消费者而言,只会有一个消费者可以消费。

点对点模型的优点是消费者拉取消息的频率可以由消费者自己控制。但是队列中是否有消息需要消费,消费者是无法自己感知的,因此在消费端需要额外的线程去监控。

举个例子,我们平时去食堂吃饭。食堂的师傅是生产者,饭盆里的饭是消息,我们这些飞奔向食堂的人就是消费者。食堂师傅把饭做好防盗盆里,吃货们根据自己的需要去盆里打饭。但是盆里到底有没有饭呢?就需要有人专门来负责,没有饭的时候通过广播或者微信来告诉我们没有饭了。

二、发布订阅模式

下图为发布订阅模式。发布订阅模式是一个是一个基于消息传送的模型。在这个模型中,可以有多种订阅者。生产者把消息放入队列后,队列会将消息推送给订阅该消息的消费者,这个过程类似于我们经常用到的微信公众号。由于消费者是被动的接收推送,因此就不需要感知队列中是否有待消费消息了。

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

但是这样会存在一个问题,什么问题呢?

就是不同的消费者处理消息的能力是不一样的(机器性能等影响),但是消息队列却无法感知消费者消费的速度。所以推送的速度就成了发布订阅模式的问题。

假设三个消费者处理速度分别是8M/s、5M/s、2M/s,如果队列推送的速度为5M/s,则consumer3无法承受!如果队列推送的速度为2M/s,则consumer1、consumer2会出现资源的极大浪费!

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有