Kafka是一个分布式的基于发布/订阅模式的消息队列(message Queue),主要用于大数据实时处理领域。
发布订阅模式:消息的发布者不会将消息直接发送给特定的订阅者,而是将消息分为特定的类别,订阅者只接受感兴趣的消息。最新定义:Kafka是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。 1.1 、应用场景
传统的消息队列的主要应用场景有:缓存/消峰、解耦、异步通信。
缓存/消峰:控制和优化数据流经系统的速度,解决生产和消费消息的处理速度不一致的情况。
解耦:允许你独立的扩展和修改两边的处理过程,只需要确保他们遵守同样的接口约束。
异步通信:允许用户把一个消息放入队列,单并不立即处理,然后在需要的时候去处理它。
1.2、消息队列模式
点对点
消费者主动拉取消息,消息收到后清除信息。
发布订阅
可以有多个topic主题,生产者生产消息提交到特定的主题,消费者从特定的主题中消费消息,消息消费后不被清除,每个消费者相互独立,都可以消费消息。
1.3 、基础架构
下载:地址上传至linux服务器
1.上传至/opt/ 2.解压tar -zxvf apache-zookeeper-3.8.0.tar.gz 3.将解压后的文件复制到/usr/local目录下,并重命名为zookeeper cp zookeeper-3.4.10 /usr/local/zookeeper -r 4.conf目录下,重新复制一份zoo_sample.cfg文件并命名为zoo.cfg 5.修改配置文件: dataDir=/usr/local/zookeeper/data dataLogDir=/usr/local/zookeeper/log admin.serverPort=8082#不然会出现端口被占用的情况,因为默认是和Apache.Tomcat使用的8080端口 5.配置环境变量 vi /etc/profile export ZOOKEEPER=/usr/local/zookeeper export PATH=$PATH:$ZOOKEEPER/bin source /etc/profile、 6.启动 [root@localhost ~]# zkServer.sh start //启动 [root@localhost ~]# zkServer.sh status //查看运行状态 7.启动异常 查看日志报错: java.lang.ClassNotFoundException: org.apache.zookeeper.server.quorum.QuorumPeerMain 进入zookeeper-server文件夹下,使用maven打包。 mvn package -Dmaven.test.skip=true 8.再次启动
单机启动成功:
1.下载kafka,并上传至服务器。 2.解压: tar -zxvf kafka_2.13-3.1.0.tgz 3.复制:cp kafka_2.13-3.1.0 /usr/local/kafka 4.进入/usr/local/kafka/config 5.修改配置文件server.properties **broker.id=1** //--使用单机模式可以不修改 **listeners=PLAINTEXT://:9092** //--使用单机模式可以不修改 **advertised.listeners=PLAINTEXT://host_ip:9092** //--使用单机模式可以不修改 **log.dirs=/usr/local/kafka/kafka_logs** 6.启动:在kafka目录下: bin/kafka-server-start.sh config/server.properties 7.验证: //创建主题 bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092 //发送消息 bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092 //接收消息 bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092 8.安装成功三 、Topic命令 四、porducer生产者



