原理
kafka介绍
1 | Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。 |
Apache Kafka与传统消息系统相比,有以下不同
1 | 它被设计为一个分布式系统,易于向外扩展; |
kafka基本组件
1 | - 话题(Topic): 是特定类型的消息流。 |
kafka整体架构
zookeeper
1 | 提到kafka就必须说说zookeeper集群,zookeeper集群特性: |
部署
部署zookeeper集群(3台zookeeper节点)
1 | 官网: https://zookeeper.apache.org |
1 | 配置zookeeper环境变量 |
配置zookeeper集群
1 | 创建日志和数据存放目录并授权 |
创建ServerID标识
1 | 注:zookeeper集群模式下还要配置一个myid文件,这个文件需要放在data目录下。 |
启动并验证zookeeper集群
1 | 分别启动三台zookeeper服务器服务 |
1 | IP地址: 10.0.10.21/24 |
测试连接zookeeper集群
1 | 对于客户端来说,zookeeper集群是一个整体,连接到zookeeper集群实际上感觉在独享整个集群的服务,所以,你可以在任何一个结点上建立到服务集群的连接。例如: |
部署kafka集群(3台zookeeper机器分别安装kafka)
1 | 下载: https://kafka.apache.org |
配置kafka环境变量
1 | 配置kafka环境变量 |
节点1-kafka配置
1 | [root@host21 local]# grep "^[a-Z]" /usr/local/kafka/config/server.properties |
节点2-kafka配置
1 | [root@host21 local]# grep "^[a-Z]" /usr/local/kafka/config/server.properties |
节点3-kafka配置
1 | [root@host21 local]# grep "^[a-Z]" /usr/local/kafka/config/server.properties |
在3个节点分别启动kafka
1 | #以守护进程的方式启动 |
分别验证kafka进程
1 | [root@host21 ~]# jps |
测试Topic
创建名为logstashtest,partitions(分区)为3,replication(复制)为3的topic(主题)
1 | 在任意kafka服务器上操作: |
测试获取topic
1 | 可以在任意kafka服务器上测试: |
1 | 状态说明:logstashtest这个topic,当前有三个分区分别为0、1、2 |
删除一个topic
1 | 创建一个名称为test的topic,来测试删除 |
获取所有topic
1 | [root@host21 ~]# kafka-topics.sh --list --zookeeper 10.0.10.21:2181,10.0.10.22:2181,10.0.10.23:2181 _consumer_offsets |
kafka命令测试消息发送
1 | [root@host21 ~]# kafka-topics.sh --create --zookeeper 10.0.10.21:2181,10.0.10.22:2181,10.0.10.23:2181 --partitions 3 --replication-factor 3 --topic messagetest |
发送消息
1 | kafka-console-producer.sh --broker-list 10.0.10.21:9092,10.0.10.22:9092,10.0.10.23:9092 --topic logstashtest |
其他kafka服务器服务器测试获取消息
服务器A获取消息
1 | [root@host21 ~]# kafka-console-consumer.sh --zookeeper 10.0.10.21:2181,10.0.10.22:2181,10.0.10.23:2181 --topic logstashtest --from-beginning |
服务器B获取消息
1 | [root@host22 local]# kafka-console-consumer.sh --zookeeper 10.0.10.21:2181,10.0.10.22:2181,10.0.10.23:2181 --topic logstashtest --from-beginning |
服务器C获取消息
1 | [root@host23 local]# kafka-console-consumer.sh --zookeeper 10.0.10.21:2181,10.0.10.22:2181,10.0.10.23:2181 --topic logstashtest --from-beginning |
使用logstash测试向kafka写入数据
1 | 在安装有logstash的机器上操作: |
1 | 验证logstash语法 |
测试logstash向kafka写入数据
1 | logstash服务器前台启动 |
1 | 在21的kafka机器上运行如下消费命令: |
– End –
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2017/12/22/分布式消息系统MQ之kafka部署/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!