实操docker搭建kafka集群及与PHP的整合
1 kafka场景
场景:
(1)消息系统。Kafka作为一款优秀的消息系统,具有高吞吐量、内置的分区、备份冗余分布式等特点,为大规模消息处理提供了一种很好的解决方案。
(2)应用监控。利用Kafka采集应用程序和服务器健康相关的指标,如CPU占用率、IO、内存、连接数、TPS、QPS等,然后将指标信息进行处理,从而构建一个具有监控仪表盘、曲线图等可视化监控系统。例如,很多公司采用Kafka与ELK(ElasticSearch、Logstash和Kibana)整合构建应用服务监控系统。
(3)网站用户行为追踪。为了更好地了解用户行为、操作习惯,改善用户体验,进而对产品升级改进,将用户操作轨迹、内容等信息发送到Kafka集群上,通过Hadoop、Spark或Strom等进行数据分析处理,生成相应的统计报告,为推荐系统推荐对象建模提供数据源,进而为每个用户进行个性化推荐。
(4)流处理。需要将已收集的流数据提供给其他流式计算框架进行处理,用Kafka收集流数据是一个不错的选择,而且当前版本的Kafka提供了Kafka Streams支持对流数据的处理。
(5)持久性日志。Kafka可以为外部系统提供一种持久性日志的分布式系统。日志可以在多个节点间进行备份,Kafka为故障节点数据恢复提供了一种重新同步的机制。同时,Kafka很方便与HDFS和Flume进行整合,这样就方便将Kafka采集的数据持久化到其他外部系统。
更多的场景主要是用来做日志分析系统,除了日志,网站的一些浏览数据应该也适用。(只要原始数据不需要直接存DB的都可以)
使用kafka的核心理由:分布式,高吞吐量,速度快(kafka是直接通过磁盘存储,线性读写,速度快)
2 kafka集群安装
部署分析:机器IP:192.168.188.130
需要装的docker容器有6个,3个zookeeper容器和3个kafka容器,这里我们装在一台机子上。实际场景中是6台机子。节约的话也至少是3台(每台上1个zookeeper和1个kafka)。
2.1 zookeeper 集群安装
2.1.1 这里用zookeeper
我们这里用zookeeper来做元数据/配置信息管理,具体包括:存储消费偏移量,topic话题信息,partition信息) 这些部分组成,当然zookeeper的功能肯定不止这么多,但我们这里只用到它这个功能
2.1.2 Docker 配置
docker-compose-zookeeper-cluster.yml
2.1.3 启动zookeeper集群
docker-compose -f docker-compose-zookeeper-cluster.yml up -d
这样我们就成功安装了有3个zookeeper组成的zookeeper集群。
2.1.4 查看集群
在 ZAB 算法中,存在 Leader、Follower、Observer 三种角色,现在我们就来认识下它们。
分别查看zoo1、zoo2、zoo3角色
2.2 kafka安装
Apache Kafka 是一个快速、可扩展的、高吞吐、可容错的分布式发布订阅消息系统。其具有高吞吐量、内置分区、支持数据副本和容错的特性,适合在大规模消息处理场景中使用。
2.2.1 yml文件
docker-compose-kafka-cluster.yml
执行以下命令启动
docker-compose -f docker-compose-kafka-cluster.yml up -d
可以看到 kafka 集群已经启动成功
这样,我们就成功安装了由3个kafka和3个zookeeper组成的kafka集群。并且还安装了kafka集群可视化管理工具:kafka-manager
2.2.2 可视化管理
kafka-manager 模块。它是 kafka 的可视化管理模块。因为kafka 的元数据、配置信息由 Zookeeper 管理,这里我们在 UI 页面做下相关配置。
1. 访问192.168.188.130:9008,按图示添加相关配置
或者,也可以通过命令行进行相关的操作:
3 php整合kafka
3.1 PHP生产端代码:
3.2 PHP消费端代码