vlambda博客
学习文章列表

实操docker搭建kafka集群及与PHP的整合

1 kafka场景

场景:

1)消息系统。Kafka作为一款优秀的消息系统,具有高吞吐量、内置的分区、备份冗余分布式等特点,为大规模消息处理提供了一种很好的解决方案。

2)应用监控。利用Kafka采集应用程序和服务器健康相关的指标,如CPU占用率、IO、内存、连接数、TPSQPS等,然后将指标信息进行处理,从而构建一个具有监控仪表盘、曲线图等可视化监控系统。例如,很多公司采用KafkaELKElasticSearchLogstashKibana)整合构建应用服务监控系统。

3)网站用户行为追踪。为了更好地了解用户行为、操作习惯,改善用户体验,进而对产品升级改进,将用户操作轨迹、内容等信息发送到Kafka集群上,通过HadoopSparkStrom等进行数据分析处理,生成相应的统计报告,为推荐系统推荐对象建模提供数据源,进而为每个用户进行个性化推荐。

4)流处理。需要将已收集的流数据提供给其他流式计算框架进行处理,用Kafka收集流数据是一个不错的选择,而且当前版本的Kafka提供了Kafka Streams支持对流数据的处理。

5)持久性日志。Kafka可以为外部系统提供一种持久性日志的分布式系统。日志可以在多个节点间进行备份,Kafka为故障节点数据恢复提供了一种重新同步的机制。同时,Kafka很方便与HDFSFlume进行整合,这样就方便Kafka采集的数据持久化到其他外部系统。

更多的场景主要是用来做日志分析系统,除了日志,网站的一些浏览数据应该也适用。(只要原始数据不需要直接存DB的都可以)

使用kafka的核心理由:分布式,高吞吐量,速度快(kafka是直接通过磁盘存储,线性读写,速度快)

2 kafka集群安装

部署分析:机器IP192.168.188.130

需要装的docker容器有6个,3zookeeper容器和3kafka容器,这里我们装在一台机子上。实际场景中是6台机子。节约的话也至少是3台(每台上1zookeeper1kafka)。

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

这样我们就成功安装了有3zookeeper组成的zookeeper集群。

2.1.4 查看集群

ZAB 算法中,存在 LeaderFollowerObserver 三种角色,现在我们就来认识下它们。

分别查看zoo1、zoo2、zoo3角色

实操docker搭建kafka集群及与PHP的整合

2.2 kafka安装

Apache Kafka 是一个快速、可扩展的、高吞吐、可容错的分布式发布订阅消息系统。其具有高吞吐量、内置分区、支持数据副本和容错的特性,适合在大规模消息处理场景中使用。

2.2.1 yml文件

docker-compose-kafka-cluster.yml

实操docker搭建kafka集群及与PHP的整合

执行以下命令启动

docker-compose -f docker-compose-kafka-cluster.yml up -d

实操docker搭建kafka集群及与PHP的整合


可以看到 kafka 集群已经启动成功

这样,我们就成功安装了由3kafka3zookeeper组成的kafka集群。并且还安装了kafka集群可视化管理工具:kafka-manager

2.2.2 可视化管理

kafka-manager 模块。它是 kafka 的可视化管理模块。因为kafka 的元数据、配置信息由 Zookeeper 管理,这里我们在 UI 页面做下相关配置。

1. 访问192.168.188.130:9008,按图示添加相关配置

实操docker搭建kafka集群及与PHP的整合

或者,也可以通过命令行进行相关的操作:

实操docker搭建kafka集群及与PHP的整合


3 php整合kafka

3.1 PHP生产端代码:

实操docker搭建kafka集群及与PHP的整合 

3.2 PHP消费端代码