Kafka介绍
现代互联网分布式系统,离不开几个中间件:远程调用(RPC)框架、消息队列、数据库访问中间件。Kafka是一种高吞吐量的分布式发布订阅的消息队列系统,用Scala语言实现,具有高性能、持久化、多副本备份、横向扩展能力。生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。一般在架构设计中起到解耦、削峰、异步处理的作用。主要用于日志收集、监控数据聚合、流式数据处理、在线和离线分析,跟踪IoT传感器等大数据领域。 官网地址:http://kafka.apache.org
Kafka特点
- 高吞吐率;
- 支持C#等多语言,rocketmq主要面向java;
- 提供消息持久化能力,可应对TB级以上数据;
- 支持离线数据处理和实时数据处理;
- 支持在线水平扩展
相关概念
Producer:消息生产者。
Consumer:消息消费者。
Consumer Group:消费者组每个消费者负责消费不同分区的数据,提高消费能力。
Broker:集群由多个Broker组成。Broker容纳多个Topic。
Topic:Topic将消息分类,生产者和消费者面向的是同一个Topic。
Partition:实现扩展性,提高并发能力,每个Partition是一个有序队列。
Replica:副本,实现备份功能,保证集群节点数据不丢失。
Offset:消费者消费的位置信息。
ZooKeeper:Kafka集群依赖于ZooKeeper,帮助Kafka存储和管理集群信息。
安装步骤
1 下载安装
tar -xzf kafka_2.11-2.3.0.tgz
2 调整配置文件 conf/server.properties
默认端口号9092,可以修改调整。
3 启动/停止服务
启动服务:./bin/kafka-server-start.sh config/server.properties &
停止服务:/bin/kafka-server-stop.sh
测试消息
创建主题
/bin/kafka-topics.sh --create --zookeeper localhost:2181
--replication-factor 1
--partitions 1
--topic test
发送消息
/bin/kafka-console-producer.sh
--broker-list localhost:9092
--topic test
#进入输入模式,输入信息,例如:
hello world
获取消息
/bin/kafka-console-consumer.sh
--bootstrap-server localhost:9092
--topic test
--from-beginning
便会显示出刚才发送的消息:
hello world