Kafka学习记录
2016-09-24 12:59
274 查看
1 Kafka的基本介绍
Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。具有快速、可扩展、分布式、可复制等特点。Kafka与传统消息系统相比,有以下不同:它被设计为一个分布式系统,易于向外扩展;
它同时为发布和订阅提供高吞吐量;
它支持多订阅者,当失败时能自动平衡消费者;
它将消息持久化到磁盘,因此可用于批量消费。
1.1 相关概念
topic每条发布到Kafka集群的消息都有一个类别,这个类别被称为topic。(物理上不同topic的消息分开存储,逻辑上一个topic的消息虽然保存于一个或多个broker上但用户只需指定消息的topic即可生产或消费数据而不必关心数据存于何处)
partition
parition是物理上的概念,每个topic包含一个或多个partition,创建topic时可指定parition数量。每个partition对应于一个文件夹,该文件夹下存储该partition的数据和索引文件
broker
Kafka集群包含一个或多个服务器,这种服务器被称为broker
生产者
负责发布消息到Kafka broker
消费者
消费消息。每个consumer属于一个特定的consumer group(可为每个consumer指定group name,若不指定group name则属于默认的group)。使用consumer high level API时,同一topic的一条消息只能被同一个consumer group内的一个consumer消费,但多个consumer group可同时消费这一消息。
1.2 架构
如上图所示,一个典型的kafka集群中包含若干producer(可以是web前端产生的page view,或者是服务器日志,系统CPU、memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干consumer group,以及一个Zookeeper集群。Kafka通过Zookeeper管理集群配置,选举leader,以及在consumer group发生变化时进行rebalance。producer使用push模式将消息发布到broker,consumer使用pull模式从broker订阅并消费消息。
2 Kafka的配置参数
可在$KAFKA_HOME/config/server.properties文件中指定如下参数:#当前broker的ID broker.id=0 #broker服务监控的端口 port=9092 #当前broker的主机名,可以是IP地址 host.name=192.168.1.7 #创建topic时,默认的分区数量 num.partitions=1 #基于时间删除消息,与基于分区容量删除消息,为两种删除策略,哪种先达到,哪种就触发 log.retention.hours=168 #基于分区容量删除消息 log.retention.bytes=1073741824 #partition级别的复制数量 default.replication.factor = 1 #zookeeper的连接IP及端口 zookeeper.connect=localhost:2181
3 Kafka的常用命令
#启动zookeeper服务器 bin/zookeeper-server-start.sh config/zookeeper.properties #启动kafka server bin/kafka-server-start.sh config/server.properties #创建topic bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test #list topic bin/kafka-topics.sh --list --zookeeper localhost:2181 #向broker发送数据 bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test #从broker拉取数据 bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
相关文章推荐
- Kafka学习笔记——使用Kafka记录APP的操作日志
- Kafka学习笔记——使用Kafka记录APP的操作日志
- kafka学习记录
- kafka/zookeeper学习记录
- kafka学习记录
- 消息队列Kafka学习记录
- kafka的学习记录——kafka消费组
- .NET WEB SERVICE 学习记录(二)
- 我想博客园同我一起成长,在这里记录着我的工作、学习、生活!
- .NET WEB SERVICES 学习记录(三)
- 记录今天学习SQL遇到的一个小问题
- 动态网页学习:JSP学习笔记全记录
- 学习Spring Framework的记录(1)
- .net学习点滴记录
- sql 学习记录
- ADO.net学习记录 (一)
- JavaScript 的学习记录。
- 记录我在C++学习中的点点滴滴!
- Lua学习记录
- Gtk2 - perl 学习记录