kafka命令相关
kafka命令行执行流程
1.开启zookeeper
2.开启kafka
3.若监视某队列,可以使用kafka-console命令
kafka本机命令执行地址
/usr/local/cellar/kafka/2.1.0/libexec
zookeeper本机命令执行地址
/usr/local/cellar/zookeeper/3.4.13/libexec
kafka日期存储地址
/usr/local/var/www/Kafka-logs/{broker-name}/{topic-name}
zookeeper 启动命令 (全局)
zkServer start
kafka启动命令
bin/kafka-server-start.sh config/server.properties
kafka开启多个服务器 (模拟线上真实场景)
bin/kafka-server-start.sh config/broker0.properties
bin/kafka-server-start.sh config/broker1.properties
….
kafka配置本地broker注意事项
1.若添加多个broker需将/usr/local/celler/kafka/2.1.0/libexec/config/server.properties
2. 修改端口
3. 修改文件所在地址 /usr/local/var/lib/kafka-logs/meta.properties broker_id 设置成对应的id,然后启动服务
4. 复制 {KAFKA_PATH}/config/server.properties,需要模拟几台机器就复制几份
5. broker.id (文件开头) 必须唯一
6. listeners=PLAINTEXT://:9092 每一个文件的端口号必须唯一
7. log.dirs 文件可指定,指定路径为绝对路径
配置文档教程地址:https://blog.csdn.net/camel84/article/details/81879118
查看所有topic列表
bin/kafka-topics.sh –zookeeper localhost:2181 –list
查看指定topic明细
bin/kafka-topic.sh –zookeeper localhost:2181 –describe –topic {topic-name}
新建一个topic
bin/kafka-topics.sh –zookeeper localhost:2181 –create –topic {topic-name} –partitions {partition_name} –replication-factor {replication-factor}
- {topic-name} topic名
- {partition_name} 分区数
- {replication-factor} 复制因子
本地模拟producer发送kafka消息
bin/kafka-console-producer.sh –broker-list localhost:9092 localhost:9093 localhost:9094 –topic {topic-name}
本地模拟consume接收kafka消息
bin/kafka-console-consumer.sh –bootstrap-server {server1} {server2} –topic {topic-name} –from-beginning
注意事项:
1.创建topic时,不可以使用 "." 或者 "_",容易引发错误
2.kafka端口2181,broker端口为9092开头,不可混淆
3.获取一个文件内指定字符所在位置 grep localhost /etc/hosts
4.查找一个文件所在位置 find / -name 'hosts'
kafka调研
本地测试环境:
系统:mac
使用php-kafka扩展:librdkafka
扩展地址:https://github.com/arnaud-lb/php-rdkafka
使用laravel-kafka组件:rapide/laravel-queue-kafka”: “^1.0”
组件地址:https://packagist.org/packages/rapide/laravel-queue-kafka
本地虚拟出四台broker,分别是broker0,broker1,broker2,broker3,访问地址是:
localhost:9092
localhost:9093
localhost:9094
localhost:9094
安装成功并且将队列驱动改为kafka后,运行正常,往队列中塞入一条信息,4台broker都可以接收到并且存储。
分析源码得出以下结论:
1.laravel-queue-kafka 每满1000条开始消费,不可更改
2.一个队列名称就是一个topic
3.消费者不可更改,是 laravel-queue,不可更改
4.安装组件并不会生成配置项(配置文件),全部在源码中写死
5.本地启动php artisan horizon, kakfa也可以正常使用,但是文档中说horizon是专为redis队列设计的(有待研究)
6.laravel-queue-kafka版本比较老,最新1.0,组件使用0.8
7.网上资料比较少,且git上也很少有人提问这个laravel-queue-kafka队列相关,git更新频次比较低
在网上搜了这么多,感觉大部分是用来记录日志,或者是写librdKafka deom,用于做队列的相关记录,在其他语言中比较多(如java),php较少甚至没有,个人感觉kafka在php的应用率比较低,加上社区或者git不活跃等等,若出现异常或者broker宕机修复比较难,所以不建议将队列更换成kafka。