大数据高吞吐量的分布式消息队列系统 Kafka

85人浏览

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