赞
踩
Kafka是一种分布式的,基于发布/订阅的消息系统。特点如下:
1、以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。
2、高吞吐量,即使在非常廉价的商用机器上也能做到单机每秒100k条以上消息的传输。
3、支持Kafka Server间的消息分区及分布式消费,同时保证每个Partition内的消息顺序传输。
4、同时支持离线数据处理和实时数据处理。
5、Scale out,支持在线水平拓展。
消息队列的优点:1、解耦 2、冗余 3、拓展性 4、灵活性和峰值处理能力 5、可恢复性 6、顺序保证(kafka保证一个partition内的数据是有序的) 7、缓冲 8、异步通信
Producer:消息生产者,向kafka broker发消息客户端
Consumer:消息消费者,向kafka broker取(拉)消息的客户端
Consumer Group:每个消费者都属于一个组
Topic:消息分类主题,可理解为一个队列,一个topic里有多个partition
Partition:为实现拓展性,一个大的topic可以分布在多个broker上,一个topic可以分为多个partition,每个partition是一个有序队列。
Broker:一台kafka服务器就是一个broker,一个集群由多个broker组成
环境:VM虚拟机,CentOS,JDK,Kafka
1、在VM虚拟机中使用Centos系统安装kafka,kafka的安装需要JDk的环境,注意新版kafka不支持jkd7,安装jdk8即可。
2、配置server.properties,这里做单机版学习,不做集群部署,注意配置对外开放host及port,不然无法访问,即打开配置文件中listeners及advertised.listeners。
3、kafka需要zookeeper环境,先启动bin/zookeeper-server-start.sh config/zookeeper.properties 再启动bin/kafka-server-start.sh config/server.properties。
4、服务端命令测试kafka,生产者启动bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test,消费者启动bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning。
5、web环境测试,新建Springboot项目,引入kafka依赖,配置基本yml,添加Producer,使用KafkaTemplate类send()发送消息,添加消费者Consumer类,使用@KafkaListener监听topic,通过ConsumerRecord进行接收。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。