Kafka作用:
1. 分布式流计算平台
2. 类似于消息系统发布订阅数据流
3. 以分布式、副本集群方式存储数据
4. 实时处理数据流
5. 构建实时数据流管道,水平可伸缩、容错、速度快
特点:
1. 巨量数据,TB级
2. 高吞吐量 支持每秒百万消息
3. 分布式 支持在多个server之间进行消息分区
4. 多语言客户端支持
技术特点:
1. 消息缓存与FileSystem的存储,数据被即刻写入OS内核页,并缓存以及清理磁盘(可配置)
2. 消息被消费后,Kafka长时间驻留消息,如有必要可以重复消费。
3. 对分组消息使用消息Set,防止网络过载。
4. 使用消费者维护消费状态
5. 消费者状态(进程死活)默认存在Zookeeper中,也可存在于其它OLTP中
6. Kafka中的生产和消费是Pull-Push模式。
7. Kafka没有主从模式,所有broker地位相同。broker元数据均在zk中维护,并在producer和consumer之间共享。
8. Kafka的LB(load balance)策略可使producer动态发现broker。
9. Producer维护了broker的连接池,并能够通过zk的watcher call机制实时进行更新
10. Producer可以选择同步或异步方式向broker发送消息。
Kafka 副本机制:
1. 每个分区存放n个副本,可承受n-1个节点失效。
2. 这n个副本中有一个是leader,它同时维护者所有副本的同步状态。
3. 如果leader失效,会通知producer,然后producer将消息重新发送给新的leader。
4. 选择新leader的方法是:所有follower在zookeeper中注册自己,最先注册的是leader,其它是follower。
5. Kafka支持的副本机制有:
同步机制: producer从zookeeper中找到leader,向leader发送消息,消息写入leader本地log。follower从leader中pull消息,每个follower将消息写入本地log,向leader发送确认回执。leader收到follower的确认回执后再想producer发送确认回执。 在consumer端,所有的消息是从leader中pull的。
异步机制:与同步机制不同的是一旦leader向log写入message完成就会向producer发送确认回执。所以这种机制不保证向失效的follower写入成功。
严重推荐:
http://www.jasongj.com/tags/Kafka/ kafka系列文章