1、kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理。----还有哪些模式的消息队列?--点对点模式

2、kafka也是处于消息传输中间流程组件。主要用于处理两个系统之间的消息传递。

3、消息队列。为什么要引入消息队列?

同步处理:即发出消息,用户就持续等待,一直等到结果返回成功才结束。即同步要求两个系统之间必须同时在线。

异步处理:即发出请求之后,先响应用户,但是将请求的数据写入到消息队列中,后续在进行处理。

 

 

消息队列异步处理的优势:系统解耦合,削峰(可以缓解服务器负担,当出现发送快,处理慢的情况,可以进行缓冲,故叫削峰),灵活性(当集群出现故障时,可以快速地切换集群,不影响业务)

 

4、消息队列的两种模式

(1)点对点模式(一对一)。

  如果点对点的模式想要被多个消费者消费到,则需要配置多个队列。类似于flume,如果想要将信息传输给多个sink,则需要配置多个管道。

  点对点是主动获取的消息。

 

 

(2)发布/订阅模式(一对多,消费者消费数据之后不会清除消息)。

  存储在这种模式下的数据不是永久保留的,不同于HDFS文件系统,这种消息只会存在一定的时间,这个时间是可以自己配置的。

 

   发布/订阅的模式有两种模式:

  第一种是有队列主动推的模式,即消息队列不管消费者的状态和处理能力,只管按照自己的速度去推送。缺点:各个消费者的处理能力不一样,低处理能力的消费者会产生阻塞,高处理能力的消费者又会空转。

  第二种是由消费者按照自己的处理能力去主动拉取消息。缺点:每个消费者在消费之前都要先“询问”接口是否有数据,有数据才去消费数据,当消息队列没有数据时,同样容易造成资源浪费。

  kafka是基于订阅/发布模式的消费者主动获取模式。

 

5、kafka基本架构

(1)多个服务器连接,就组成了集群

(2)Topic本质就是分类,一般Topic还需要进行分区,分区的作用是为负载均衡、提高并发能力。

(3)分区在不同服务器的topic会分Leader和Follower,主要是进行数据备份。当一台服务器宕机之后,就可以立马启用Follower作为Laeder,确保数据不中断。

(4)生产者和消费者,只能连接Leader,只有当Leader挂掉之后才能练Follower,Follower只作为备份。

(5)是不是必须有flower呢?不一定,看实际配置情况;反过来,一个主题也可以有多个副本。只要空间足够,互不影响。

(6)消费组。将多个消费者组合在一起,就组成了消费者组。同一个的分区只能被同一个消费者组里面的一个消费者消费!。

(7)消费者组的优势:提高消费能力。

(8)Zookeeper,协助管理kafka集群。kafka集群和消费者都会将一部分信息存储到zk。假如消费过程宕机,消费者重连,就需要通过zk保存断点信息,比如说消费到第几条数据等等,当下次能断点续联。(0.9之前可以存储在zk中,0.9之后会直接存储到kafka本地,即一个系统topic)。

(9)ZK是一个各大框架的润滑剂,访问量过大会影响其性能。

(10)kafka消息存在磁盘,默认保存七天,即168个小时。

 

  

 

 posted on 2021-08-24 00:23  佩剑君子  阅读(271)  评论(0编辑  收藏  举报