美文网首页
kafka随手笔记

kafka随手笔记

作者: 血无痕_4738 | 来源:发表于2018-11-07 17:59 被阅读0次

kafka一直在大数据中承受着数据的压力也扮演着对数据维护转换的角色,下面重点介绍kafka大致组成及其partition副本的分配原则:

文章参考: http://www.linkedkeeper.com/detail/blog.action?bid=1016

Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。

kafka主要设计目标如下:

1.以时间复杂度为O(1)的方式提供消息持久化能力,及时对TB级以上数据也能保证常数时间的访问性能。

2.高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条(100000条-----10万)消息的传输。

3.支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。

4.同时支持离线数据处理和实时数据处理。

Kafka专用术语:(建议这个重点看下,再去看后面部分不会晕)

1.broker:消息中间件处理节点,一个kafka节点就是一个broker,多个broker可以组成一个kafka集群。

2.topic:某一类消息,kafka集群能够同时负责多个topic的分发。

3.partition:topic物理上的分组,一个topic可分成多个partion,每个partition为一个目录,是一个有序的队列。partiton命名规则为topic名称+有序序号,第一个partiton序号从0开始,序号最大值为partitions数量减1。 每个partion(目录)相当于一个巨型文件被平均分配到多个大小相等segment(段)数据文件中。但每个段segment file消息数量不一定相等,这种特性方便old segment file快速被删除。默认保留7天的数据。

4.segment:partition物理上由多个segment组成。segment file组成:由2大部分组成,分别为index file和data file,此2个文件一一对应,成对出现,后缀".index"和“.log”分别表示为segment索引文件、数据文件。

segment file组成

segment文件命名规则:partion全局的第一个segment从0开始,后续每个segment文件名为上一个segment文件最后一条消息的offset值。数值最大为64位long大小,19位数字字符长度,没有数字用0填充。segment中index与data file对应关系物理结构如下:

segment中index与data file对应关系物理结构

5.offset:每个partition都由一系列有序的,不可变的消息组成,这些消息被连续的追加到partition中。partition中的每个消息都有一个连续的序列号叫offset,用于partition唯一标识一条消息的标记。

副本(replication)策略

    1.数据同步

    kafka 0.8后提供了Replication机制来保证Broker的failover。

    引入Replication之后,同一个Partition可能会有多个Replica,而这时需要在这些Replication之间选出一个Leader,Producer和Consumer只与这个Leader交互,其它Replica作为Follower从Leader中复制数据。

        2.副本放置策略

                    Kafka分配Replica的算法如下(注意!!! 下面的broker、partition副本数这些编号都是从0开始编号的):

     将所有存活的N个Brokers和待分配的Partition排序

                  将第i个Partition分配到第(i mod n)个Broker上,这个Partition的第一个Replica存在于这个分配的Broker上,并且会作为partition的优先副本( 这里就基本说明了一个topic的partition在集群上的大致分布情况 )

     将第i个Partition的第j个Replica分配到第((i + j) mod n)个Broker上

     假设集群一共有4个brokers,一个topic有4个partition,每个Partition有3个副本。下图是每个Broker上的副本分配情况。

每个Broker上的副本分配情况

对于Kafka而言,定义一个Broker是否“活着”包含两个条件:

一是它必须维护与ZooKeeper的session(这个通过ZooKeeper的Heartbeat机制来实现)。

二是Follower必须能够及时将Leader的消息复制过来,不能“落后太多”。

重点在于kafka中partition的副本放置算法,同时间接说明了一个topic的partition在集群中的分配情况...

数据有序的讨论? 

一个partition的数据是否是有序的? 间隔性有序,不连续 

针对一个topic里面的数据,只能做到partition内部有序,不能做到全局有序。 

特别加入消费者的场景后,如何保证消费者消费的数据全局有序的?伪命题。

只有一种情况下才能保证全局有序?就是只有一个partition。

相关文章

  • kafka随手笔记

    kafka一直在大数据中承受着数据的压力也扮演着对数据维护转换的角色,下面重点介绍kafka大致组成及其parti...

  • Kafka学习笔记

    kafka笔记 0. Kafka 安装 下载 wget http://mirrors.shu.edu.cn/apa...

  • 我在读《人生效率手册》——教你作随手笔记

    用康奈尔笔记法来做属于你的随手笔记。 阅读前我的问题—— 什么是康奈尔笔记法? 怎么做随手笔记? 重点—— 输入是...

  • 【Kafka】Kafka入门手记

    1. 前言 本文为 Kafka 入门笔记,主要包括 Kafka 单节点部署、生产消费消息,以及新手踩坑记录。 Ka...

  • sptest

    # Spring Kafka 学习笔记 ## 1 接收消息 接收消息需要提供MessageListenerCont...

  • Kafka学习笔记

    Kafka 学习笔记 内容大部分引用自Info - Apache Kafka:下一代分布式消息系统 原文作者Abh...

  • Kafka笔记

    earliest 当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开...

  • kafka笔记

    kafka的定义:是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Act...

  • Kafka笔记

    Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息...

  • Kafka笔记

    Kafka安装 1、下载:http://kafka.apache.org/downloads2、安装:tar -z...

网友评论

      本文标题:kafka随手笔记

      本文链接:https://www.haomeiwen.com/subject/iodvxqtx.html