kafka概述

一、消息队列

(1)常见的消息队列:RocketMQ,kafka

(2)传统消息队列的应用场景:异步处理,具体场景:用户为了使用某个应用,进行注册,系统需要发送注册邮件并验证短信。对这两个操作的处理方式有两种:串行及并行。

  1、串行处理:新注册信息生成后,先发送注册邮件,再发送验证短信;

  2、并行处理:新注册信息写入后,由发短信和发邮件并行处理;

(3)应用消息队列的好处

  1、解耦:多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败;

  2、异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间;

  3、限流削峰:在访问量剧增的情况下,应用仍然需要继续发挥作用;使用消息队列,能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。

  4、 缓冲:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。

(4)消息队列的两种模式:点对点模式,发布订阅模式。

  1、点对点模式

   1)概念:生产者生产消息发送到消息队列中,然后消费者从消息队列中取出并且消费消息。消息被消费以后,消息队列中不再有存储,所以消息接收者不可能消费到已经被消费的消息。

   2)特点:

    a、每个消息只有一个接收者(Consumer)(即一旦被消费,消息就不再在消息队列中);

    b、发送者和接收者间没有依赖性,发送者发送消息之后,不管有没有接收者在运行,都不会影响到发送者下次发送消息;

    c、接收者在成功接收消息之后需向队列应答成功,以便消息队列删除当前接收的消息;

    

  2、发布订阅模式(消费者消费数据之后一般不会清除数据)

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

           

   2)模式分类:第一种消费者主动从消息队列中拉取数据(消费者必须维护一个长轮询来查看消息队列中是否有数据),第二种消息队列推送消息给消费者(生产者生产数据与消费者消费数据的速率不匹配)。

posted on 2020-04-20 13:55  hdc520  阅读(154)  评论(0编辑  收藏  举报

导航