《Hadoop生态系统及开发 实训手册 实训16 Kafka发布订阅消息系统实现.docx》由会员分享,可在线阅读,更多相关《Hadoop生态系统及开发 实训手册 实训16 Kafka发布订阅消息系统实现.docx(2页珍藏版)》请在第一文库网上搜索。
1、实训6.4 Kafka发布订阅消息系统实现L实训目的通过本实训,理解常用的Kafka发布订阅消息系统的命令,熟悉Kafka订阅 推送消息的步躲与流程。2 .实训内容本实训通过启动Kafka集群,然后模拟推送消息与订阅消息,操作Kafka的 相关操作命令。3 .实训要求以小组为单元进行实训,每小组5人,小组自协商选一位组长,由组长安排 和分配实训任务,具体参考实训操作环节。小组成员需确保ZoOKeePer集群与 Kafka集群是否安装准确。4 .准备知识(1)消息队列的意义使用消息队列有利于解耦、异步、削峰。解耦:如系统A对接了系统B和系统C,需要完成相应的接口对接,如果 有了消息队列组件对接系
2、统A,则不再需要在系统A中完成相应的接口,只需要 让系统B和系统C按照一定的规则接上消息队列组件即可。异步:没有消息队列的时候,如果有一个消息传输路径为系统A到系统B 再到系统C,所消耗的时间应该是同步进行的,消耗的时间为系统间时间之和, 如果用消息队列,则可以让系统A对接消息队列组件,然后让其他系统直接在组 件里订阅即可,节省了时间,与上面描述的过程类似。削峰:当信息并发量非常大时,所有的请求如果直接请求数据库,极大可 能会造成数据库连接异常等故障,此时可以增加一个消息队列组件,让系统A 按照数据库能处理的并发量缓慢拉去消息队列中的消息。5 .实训步骤(1)发布订阅消息实现启动 ZooKee
3、per 与 Kafka确保ZOOKeePer与Kafka已启动(没启动则用下面指令启动,master slave 1 SIaVe2都要执行):zkSen,er.sh startkafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties创建Topic创建ToPiC (名称为my_repl5_tOPic, 3个分区,复制因子为3) master节点执行:kafka-topics.sh create -replication-factor 3 -partitions 3 topic mytopic bootstrap-serv
4、er master:9092,slave 1:9092,slave2:9092操作结果如图6-34所示。root伽aster config# kafka-topics.sh -create - replication - factor 3 -partitio ns 3 -topic mytopic -bootstrap-server master:992islavel:992,slave2:9092 Created topic mytopic.图6-34仓犍Topic查看创建的Topic描述:kafka-topics.sh -describe -topic mytopic -bootstrap
5、-server master:9092,slave 1:9092,slave2:9092操作富果如图6-35所示。(root0naster config# kafka-topics.sh -describe -topic aytopic -bootstrap-server Baster:992,sIave1:992rsiave2:992Topic: nytopicTopicId: 5qijBJ6bS5072KfETltYyAPartitionCount: 3ReplIcationFactor: 3 Configs:Topic:mytopicPartition:Leader:Replicas:0
6、,1,2Isr:vl,2Topic:mytopicPartition:1Leader:2Replicas:2,0,1Isr:2,0,1Topic:InytoPiCPartition:2Leader:1RePIiCds:l,2.Isr:1,2,6图6-35查看创建的Topic启动生产者Producer在master节点启动PrOdUCer (处于等待状态):kafka-console-producer.sh -broker-list master:9092,slave 1:9092,slave2:9092 topic mytopic 操作结果如图6-36所示。IroOt刨aster config
7、# kafkaconsole-producer.sh -broker-list master:992,slavel:992,slave2:992 -topic mytopic图 6-36 启动 ProdUCer启动消费者Consumer在SIaVel节点启动COnSUmer (处于等待状态):kafka-console-consumer.sh -bootstrap-server master:9092,slave 1:9092,slave2:9092 topic mytopic操作孺果如图6-37所示二(root5lavel -# kafka-console-consuner.sh -boot
8、strap-server master:992,slave1:992,slave2:992 -topic mytopic图 6-37 启动 Consumer(2)演示发布订阅消息系统发布与订阅消息切换到master终端,输入纹E内容:hello kafkahello world操作结果如图6-38所示。rootaser config# kafka-console-producer.sh -broker-list master:992,slave1:992,slave2:992 -topic mytopic ello kafka I*wllo world图6-38发布消息切换到SlaVel终端,可查看到内容。操作结果如图6-39所示。IrootQslavel )# kafka-console-consuraer.sh -boot st rap-se rve r master:992, slave1:992, slave2:992 -topic mytopic hello kafka / hello world 图6-39订阅消息至此,发布消息以及订阅消息的过程就完成了。6 .实训总结本次实训注意要安装配置好ZooKeeper, Kafka的安装部署,对Kafka和 ZOOKeePer前面的实训最好都认真了解过,才能对本实训进行扩展,比如自行 实训找出Topic的存储位置等等。