一、MQ服务器集群基本的概念
Apache Kafka是分布式发布-订阅消息
系统,在 kafka官网上对 kafka 的定义:一个分布式发布-订阅消息传递系统。 它最初由LinkedIn公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。
注意:Kafka并没有遵循JMS规范,它只提供了发布和订阅通讯方式。
kafka中文官网:http://kafka.apachecn.org/quickstart.html
二、kafka服务器常用相关名词
Broker
: Broker就是表示一个MQ服务器端
,多个Broker就是表示多个不同的MQ服务器端形成一个群体;
Topic
: 主题
目录 一个MQ服务端可以存放多个不同的主题
每个主题实际就是消息的分类
massage: 就是异步通讯传递的参数
Partition
: 分区
多大的群体实现分区 数据库中1000万条数据 分成10表 redis相当于卡槽
Kafka里面实现分区:一个Broker就是表示一个区域
Producer : 生产者 向MQ投递消息
Consumer : MQ将消息推送消费者消费
Consumer Group
: 对我们消费者实现分组
Offset
:偏移量 实际就是我们的消息的索引位置
主题和队列队列有啥区别
三、kafka集群节点如何实现相互感知
新的broker加入,zk节点发生变化,会有时间通知,就会知道是集群了。
四、kafka集群环境搭建方式实现
Kafka为什么会依赖与zk?
1.kafka会将MQ的信息存放到zk上
2.为了是整个集群能够方便扩展,采用zk
的事件通知相互感知
五、搭建Zookeeper集群节点
修改conf: vi zoo.cfg 修改两处
(1) dataDir=/usr/kafka/zookeeper/data(注意同时在zookeeper创建data目录)
(2)最后面添加
server.0=192.168.212.174:2888:3888
server.1=192.168.212.175:2888:3888
server.2=192.168.212.176:2888:3888
vi ./kafka/config/server.properties
broker.id=0
listeners=PLAINTEXT://192.168.131.130:9092
zookeeper.connect=192.168.212.164:2181,192.168.212.167:2181,192.168.212.168:2181
其他两台只需要修改server.properties中的broker.id分别为 1 ,2
问题: 找不到文件
原因: 学会看日志(路径写错了)
改成正确的路径即可
六、搭建Kafka集群方式实现通讯
1、开启3台虚拟机的zookeeper程序
/usr/local/zookeeper/bin/zkServer.sh start
开启成功后查看zookeeper集群的状态
/usr/local/zookeeper/bin/zkServer.sh status
出现Mode:follower或是Mode:leader则代表成功
2、在后台开启3台虚拟机的kafka程序(cd /usr/local/kafka)
./bin/kafka-server-start.sh -daemon config/server.properties
3、在其中一台虚拟机(192.168.131.130)创建topic
/usr/local/kafka/bin/kafka-topics.sh --create –zookeeper 192.168.212.131:2181 –replication-factor 3 –partitions 1 –topic my-replicated-topic
// 查看创建的topic信息
/usr/local/kafka/bin/kafka-topics.sh –describe –zookeeper 192.168.212.132:2181 –topic my-replicated-topic
详细参照官网即可
http://kafka.apachecn.org/quickstart.html
七、kafka集群实现分区存放不同节点
Step 3: 创建一个 topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1
--topic test
–partitions 1:分区是 1 不是集群
–replication-factor 1 :副本 备份消息 防止丢失
Step 4: 发送一些消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
不要用localhost:
Step 5: 启动一个 consumer
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
八、SpringBoot如何整合kafka集群
第一次主动拉去,后期都是推送。
发送6个消息,没有分区
改变路径 ,再次发送5个消息 :有消息