"图解"kafka

Kafka是一款开源的事件流软件,它可以帮助你构建基于事件驱动的系统。虽然有其他的学习指南,但是我更关注的是将Kafka背后的主要概念图形化。这样,当你阅读其他指南时,你会感到更自信。

Basics

在我们开始之前,让我们确保我们在关于Kafka的看法是一致的。 它是一款事件流软件。 它让后端服务(通常在微服务体系结构中)彼此通信。

图片.png

生产者和消费者

生产者和消费者是在Kafka中监听或发送消息的服务。这些服务是您的后端服务。


图片.png

一个服务可以是生产者又可以是消费者。

图片.png

主题(topic)

主题是生产者可以向其发送消息的地址。其他服务可以监听这些主题。


图片.png

一个服务可以监听消息并发送消息到它想要的任意多个主题。


图片.png

还有一个消费者组的概念。这是一组充当单一消费者的服务。


图片.png

主题可以充当消息的队列。让我们来看看这个。首先,发送一条消息。


Producer sending message to Kafka topic..png

然后,该消息被记录并存储在该队列中。此消息无法被修改的。


Message getting stored on the queue.png

该消息也被发送给监听该主题的消费者。 但是,但是,该消息将永久保存在队列中,不能进行修改。

图片.png

让我们发送另一个消息。只是为了再次强调一下。


发送第二条消息到Topic A.png

与前面一样,该消息将被发送到消费者并存储在队列中。您不能更改消息,它们将被永久存储。


图片.png

这是我们的Kafka集群中的每个主题。
图片.png

这些不可变队列允许我们异步存储消息,而不管生产者或消费者是否出现故障。它还保证消息的正确性(它们没有被篡改)。

让我们剖开Kafka主题,看看内部。

分区(Partitions)

我说谎了。一个Kafka主题并不是一个真正的队列,而是由许多称为分区的队列组成的!


图片.png

当生产者向主题发布消息时,该消息将被路由到单个分区。


图片.png

消费者监听所有分区并接收所有分区的事件。


图片.png

默认情况下,生产者将向主题发送消息。主题将确定消息将转到哪个分区。默认情况下,消息将通过轮询策略分配给分区。
图片.png

您可以配置主题(而不是服务)来将消息分割到不同的分区。例如,如果您正在处理用户消息(并且有一个用户id),那么您可以确保同一用户的消息分配到同一个分区内。您可以通过对用户id进行hash计算,然后根据分区数对其进行计算(如:hash值/分区数 )。你明白了吧。


图片.png

这样搞的好处是什么呢?好处在于分区中的每条消息都保证按时间顺序排列,因此可以按顺序消费。


图片.png

进入该分区的每条消息都在该分区中排序。 即使有多个用户(或其他实体)映射到相同的分区(红色/绿色)。 您仍然可以为每个订购用户消息。


图片.png

来自分区的消息将被排序。但是分区可以在任何时候发送它们的消息。因此,主题是不保证顺序。这有点奇怪。我知道。下面,请注意两个分区是如何发送它们自己的消息的。但它们是不考虑其他分区的。他们仍然保持自己的消息顺序。


图片.png

如果您的消费者依赖于消息顺序(跟踪站点内的用户单击),那么您将希望深入研究这些主题分区策略(这超出了本文的讨论范围)。如果没有这种需求,你可以使用默认策略。

现在让我们再深入一点,了解一下Kafka是如何做到这一点的。

基础架构(Infrastructure)

如果我们退一步来看第一张图表。什么是Kafka云。


图片.png

它实际上是一组服务器。 我们将看到的第一个是Kafka群集的头部zookeeper。

图片.png

Zookeeper管理所有的主题和分区。它基维护了一组Kafka集群节点,在这些节点上存储主题和分区。这些节点是组成Kafka集群的独立机器(例如,EC2实例)。

图片.png

如果我们有两个主题,每个主题有两个分区,这可能是我们之前想象它们的方式。注意,现在分区的颜色与主题相同。


图片.png

我们将给分区编号,以便稍后识别它们。


图片.png

现在,让我们看看这些主题如何适应我们的Kafka集群。 让我们从一个主题开始。 主题A.对于此示例,其分区#1将放在每个节点上。
图片.png

您不必在每个节点上放置分区。 因为 它会变得昂贵。 另一方面,您将拥有一个有弹性的系统。 让我们看看为什么。

如果有消息进来,则会将其路由到其中一个节点中的分区,称为领导者。 zookeeper为领导者分配。


图片.png

Zookeeper将像以前一样将消息发送给消费者。 它还将将消息复制到分区的其他副本,从节点。


图片.png

现在,分区的每个副本都包含我们的消息! 如果一个节点拆卸或爆炸,Zookeeper将重新分配给不同的节点。


图片.png

这是与我们添加的彼此分区相同的过程。我们现在将在我们的群集中保留两个分区副本。
图片.png

现在让我们在另一个分区#2中添加主题A.它也只是两个副本。 现在,主题A完全在我们的集群中! 两个分区都被复制和维护。


图片.png

现在,让我们在主题B的分区中添加分区。我们现在假设两个副本。 这是我们的Kafka集群与两个主题! 我们已经完成了!


图片.png

比较一下我们以前的情况可能会有所帮助。注意主题是如何在集群中分布的。


图片.png

图片.png

结束语

我希望你现在对Kafka更好地了解。 我希望这些图形化的东西能帮助你弄清楚你在google中要搜索的问题。

谢谢你的阅读! 并且非常感谢Kafka创作者制作一个令人难以置信的平台。

原文:https://timothystepro.medium.com/visualizing-kafka-20bc384803e7

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,042评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,996评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,674评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,340评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,404评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,749评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,902评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,662评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,110评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,577评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,258评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,848评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,726评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,952评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,271评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,452评论 2 348

推荐阅读更多精彩内容

  • 来源:https://www.cnblogs.com/bainianminguo/p/12247158.html[...
    瞎胡扯1阅读 3,500评论 0 1
  • Kafka 是主流的消息流系统,其中的概念还是比较多的,下面通过图示的方式来梳理一下 Kafka 的核心概念,以便...
    SlowGO阅读 142评论 0 0
  • 特别说明:本文基于Kafka 0.10.0.1。 一、基本概念 Kafka是一种分布式的、基于发布/订阅的消息系统...
    文竹小二阅读 1,686评论 0 2
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 124,432评论 2 7
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,038评论 0 4