Kafka - 51CTO.COM

Download Report

Transcript Kafka - 51CTO.COM

Kafka基础知识
Kafka基础知识
•
•
•
•
•
产生背景
设计理念
部署架构
基本概念
关键技术
Kafka基础知识
• 产生背景
传统的日志分析系统提供了一种离线处理日志信
息的可扩展方案,但若要进行实时处理,通常会有较
大延迟。而现有的消(队列)系统能够很好的处理实
时或者近似 实时的应用,但未处理的数据通常不会
写到磁盘上,这对于Hadoop之类(一小时或者一天只
处理一部分数据)的离线应用而言,可能存在问题。
Kafka正 是为了解决以上问题而设计的,它能够很好
地离线和在线应用。
Kafka基础知识
• 设计理念
 (1)数据在磁盘上存取代价为O(1)。一般数据在磁盘上
是使用BTree存储的,存取代价为O(lgn)。
 (2)高吞吐率。即使在普通的节点上每秒钟也能处理成
百上千的message。
 (3)显式分布式,即所有的producer、broker和
consumer都会有多个,均为分布式的。
 (4)支持数据并行加载到Hadoop中。
Kafka基础知识
• 设计理念-另一种说法
 1、关注大吞吐量,而不是别的特性
 2、针对实时性场景
 3、关于消息被处理的状态是在consumer端维护,而不是
由kafka server端维护。
 4、分布式,producer、broker和consumer都分布于多台机
器上。
Kafka基础知识
• 部署架构
Kakfa是显式分布式架构,producer、broker(Kafka
)和consumer都可以有多个。
Kafka基础知识
• 基本概念
 几个术语
(1)message(消息)是通信的基本单位,每个producer可以向
一个topic(主题)发布一些消息。如果consumer订阅了这个主
题,那么新发布的消息就会广播给这些consumer。
(2)Kafka是显式分布式的,多个producer、consumer和broker
可以运行在一个大的集群上,作为一个逻辑整体对外提供服务。
对于 consumer,多个consumer可以组成一个group,这个
message只能传输给某个group中的某一个consumer.
(3)topic:在kafka中,不同的数据可以按照不同的topic存储。
Kafka基础知识
• 基本概念
 依赖技术
(1)硬件上,kafka利用线性存储来进行硬盘直接读写。
(2)kafka没有使用内存作为缓存。
(3)用zero-copy。
(4)Gzip和Snappy压缩
(5)kafka对事务处理比较弱,但是message分发上还是做
了一定的策略来保证数据递送的准确性的。
Kafka基础知识
• 基本概念
 关于存储的几个概念
(1)Partition:同一个topic下可以设置多个partition,目的
是为了提高并行处理的能力。可以将同一个topic下的
message存储到不同的paritition下。
(2)Offset:kafka的存储文件都是按照offset.kafka来命名,
用offset做名字的好处是方便查找。
Kafka基础知识
• 基本概念
 分布式方面
(1)broker的部署是没有主从结构的,每个节点都是同等的,
节点的增减和减少都不需要改变任何配置。
(2)producer和consumer通过zookeeper去发现topic,并通
过zookeeper来协调生产和消费的过程。
(3)producer、consumer和broker均采用TCP连接,通信基
于NIO实现。并且Producer和consumer能自动检测broker的
增加和减少。
Kafka基础知识
• 关键技术
 zero-copy
在Kafka上,有两个原因可能导致低效:1)太多的网
络请求 2)过多的字节拷贝。为了提高效率,Kafka把
message分成一组一组的,每次请求会把一组message发给
相应的consumer。 此外, 为了减少字节拷贝,采用了
sendfile系统调用。
http://www.ibm.com/developerworks/cn/linux/l-cnzerocopy2/
Kafka基础知识
• 关键技术
 Exactly once message transfer
怎样记录每个consumer处理的信息的状态?在Kafka
中仅保存了每个consumer已经处理数据的offset。这样有
两个好处:1)保存的数据量少 2)当consumer出错时,
重新启动consumer处理数据时,只需从最近的offset开始
处理数据即可。
Kafka基础知识
• 关键技术
 Push/pull
Producer 向Kafka(push)推数据,consumer 从kafka
拉(pull)数据。
Kafka基础知识
• 关键技术
 负载均衡和容错
Producer和broker之间没有负载均衡机制。broker和
consumer之间利用zookeeper进行负载均衡。所有broker和
consumer都会在zookeeper中进行注册,且 zookeeper会保
存他们的一些元数据信息。如果某个broker和consumer发
生了变化,所有其他的broker和consumer都会得到 通知。