1、 概述
Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数据。活跃的流式数据在web网站应用中非常常见,这些数据包括网站的pv、用户访问了什么内容,搜索了什么内容等。 这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。
2、 设计目标
(2)高吞吐率。即使在普通的节点上每秒钟也能处理成百上千的message。
(4)支持数据并行加载到Hadoop中。
3、 KafKa部署结构
(1)message(消息)是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。如果consumer订阅了这个主题,那么新发布的消息就会广播给这些consumer。
4、 KafKa关键技术点
(1) zero-copy
(2) Exactly once message transfer
(3)Push/pull
(4)负载均衡和容错
broker和consumer之间利用zookeeper进行负载均衡。所有broker和consumer都会在zookeeper中进行注册,且zookeeper会保存他们的一些元数据信息。如果某个broker和consumer发生了变化,所有其他的broker和consumer都会得到通知。
【参考资料】
Kafka主页:http://sna-projects.com/kafka/design.php
Zero-copy原理:https://www.ibm.com/developerworks/linux/library/j-zerocopy/
Kafka与Hadoop:http://sna-projects.com/sna/media/kafka_hadoop.pdf