Kafka是什么
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,是一种消息中间件
为什么要使用Kafka
– 解耦、冗余、提高扩展性、缓冲
– 保证顺序,灵活,削峰填谷
– 异步通信
Kafka角色与集群结构
– producer:生产者,负责发布消息
– consumer:消费者,负责读取处理消息
– topic:消息的类别
– Parition:每个Topic包含一个或多个Partition
– Broker:Kafka集群包含一个或多个服务器
Kafka通过Zookeeper管理集群配置,选举Leader
Kafka集群的安装配置
Kafka集群的安装配置依赖Zookeeper,搭建Kafka集群之前,请先创建好一个可用的Zookeeper集群
– 安装OpenJDK运行环境
– 同步Kafka拷贝到所有集群主机
– 修改配置文件
– 启动与验证
步骤一:搭建Kafka集群
1)解压 kafka 压缩包(node1,node2,node3)
[root@node1 ~]# tar -xf kafka_2.10-0.10.2.1.tgz
2)把 kafka 拷贝到 /usr/local/kafka 下面
[root@node1 ~]# mv kafka_2.10-0.10.2.1 /usr/local/kafka
3)修改配置文件 /usr/local/kafka/config/server.properties
vim /usr/local/kafka/config/server.properties
broker.id=22 #21行
zookeeper.connect=node1:2181,node2:2181,node3:2181 #122行
4)拷贝 kafka 到其他主机,并修改 broker.id ,不能重复
5)启动 kafka 集群(node1,node2,node3启动),启动后,kafka监听9092端口
[root@node1 local]# /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
[root@node1 local]#jps
验证:
– jps命令应该能看到Kafka模块
– netstat应该能看到9092在监听
6)验证配置,创建一个 topic
[root@node1 local]# /usr/local/kafka/bin/kafka-topics.sh --create --partitions 1 --replication-factor 1 --zookeeper node1:2181 --topic aa
// --create 创建消息
// --partitions 块数
7) 模拟生产者,发布消息 #不退出,写什么,接收者就会看到什么
[root@node2 ~]# /usr/local/kafka/bin/kafka-console-producer.sh --broker-list node2:9092 --topic aa
8)模拟消费者,接收消息 #不退出
[root@node3 ~]# /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server node1:9092 --topic aa
aa就是一个名称,好似房间号