简介
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。并且kafka通过zookeeper来管理服务器和集群拓扑,相当于管理了kafka的各个节点组件,所以要使用kafka,是要搭配着zookeeper来使用的
如何搭建
1、安装kafka
先安装安装librdkafka 库
git clone https://github.com/edenhill/librdkafka.git
./configure
make
sudo make install
然后安装php关于kafka的插件
git clone https://github.com/arnaud-lb/php-rdkafka.git
#生成configure文件
phpize
#编译安装
./configure --with-php-config=/usr/local/php74/bin/php-config
make
make install
#在php.ini 文件中配置 rdkafka扩展
vim /usr/local/php74/etc/php.ini
extension=rdkafka.so
#重启PHP和nginx
systemctl restart php-fpm.service
systemctl restart nginx.service
#查看扩展是否生效
php -m
还可以去http://pecl.php.net/package/rdkafka 下载插件。
2、安装zookeeper
先安装zookeeper
因为zookeeper3.5之后的版本都是免安装版,都是直接解压就可以用,但是我们待会需要安装php的zookeeper插件,又需要zookeeper源码安装,所以我们分成两种,免安装版的用来命令行管理kafka,源码安装的zookeeper用来配合安装php插件
下载地址 http://apache.communilink.net/zookeeper/
然后选择3.5.6版本,复制下载链接,在自己的服务器上
wget http://apache.communilink.net/zookeeper/zookeeper-3.5.6/apache-zookeeper-3.5.6.tar.gz
tar -zxvf apache-zookeeper-3.5.6.tar.gz
进入apache-zookeeper-3.5.6,会发现没有configure文件,这时候需要其他操作,这里推荐其他网友的方法,地址: https://erik.xyz/2019/07/30/php-pei-zhi-zookeeper3-5-5-kuo-zhan/
安装好zookeeper,以及PHP的插件
然后下载bin版本,这个是直接解压就能用的
wget http://apache.communilink.net/zookeeper/zookeeper-3.5.6/apache-zookeeper-3.5.6-bin.tar.gz
tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz
修改配置文件
cp /usr/local/zookeeper3.5_bin/conf/zoo_sample.cfg /usr/local/zookeeper3.5_bin/conf/zoo.cfg
vim /usr/local/zookeeper3.5_bin/conf/zoo.cfg
里面配置项的定义,可以参考这位大佬写的说明:https://www.cnblogs.com/skyl/p/4854553.html
下面开始尝试使用kafka
3、如何把kafka跑起来
修改kafka配置文件
vim /usr/local/kafka_2.13_bin/config/server.properties
主要是修改advertised.listeners和log.dirs
advertised.listeners主要是用来监听内网的,还有个listeners是用在内网的
但是最终都会用到listeners这个参数,所以外网的就需要advertised.listeners和listeners都要配置
内网的只需配置listeners
具体配置文件参数是啥意思看这位大佬的:https://blog.youkuaiyun.com/u010416101/article/details/53916678
还有这位大佬的 https://www.cnblogs.com/yinchengzhe/p/5111635.html
启动kafka 记得添加-daemon,指明后台运行模式
/usr/local/kafka_2.13_bin/bin/kafka-server-start.sh -daemon /usr/local/kafka_2.13_bin/config/server.properties
开启kafka生产者
/usr/local/kafka_2.13_bin/bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic testtopic
开启kafka消费者
这里有个坑,大家一定要看看
很多资料里都是
/usr/local/kafka_2.13_bin/bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic testtopic
事实上这是很旧版本的写法,意思就是讲消息存在zookeeper中,所以这里是写--zookeeper 127.0.0.1:2181,不知道大家还记得上面我们改zookeeper的配置文件的时候写的端口号么,就是2181,但是新版本的没有这个选项了,得换命令
下面才是新版本的
/usr/local/kafka_2.13_bin/bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic testtopic --from-beginning
--bootstrap-server意思是把消息存在kafka自己中,所以这时候得注意,端口得写成 :9092,kafka默认的地址
通过查看consumer的配置文件也能知道这个
vim /usr/local/kafka_2.13_bin/config/consumer.properties
接下来就试下在生产者那个界面输入东西,看看消费者这边能不能再打印出来