初识消息队列|青训营笔记

59 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第9天


这章我们学习消息队列,这是一个完全陌生的概念,我们按照下面这个顺序依次讲解

  1. 什么是消息队列?为什么要用消息队列?
  2. 消息队列为什么要分布式?
  3. 有哪些消息队列?
  4. 这些消息队列的对比

什么是消息队列?为什么要用消息队列?

举个例子,比如一个业务需要实时计算网站的点击量,那么就要把用户点击的事件作为数据流流入Flink做window计算。现在假设有无数用户一直在点,直接把这些事件放入Flink,但是Flink的消费能力有限,这么多数据一下子过来Flink直接懵了,正常点击事件直接变成ddos攻击了,这还玩个🔨啊

所以要把这些事件数据用一个东西缓冲一下,并且要保证FIFO(先进先出),显然队列能保证这个特性,所以消息队列应运而生

这就是使用消息队列的第一个好处,削峰

消息队列还可以异步解耦,比如用户点击以后立马收到反馈,不用等漫长的Flink计算完,这样做到了异步。另外上游系统和下游系统是解耦开的,下游并没有调用请求,而是通过消息传递的方式获取数据

消息队列为什么要分布式?

首先一个原因是单击吞吐量小,分布式的吞吐量大

第二个原因分布式好扩容

第三个原因防止单机节点挂掉,类似HDFS的多副本容错

有哪些消息队列?

image.png

这里主要讲一下Kafka

Kafka


kafka是一个分布式的消息队列,吞吐量高。

另外可用性非常高,一个数据多副本分布式存储,容错不会丢数据

数据Exactly Once语义

缺点:

  • 把数据攒一波再处理,延迟比较高

注意:本文只是对消息队列做一个简单了解,具体实现和原理需要进一步学习后再总结