(以下分享了搭建kafka需要使用到的命令,差不多齐了,这里没有提到kafka-manager ,同学可以在网上自行查找)
最近公司的项目比较紧,先说下使用kafka的用处:
要替代原来 撮合引擎发数据到交易所中,原来使用api方式,弊端:若一方出现宕机,则会发生数据丢失情况,为避免,这里开始搭建kafka消息分布式系统。
顶着小压力~开始研究学习,在一周时间之后,终于我的第一个集群分布式kafka搭建完成。
在这其中走了不少坑,在这里我把自己从开始过程到搭建完成的使用命令分享给大家,(欢迎指出错误~)
我用的环境是
mac系统 (unix)
php 7.2.1 (虽然没多大关系~)
------------------------- kafka 安装 -------------------------
安装kafka前需先安装jdk
yum install java
wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/kafka/1.1.0/kafka_2.11-1.1.0.tgz
tar -xzf kafka_2.11-1.1.0.tgz
使用说明具体详见http://kafka.apache.org/quickstart
-------------------------编译安装kafka-------------------------
***********注意!!***********
若你是mac系统,请同样使用编译安装,尽量不用brew安装,原因:1,版本旧 2,个别配置与官网配置不一致,导致不能很好进行负载均衡。
*********************************
1 安装kafka
首先从官网获取安装包 (网址 http://kafka.apache.org/downloads)
这里目前选用kafka_2.11-1.1.1.tgz 版本
2 在src目录中解压,打开进入kafka_2.11-1.1.1文件
3 开始启动kafka,首先需要启动zookeeper(安装说明在下面)
tips:为方便快捷,需要将kafka中bin目录加载到环境变量中 打开~/.bash_profile
添加一条 export PATH=/Users/apple/src/kafka-2.11-1.1.1/bin:$PATH
保存退出,source ~/.bash_profile
开始命令:(每次开机都要启动)
(以下kafka中conf里面的配置文件都已copy到/usr/local/etc/kafka/目录下,方便管理 )
启动zookeeper系统
zookeeper-server-start.sh /usr/local/etc/kafka/zookeeper.properties
启动kafka系统
kafka-server-start.sh /usr/local/etc/kafka/server.properties
新建topic
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic zzyk
#--zookeeper是集群列表,可以指定所有节点,也可以指定为部分列表
#--replication-factor 为复制数目,数据会自动同步到其他broker上,防止某个broker宕机数据丢失
#--partitions 一个topic可以切分成多个partition,一个消费者可以消费多个partition,但一个partition只能被一个消费者消费
生产消息
kafka-console-producer.sh --broker-list localhost:9092 --topic new_topic
消费消息
kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic new_topic
查看当前全部topic
kafka-topics.sh --list --zookeeper localhost:2181
查看当前主题详细信息
kafka-topics.sh --zookeeper 127.0.0.1:2181 --describe --topic new_topic
查看全部主题信息
kafka-topics.sh --describe --zookeeper localhost:2181
查看consumer group列表(新版命令)
kafka-consumer-groups.sh --new-consumer --bootstrap-server 127.0.0.1:9092 --list
查看consumer group列表(老命令)
kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --list
删除主题:
kafka-topics.sh --delete --zookeeper localhost:2181 --topic new_topic
若需要真正删除,去除mark
可以参考该同学博文(https://blog.csdn.net/fengzheku/article/details/50585972)
这里也分享下:
此时你若想真正删除它,可以如下操作:
(1)登录zookeeper客户端:命令:./bin/zookeeper-client
(2)找到topic所在的目录:ls /brokers/topics
(3)找到要删除的topic,执行命令:rmr /brokers/topics/【topic name】即可,此时topic被彻底删除。
另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得:ls /admin/delete_topics/【topic name】,
如果你删除了此处的topic,那么marked for deletion 标记消失
删除 消费者组
kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --delete --group <group-name>
查看某个组中的topic信息
kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --group 1 --describe
-------------------------搭建Kafka broker集群-------------------------
修改config/server.properties文件 复制此配置文件分别为server-1.properties,server-2.properties,server-3.properties
//准备三份用于启动kafka服务的配置
cp server.properties server-0.properties
cp server.properties server-1.properties
cp server.properties server-2.properties
三份配置中都要修改以下
broker.id=0(三个配置中分别修改为0,1,2)
port=9092(三个配置中分别修改为9092,9093,9094)
log.dirs=/tmp/kafka-logs-0(三个配置中分别修改为/tmp/kafka-logs-0,/tmp/kafka-logs-1,/tmp/kafka-logs-2)
num.partitions=3 (都设置为3,即每个topic默认三个partition)
配置完毕后,令开启三个终端 开启kafka
kafka-server-start.sh /usr/local/etc/kafka/server-1.properties
kafka-server-start.sh /usr/local/etc/kafka/server-2.properties
kafka-server-start.sh /usr/local/etc/kafka/server-3.properties
最后就可以在php中使用kafka了~~
安装zookeeper (若已经安装kafka,则其包内带有zookeeper在 src/kafka2.11-1.1.1/libs目录中 )
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar zxvf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6
cp -rf conf/zoo_sample.cfg conf/zoo.cfg
cd conf
vim zoo.cfg
修改zook.cfg里头的dataDir (数据路径这里配置路径为dataDir=/usr/local/var/lib/zookeeper)
重要kafka配置参数中文说明
http://debugo.com/kafka-params/
https://www.cnblogs.com/weixiuli/p/6413109.html
Kafka集群生产/消费的负载均衡(Rebalance)测试
https://blog.csdn.net/cjf_wei/article/details/57121845
--------------- kafka php客户端安装(php-rdkafka) --------------
1.安装 librdkafka
git clone https://github.com/edenhill/librdkafka
cd librdkafka
./configure
make
sudo make install
2.安装php-rdkafka
git clone https://github.com/arnaud-lb/php-rdkafka.git
cd php-rdkafka
phpize
./configure
make all -j 5
sudo make install
vi /usr/local/lib/php.ini
加入 extension=rdkafka.so
-------------------------为完成此文档,提交到公司手册中,花了不少时间,也希望大家多多指出其中不正确地方,不胜感激~-------------------------
人的一切痛苦,本质上都是对自己的无能的愤怒。