Kafka是一个分布式数据流平台,可以运行在单台服务器上,也可以在多台服务器上部署形成集群。它提供了发布和订阅功能,使用者可以发送数据到Kafka中,也可以从Kafka中读取数据(以便进行后续的处理)。Kafka具有高吞吐、低延迟、高容错等特点。下面介绍一下Kafka中常用的基本概念:
默认端口: zk:2181 kafka:9092
kafka安装配置
下载与解压
wget https://dlcdn.apache.org/kafka/2.8.0/kafka_2.13-2.8.0.tgz
tar zxvf kafka_2.13-2.8.0.tgz
设置环境变量
/etc/profiles
# 让环境变量生效 source /etc/profile
KAFKA_HOME=/opt/kafka_2.13-2.8.0
PATH=$PATH:$KAFKA_HOME/BIN
修改config/zookeeper.properties配置
#12181
clientPort=12181
修改配置 server.properties
broker.id=0
#默认9092
port=19093
#log.dir: meta.properties中有ClusterId与logs/server.log提示不一致,会报错
log.dirs=/tmp/kafka-logs
advertised.listeners=PLAINTEXT://localhost:9092
zookeeper.connect=localhost:12181
启动
cd kafka_2.13-2.8.0
# 启动zk,如端口冲突,请修改
bin/zookeeper-server-start.sh config/zookeeper.properties 1>/dev/null 2>&1 &
# 启动kafka
bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
Kafka Web端管理界面Cmak安装配置
# 下载
wget https://github.com/yahoo/CMAK/releases/download/3.0.0.5/cmak-3.0.0.5.zip
# conf/application.conf
kafka-manager.zkhosts="localhost:12181"
kafka-manager.zkhosts=${?ZK_HOSTS}
cmak.zkhosts="localhost:2181"
cmak.zkhosts=${?ZK_HOSTS}
basicAuthentication.enabled=true #默认为false,改为true
bin/cmak -Dconfig.file=conf/application.conf -Dhttp.port=18080
# 启动,需要jdk11
bin/cmak -Dconfig.file=conf/application.conf -Dhttp.port=18080 -java-home /opt/jdk-11.0.11
浏览访问:
http://...18080/
- 需要手工添加ip与端口
命令操作
创建Topic:kafka-topics.sh --create --zookeeper localhost:12181 --replication-factor 1 --partitions 1 --topic pk1
# 模拟生产者发消息
kafka-console-producer.sh --broker-list localhost:9092 --topic pk1
#模拟消费者收消息
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic pk1
术语
-
Broker
消息队列中常用的概念,在Kafka中指部署了Kafka实例的服务器节点。
broker.id
申明当前kafka服务器在集群中的唯一ID -
Topic
用来区分不同类型信息的主题。比如应用程序A订阅了主题t1,应用程序B订阅了主题t2而没有订阅t1,那么发送到主题t1中的数据将只能被应用程序A读到,而不会被应用程序B读到。 -
Partition
每个topic可以有一个或多个partition(分区)。分区是在物理层面上的,不同的分区对应着不同的数据文件。Kafka使用分区支持物理上的并发写入和读取,从而大大提高了吞吐量。 -
Record
实际写入Kafka中并可以被读取的消息记录。每个record包含了key、value和timestamp。 -
Producer
生产者,用来向Kafka中发送数据(record)。 -
Consumer
消费者,用来读取Kafka中的数据(record)。 -
Consumer Group
一个消费者组可以包含一个或多个消费者。使用多分区+多消费者方式可以极大提高数据下游的处理速度。 -
Partition Leader
每个 partition 有多个副本,其中有且仅有一个作为 Leader,Leader 是当前负责消息读写的partition。即所有读写操作只能发生于 Leader 分区上。 -
Partition Follower
所有 Follower 都需要从 Leader 同步消息,Follower 与 Leader 始终保持消息同步。partition leader 与 follower 是主备关系,而非主从。 -
offset
偏移量。每条消息都有一个当前 Partition 下唯一的 64 字节的 offset,它是相对于当前分区第一条消息的偏移量。 -
Broker Controller
Kafka 集群的多个 broker 中,有一个会被选举为 controller,负责管理整个集群中 partition和副本 replicas 的状态。当 partition leader 宕机后,broker controller 会从 ISR 中选举出一个 Follower 做为新的leader。所谓选举就是从 ISR 中找到第一个 Follower,直接让其当选新的 leader。Broker Controller 是由 zk 选举出来的。 -
Zookeeper
-
Coordinator
网友评论