kafka简介

(1) topic和record简介

每个topic在kafka集群里面都会有一个或多个分区,类似如下:


kafka的topic.png

每个分区他是有序的,不可变的记录组成。详情如下:


record.png
  • 生产者往队列里面写数据
  • 消费者从队列里面读数据
  • 消费者可以从之前的某个offset读取数据,直到now。

(2)分布式

  • 分区在kafka集群里面是分布式的。每一个分区是可以通过配置进行复制、备份的。
  • 在kafka集群里面,每一个分区都会有一个主服务器(leader),也可以有零个或多个从服务器(followers),当主服务挂了的时候,从服务器(们)会选举出新的主服务器。
  • 这个主从关系是根据分区来的,也就是说一个服务器可能是某些topic的主服务器,同时也是某些topic的从服务器。

(3)Geo-Replication(地域复制)

  • 通过这个机制,消息(messages)可以被备份到不同的数据中心或者云区域(cloud regions)中。
    你可以使用该机制在积极或者消极的场景下备份/恢复消息;
  • 通过这个机制,可以使你的数据更贴近你的用户;
  • 通过这个机制,可以让你的数据来满足本地需求;

(4)生产者

生产者推送数据到对应的topic中。
生产者负责决定哪个record被分配到topic的哪个分区。通过循环的方式,可以非常简单的实现负载均衡。也可以通过某些语义来进行分类。

(5)消费者

消费者通过一个消费者组(consumer group name)来标记他们自己。每个被发布到topic上的记录,都会被发送给每一个消费者组(consumer group)上的某一个具体的实例(consumer instance);消费者实例可以被分为不同的进程,也可以在不同的机器上。

  • 如果所有的消费者实例都是同一个组,那么记录的分发会在消费者实例级别进行负载均衡
  • 如果消费者在不同的组,那么记录会被广播到所有的组。

    具体图示如下:
    消费者消息消费和分发.png

如上图所示,在kafka集群中有4个分区(P0-P3);有俩个消费者组(Consumer Group A和B),A拥有2个消费者实例(C1和C2),B拥有4个消费者实例(C3-C6);消费者实例之间的负载均衡由kafka协议控制。

  • kafka只对分区内的记录进行排序,而不对topic下的分区排序

(6)kafka能特点

  • FIFO,消息1优先于消息2被发送,那么kafka保证消息1会在消息2之前;
  • 消费者看到的记录顺序和保存的顺序一致;
  • 容错:在规模为N的集群中,允许N-1个服务宕机,且消息不丢失。

(7)kafka作为一个消息系统

kafka模型的优势在于它不仅可以成规模的处理消息,也可以拥有多个订阅者。在传统消息系统里面无法做到俩方面都支持。
kafka相对有传统消息系统而言,在消息顺序方面更加有保证。

传统消息系统的并发和有序冲突

在传统的消息系统里面,多个消费者消费一个队列的时候,尽管服务端是按照存储顺序从服务端发出的,但是在客户端那边,接收到的消息是异步的。这也意味着在并发场景下,这个顺序被打破了。想要保证顺序的话,就只能有一个消费者,这就咩有所谓的并发了。

kafka是如何解决这个问题的呢?

kafka有个并行性的概念--分区。kafka能够提供顺序保证以及负载均衡。kafka保证了一个消息只会被一个消费者实例消费。

(8)kafka作为一个存储系统

  • kafka会将数据写入到磁盘中,用来进行数据备份和容错。kafka会让生长者等待数据保存结果。
  • kafka的磁盘数据结构具有良好的可扩展性,在50k和50TB下kafka都能表现的良好。

(9)kafka用来流处理

仅仅是读、写和存储流式数据还是不够的,kafka还拥有处理实时数据流的能力。
在kafka里面,流式处理器就是一个从一个topic源源不断的读取流失数据,输出到另一个topic的工具。
kafka提供了强大了流式处理API。这允许应用程序进行简单的数据流聚合和数据流拼接。
主要有以下几种用途:
1.处理无序的数据;
2.因代码变动而需要重新处理的数据;
3.执行状态计算

(10)其他

  • kafka可以作为一个流式处理平台
  • 像HDFS这种分布式文件系统允许批量存储静态文件。这样的系统可以有效的存储和处理历史数据。
  • 传统的企业级消息系统允许处理订阅者将订阅的消息。以这种方式构建的应用在到达订阅者时进行数据处理。
  • kafka集合了以上俩种能力。这种合并不管在kafka作为一个流式处理平台方面,还是在作为流失数据处理通道方面都起到了至关重要的作用。
  • kafka作为流式数据处理通道,这种合并使得在处理实时数据的时候,kafka能做到低延时。但是,可靠的数据存储能力。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • Apache kafka是一个分布式流平台。这到底是什么意思? 我们认为流平台具有三个关键功能: 它允许发布和订阅...
    狼牙战士阅读 659评论 0 0
  • 简介 Apache Kafaka 是一个分布式流平台(distributed streaming platform...
    AaricChen阅读 1,048评论 1 9
  • 点对点消息系统 简单来说就是生产者(Producer)发送消息到队列,消费者(Consumer)从队列中取出消息。...
    郭艺宾阅读 314评论 0 0
  • 英文原文 介绍 一个流处理平台有三个关键功能: 发布订阅记录流,和消息队列和企业消息系统一样; 以容错持久...
    Anor9阅读 342评论 0 0
  • Kafka是分布式流平台。 一个流平台有3个主要特征: 发布和订阅消息流,这一点与传统的消息队列相似。 以容灾持久...
    牛初九阅读 617评论 0 1