Kafka学习(一):消息队列


企业中离线业务场景,实时业务场景都需要使用到 Kafka。
Kafka 具备数据的计算能力和存储能力,但是两个能力相对(MR/SPARK,HDFS)较弱。
Kafka 角色的角色与 Hbase 比较像,层级关系比较多。

消息队列的介绍

消息(Message):是指应用之间传送的数据,或点与点之间,点与多点之间传递的数据,传递的信息。
消息队列(Message Queue):是一种应用间的通信方式以队列的形式传递。消息发送后可以立即返回,由消息系统来确保信息的可靠传递,消息发布者只管把消息发布到MQ中而不管谁来取,消息使用者只管从MQ中取消息而不管谁发布的,这样发布者和使用者都不知道对方的存在。

消息队列的应用场景

应用耦合:多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败。
异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间。
限流削峰:广泛应用于秒杀或抢购活动中,避免流量过大导致应用系统挂掉的情况
消息驱动的系统:系统分为消息队列、消息生产者、消息消费者,生产者负责产生消息,消费者(可能有多个)负责对消息进行处理。


消息队列应用场景详解

如何理解应用耦合?
在这里插入图片描述
在这里插入图片描述
如何理解异步处理?
在这里插入图片描述
如何理解限流削峰?
在这里插入图片描述
如何理解消息驱动的系统?

例如之前在学习MR(MapReduce)时做的游戏,后面的同学在没有接收到前面同学的信息之前是不允许操作的,这个就是消息驱动系统。
参考链接:https://blog.csdn.net/weixin_43563705/article/details/103016281


消息队列的两种模式

消息队列包括两种模式,点对点模式(point to point, queue)和发布/订阅模式(publish/subscribe,topic)。

点对点模式

点对点模式包括三个角色:

  • 消息队列
  • 发送者(生产者)
  • 接受者(消费者)

在这里插入图片描述
每个消息只有一个接收者,发送者和接受者间没有依赖性,接受者在成功接收消息后,需向队列应答接收成功。

点对点模式特点

  • 每个消息只有一个接受者(Consumer):即一旦消费,消息就不再在消息队列中。
  • 发送者 和 接受者之间没有依赖性,发送者发送消息后,不管有没有接受者在都运行,都不会影响发送者下次发送消息。(例如QQ,微信等)
  • 接受者在成功接收消息之后需向队列应答成功,以便队列删除当前接收的消息。

发布/订阅的方式

包括以下三个角色:

  • 角色主题(Topic):消息得分类,分组(例如玩王者荣耀的玩家消息发送不到玩和平精英玩家的消息框中)
  • 发布者(Publisher):生产者
  • 订阅者(Subscriber):消费者
    在这里插入图片描述
    每个消息可以有多个订阅者,发布者和订阅者之间有时间上的依赖性,订阅者需要提前订阅该角色主题。

发布者将消息发送到 Topic,系统将这些消息传递给多个订阅者。

发布/订阅模式特点

  • 每个消息可以有多个订阅者。
  • 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。
  • 为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行。

发布了74 篇原创文章 · 获赞 15 · 访问量 4336

猜你喜欢

转载自blog.csdn.net/wzc8961661/article/details/104913727