1 / 14

Kafka 基础知识

Kafka 基础知识. Kafka 基础知识. 产生背景 设计理念 部署架构 基本概念 关键技术. Kafka 基础知识. 产生背景 传统的日志分析系统提供了一种离线处理日志信息的可扩展方案,但若要进行实时处理,通常会有较大延迟。而现有的消(队列)系统能够很好的处理实时或者近似 实时的应用,但未处理的数据通常不会写到磁盘上,这对于 Hadoop 之类(一小时或者一天只处理一部分数据)的离线应用而言,可能存在问题。 Kafka 正 是为了解决以上问题而设计的,它能够很好地离线和在线应用。. Kafka 基础知识. 设计理念

dinh
Download Presentation

Kafka 基础知识

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Kafka基础知识

  2. Kafka基础知识 • 产生背景 • 设计理念 • 部署架构 • 基本概念 • 关键技术

  3. Kafka基础知识 • 产生背景 传统的日志分析系统提供了一种离线处理日志信息的可扩展方案,但若要进行实时处理,通常会有较大延迟。而现有的消(队列)系统能够很好的处理实时或者近似 实时的应用,但未处理的数据通常不会写到磁盘上,这对于Hadoop之类(一小时或者一天只处理一部分数据)的离线应用而言,可能存在问题。Kafka正 是为了解决以上问题而设计的,它能够很好地离线和在线应用。

  4. Kafka基础知识 • 设计理念 • (1)数据在磁盘上存取代价为O(1)。一般数据在磁盘上是使用BTree存储的,存取代价为O(lgn)。 • (2)高吞吐率。即使在普通的节点上每秒钟也能处理成百上千的message。 • (3)显式分布式,即所有的producer、broker和consumer都会有多个,均为分布式的。 • (4)支持数据并行加载到Hadoop中。

  5. Kafka基础知识 • 设计理念-另一种说法 • 1、关注大吞吐量,而不是别的特性 • 2、针对实时性场景 • 3、关于消息被处理的状态是在consumer端维护,而不是由kafka server端维护。 • 4、分布式,producer、broker和consumer都分布于多台机器上。

  6. Kafka基础知识 • 部署架构 Kakfa是显式分布式架构,producer、broker(Kafka)和consumer都可以有多个。

  7. Kafka基础知识 • 基本概念 • 几个术语 (1)message(消息)是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。如果consumer订阅了这个主题,那么新发布的消息就会广播给这些consumer。 (2)Kafka是显式分布式的,多个producer、consumer和broker可以运行在一个大的集群上,作为一个逻辑整体对外提供服务。对于 consumer,多个consumer可以组成一个group,这个message只能传输给某个group中的某一个consumer. (3)topic:在kafka中,不同的数据可以按照不同的topic存储。

  8. Kafka基础知识 • 基本概念 • 依赖技术 (1)硬件上,kafka利用线性存储来进行硬盘直接读写。 (2)kafka没有使用内存作为缓存。 (3)用zero-copy。 (4)Gzip和Snappy压缩 (5)kafka对事务处理比较弱,但是message分发上还是做了一定的策略来保证数据递送的准确性的。

  9. Kafka基础知识 • 基本概念 • 关于存储的几个概念 (1)Partition:同一个topic下可以设置多个partition,目的是为了提高并行处理的能力。可以将同一个topic下的message存储到不同的paritition下。 (2)Offset:kafka的存储文件都是按照offset.kafka来命名,用offset做名字的好处是方便查找。

  10. Kafka基础知识 • 基本概念 • 分布式方面 (1)broker的部署是没有主从结构的,每个节点都是同等的,节点的增减和减少都不需要改变任何配置。 (2)producer和consumer通过zookeeper去发现topic,并通过zookeeper来协调生产和消费的过程。 (3)producer、consumer和broker均采用TCP连接,通信基于NIO实现。并且Producer和consumer能自动检测broker的增加和减少。

  11. Kafka基础知识 • 关键技术 • zero-copy 在Kafka上,有两个原因可能导致低效:1)太多的网络请求 2)过多的字节拷贝。为了提高效率,Kafka把message分成一组一组的,每次请求会把一组message发给相应的consumer。 此外, 为了减少字节拷贝,采用了sendfile系统调用。 http://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy2/

  12. Kafka基础知识 • 关键技术 • Exactly once message transfer 怎样记录每个consumer处理的信息的状态?在Kafka中仅保存了每个consumer已经处理数据的offset。这样有两个好处:1)保存的数据量少 2)当consumer出错时,重新启动consumer处理数据时,只需从最近的offset开始处理数据即可。

  13. Kafka基础知识 • 关键技术 • Push/pull Producer 向Kafka(push)推数据,consumer 从kafka拉(pull)数据。

  14. Kafka基础知识 • 关键技术 • 负载均衡和容错 Producer和broker之间没有负载均衡机制。broker和consumer之间利用zookeeper进行负载均衡。所有broker和consumer都会在zookeeper中进行注册,且 zookeeper会保存他们的一些元数据信息。如果某个broker和consumer发生了变化,所有其他的broker和consumer都会得到 通知。

More Related