python使⽤kafka初步⼊门
kafka的使⽤
zookeeper相关
zookeeper的安装,查看⽂档:zookeeper的使⽤
在kafka中,zookeeper主要存kafka节点的数据。
查看znode信息,可以看到kafka的 broker, topic等信息
可以使⽤zookeeper命令,⽤来模拟创建topic,在kafka使⽤ kafka-topics.sh 也是能查到数据的。
所以证明,kafka的许多信息就是使⽤zookeeper来存取的。
安装kafka
直接下载,解压就⾏。
kafka的⼀些特性
1. ⾼吞吐量、低延迟;
2. 可扩展性;
3. 持久性、可靠性;
4. 容错性;
5. ⾼并发;
6. ⽀持实时在线处理和离线处理。
kafka的使⽤场景
官⽅⽂档显⽰如下⼏种场景可以使⽤:
1. ⽹站活动追踪
⽤户的活动追踪,⽹站的活动(⽹页游览,搜索或其他⽤户的操作信息)发布到不同的话题中⼼,这些消息可实时处理,实时监测,也可加载到Hadoop或离线处理数据仓库
2. 指标
分布式应⽤程序⽣成的统计数据集中聚合
3. ⽇志聚合
使⽤kafka代替⼀个⽇志聚合的解决⽅案。
4. 流处理
kafka消息处理包含多个阶段。其中原始输⼊数据是从kafka主题消费的,然后汇总,丰富,或者以其他的⽅式处理转化为新主题
5. 事件采集
事件采集是⼀种应⽤程序的设计风格,其中状态的变化根据时间的顺序记录下来,kafka⽀持这种⾮常⼤的存储⽇志数据的场景。
6. 提交⽇志
kafka可以作为⼀种分布式的外部提交⽇志,⽇志帮助节点之间复制数据,并作为失败的节点来恢复数据重新同步。
kafka的⼀些基本概念
Topic(主题)
每⼀类的消息,称之为⼀个主题。
⼀个主题能分为多个partition,每个partition对应⼀个⽂件夹,每⼀个消息发送到Broker时,会根据partition规则选择存储到哪⼀个partition。
Producer(⽣产者)
发布消息的对象。
producer将会与topic所有的partition leader保持socker连接;
消息由producer直接通过socket发送到broker,中间不会经过任何路由层;
事实上,消息被路由到哪个partition由producer决定
Consumer(消费者)
订阅消息并处理发布消息。
kafka稳定状态下,每⼀个consumer实例只会消费某⼀个或多个特定的partition的数据。consumer与partition的数⽬有以下三种对应关系:
1. consumer < partition , ⾄少有⼀个consumer会消费多个partition的数据;
2. consumer = partition , 正好有⼀个consumer消费⼀个partition数据;
3. consumer > parition, 会有部分consumer⽆法消费该topic下任何⼀条消息。
kafka对于消费消息:
4. 不删除已消费的消息;
1. 基于时间
2. 基于partition⽂件⼤⼩
5. 保证同⼀个consumer group只有⼀个consumer会消费⼀条消息;
6. 允许不同consumer group同时消费⼀条消息。