kafka核心知识点扫盲,全平台详解析,看完你还说不会吗?

2020-05-27 00:00:00 数据 消息 消费 消费者 生产者

一、kafka概述

1.1、定义

Kakfa是一个分布式的基于发布/订阅模式的消息队列(message queue),主要应用于大数据的实时处理领域

1.2、消息队列

1.2.1、传统的消息队列&新式的消息队列的模式



上面是传统的消息队列,比如一个用户要注册信息,当用户信息写入数据库后,后面还有一些其他流程,比如发送短信,则需要等这些流程处理完成后,在返回给用户。

而新式的队列是,比如一个用户注册信息,数据直接丢进数据库,就直接返回给用户成功。

1.2.2、使用消息队列的好处

A、解耦

B、可恢复性

C、缓冲

D、灵活性&峰值处理能力

E、异步通信

1.2.3、消息队列的模式

A、点对点模式

消息生产者发送消息到消息队列中,然后消息消费者从队列中取出并且消费消息,消息被消费后,队列中不在存储。所以消息消费者不可能消费到已经被消费的消息;队列支持存在多个消费者,但是对于一个消息而言,只会 有一个消费者可以消费;如果想发给多个消费者,则需要多次发送该条消息

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

消息生产者将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息,和点对点的方式不同,发布到topic的消息会被所有的订阅者消费;但是数据保留是期限的,默认是7天,因为他不是存储系统;kafka就是这种模式的;有两种方式,一种是是消费者去主动去消费(拉取)消息,而不是生产者推送消息给消费者;另外一种就是生产者主动推送消息给消费者,类似公众号。

1.3、kafka的基础架构



kafka的基础架构主要有broker、生产者、消费者组构成,当前还包括zookeeper
生产者负责发送消息

broker负责缓冲消息,broker中可以创建topic,每个topic又有partition和replication的概念

消费者组负责处理消息,同一个消费者组的中消费者不能消费同一个partition中的数据,消费者组主要是提高消费能力,比如之前是一个消费者消费100条数据,现在是2个消费者消费100条数据,可以提高消费能力;所以消费者组的消费者的个数要小于partition的个数,不然就会有消费者没有partition可以消费,造成资源的浪费

注:但是不同的消费者组的消费者是可以消费相同的partition数据

Kakfa如果要组件集群,则只需要注册到一个zk中就可以了,zk中还保留消息消费的进度或者说偏移量或者消费位置

0.9版本之前偏移量存储在zk

0.9版本之后偏移量存储在kafka中,kafka定义了一个系统的topic,专用用来存储偏移量的数据;

为什么要改?主要是考虑到频繁更改偏移量,对zk_的压力较大,而且kafka__本身自己的处理也较复杂_

1.4、kafka安装

A、Kafka的安装只需要解压安装包就可以完成安装

tar -zxvf kafka_2.11 -2.1.1.tgz -C /usr/local/

B、查看配置文件

[root@es1 config] # pwd
/ usr / local / kafka / config
[root@es1 config] # ll
total 84
- rw - r-- r--.1 root root  906 Feb  8  2019 connect - console - sink.properties
- rw - r-- r--.1 root root  909 Feb  8  2019 connect - console - source.properties
- rw - r-- r--.1 root root 5321 Feb  8  2019 connect - distributed.properties
- rw - r-- r--.1 root root  883 Feb  8  2019 connect - file - sink.properties
- rw - r-- r--.1 root root  881 Feb  8  2019 connect - file - source.properties
- rw - r-- r--.1 root root 1111 Feb  8  2019 connect - log4j.properties
- rw - r-- r--.1 root root 2262 Feb  8  2019 connect - standalone.properties
- rw - r-- r--.1 root root 1221 Feb  8  2019 consumer.properties
- rw - r-- r--.1 root root 4727 Feb  8  2019 log4j.properties
- rw - r-- r--.1 root root 1925 Feb  8  2019 producer.properties
- rw - r-- r--.1 root root 6865 Jan 16 22 : 00 server - 1.properties
- rw - r-- r--.1 root root 6865 Jan 16 22 : 00 server - 2.properties
- rw - r-- r--.1 root root 6873 Jan 16 03 : 57 server.properties
- rw - r-- r--.1 root root 1032 Feb  8  2019 tools - log4j.properties
- rw - r-- r--.1 root root 1169 Feb  8  2019 trogdor.conf
- rw - r-- r--.1 root root 1023 Feb  8  2019 zookeeper.properties

相关文章