您当前的位置:首页 > 电脑百科 > 程序开发 > 开源程序 > 百科

可视化Kafka

时间:2021-04-30 14:01:10  来源:  作者:闻数起舞

Kafka是开源事件流软件,可允许您构建事件驱动系统。虽然有其他指南,但我希望专注于可视化Kafka背后的主要概念。这样,当你阅读其他指南时,你会感到更自信。

有那个,让我们开始!

基本

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

可视化Kafka

> Two services communicating via Kafka

生产者和消费者

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

可视化Kafka

> Consumer and Producer

服务可以是消费者和生产者。

可视化Kafka

> A service listening to messages and consuming them

主题 Topic

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

可视化Kafka

> A service emitting a message and a service receiving a message from a Kafka topic

服务可以侦听并将消息发送到尽可能多的主题。

可视化Kafka

 

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

可视化Kafka

> A consumer group listening to topic B

对于任何用于消费者组的消息,Kafka将该消息路由到单个服务。这有助于您加载平衡消息。和规模消费者!

可视化Kafka

> A message going into a single service with a consumer group

一个主题充当邮件的队列。让我们走这一点。首先,发送消息。

可视化Kafka

> Producer sending message to Kafka topic.

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

可视化Kafka

> Message getting stored on the queue

该消息也被发送给主题的任何消费者。但是,该消息永久且无法编辑队列。

可视化Kafka

> A copy of the message being stored on the queue and sent to consumer.

让我们发送另一条消息。只是为了回家。

可视化Kafka

> Sending a second message to Topic A

就像以前一样,此消息将被发送到消费者并存储在队列中。您无法更改消息,它们将永久存储。

(P.S.如果有太多或经过一段时间),您可以配置Kafka主题以删除这些消息)

可视化Kafka

> Second message being stored.

这是我们的Kafka集群中的每个主题

可视化Kafka

> Messages being queued up in topics

这些不可变的队列允许我们异步地存储消息,无论生产者或消费者是否下降。它还保证了消息的正确性(它们是不可替代的)。

让我们开辟这些Kafka主题,看看内部。

分区

我撒了谎。一个Kafka主题不是一个队列,而是实际组成了许多名为Partitions的队列!他们帮助一个主题规模。

可视化Kafka

> A topic with two partitions

当一个生产者帖子到一个主题时,该消息被路由到单个分区。

可视化Kafka

> A message entering a topic, going to a partition

消费者会听取所有分区并消耗所有人的事件。

可视化Kafka

> A message being consumed from a partition

默认情况下的生产者将为主题发送消息。主题将确定消息将转到哪些分区。默认情况下,将通过循环策略分配消息。

可视化Kafka

> A producer writing to a topic, which is writing to multiple partitions

您可以配置主题(不是服务)以将消息拆分为不同的分区。例如,如果您正在处理用户消息(并且具有用户ID),则可以确保该用户留在同一分区内的消息。您可以通过散列用户ID来执行此操作,然后通过分区的数量调制它。你明白了。我希望。

可视化Kafka

> A producer sending messages (with possibly different entity/user ids) to different partitions

你为什么要这个?这是因为分区中的每条消息都保证按时间顺序排列。因此,按顺序消耗。

可视化Kafka

> Messages being consumed in order from partitions.

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

可视化Kafka

> Regardless of why different message types are mApped into single partitions, they maintain order

将订购来自分区的消息。但分区可以随时发出消息。因此,主题,不要保证订单。这有点奇怪。我知道。下面,请注意两个分区如何发送自己的消息。但是,无论其他分区如何,他们都这样做。他们仍然保持自己的信息订单。

可视化Kafka

> Two perfectly valid scenarIOS. Each partition maintains order for its own messages.

如果您的消费者依赖于消息订单(跟踪用户点击在您的站点中),则您将希望更多地查看这些主题分区策略(这是本文的范围)。如果没有,默认策略将为您工作。

让我们现在缩小一下并了解Kafka如何做到这一点。

基础设施

如果我们退后一步,让我们看看我们的第一个图表。什么是kafka云?

可视化Kafka

> Two services communicating via Kafka

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

可视化Kafka

> Zookeeper routing traffic in and out of the Kafka cluster.

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

可视化Kafka

> Zookeeper maintaining a set of nodes

如果我们有两个主题,每个主题都有两个分区,这是我们之前可能以前可视化的。请注意,分区与现在的主题相同。

可视化Kafka

> Two topics with two partitions

我们将编号分区以帮助稍后识别它们。

可视化Kafka

> Numbered partitions

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

可视化Kafka

> Topic A, Partition #1

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

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

可视化Kafka

> A message sent to the leader.

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

可视化Kafka

> Sending the message to the consumer and duplicating it on all of the followers

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

可视化Kafka

> Message in each partition copy

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

可视化Kafka

> Two partition copies

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

可视化Kafka

> Partition #1 and #2 in our cluster.

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

可视化Kafka

> Both clusters

它可能有助于比较我们以前拥有的东西。请注意,主题如何在群集中传播。

可视化Kafka

> What we had before.


可视化Kafka

> What we have now!

结论

我希望你现在对Kafka更好地了解。我希望这些可视化能帮助您询问哪些问题,以便询问。本文中的每个原则上都有令人难以置信的指南。

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

(本文由闻数起舞翻译自123 Followers的文章《Visualizing Kafka》,转载请注明出处,原文链接:
https://timothystepro.medium.com/visualizing-kafka-20bc384803e7)



Tags:Kafka   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 是等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka...【详细内容】
2021-12-27  Tags: Kafka  点击:(1)  评论:(0)  加入收藏
1.1 docker命令直接部署1.1.1 拉取镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka1.1.2 启动zookeeper容器docker run -d --name myzookeeper -p 2...【详细内容】
2021-11-15  Tags: Kafka  点击:(47)  评论:(0)  加入收藏
一、开篇经过上次文章的铺垫,相信大家对 java 的 NIO 有了一些感性的认识,也初步了解了它的 API 了,可以开始去阅读 Kafka Producer 端的发送消息的部分了。突然想感叹一下,阅读...【详细内容】
2021-08-11  Tags: Kafka  点击:(65)  评论:(0)  加入收藏
Kafka是开源事件流软件,可允许您构建事件驱动系统。虽然有其他指南,但我希望专注于可视化Kafka背后的主要概念。这样,当你阅读其他指南时,你会感到更自信。有那个,让我们开始!基本...【详细内容】
2021-04-30  Tags: Kafka  点击:(285)  评论:(0)  加入收藏
在 KafkaProducer 中大部分的参数都有合理的默认值,一般不需要修改它们。不过了解这些参数可以让我们更合理地使用生产者客户端,其中还有一些重要的参数涉及程序的可用性和性...【详细内容】
2021-02-03  Tags: Kafka  点击:(155)  评论:(0)  加入收藏
消息中间件的应用场景 异步解耦 削峰填谷 顺序收发 分布式事务一致性腾讯应用案例: 主流 MQ 框架及对比 说明 Kafka:整个行业应用广泛 RocketMQ:阿里,从 apache 孵化 Pulsar:雅...【详细内容】
2021-01-26  Tags: Kafka  点击:(208)  评论:(0)  加入收藏
本文要点 在构建应用程序和系统时,我们一直面临的一个挑战是如何有效地在它们之间交换信息,同时保持接口修改的灵活性,而不会对其他地方产生不恰当的影响。 事件提供了一种“金...【详细内容】
2020-11-30  Tags: Kafka  点击:(110)  评论:(0)  加入收藏
Kafka集群安装、配置和启动Kafka需要依赖zookeeper,并且自身集成了zookeeper,zookeeper至少需要3个节点保证集群高可用,下面是在单机linux下创建kafka3个节点伪集群模式。1、下...【详细内容】
2020-11-10  Tags: Kafka  点击:(111)  评论:(0)  加入收藏
背景在大数据时代,存在大量基于数据的业务。数据需要在不同的系统之间流动、整合。通常,核心业务系统的数据存在OLTP数据库系统中,其它业务系统需要获取OLTP系统中的数据。传统...【详细内容】
2020-10-29  Tags: Kafka  点击:(167)  评论:(0)  加入收藏
以前我们讨论的消费组,都是 group 的形式,group 可以自动地帮助消费者分配分区,且在发生异常时,还能自定地进行重平衡(Rebalance)。正常来说,group 帮助用户实现自动监听分区消费,但...【详细内容】
2020-09-19  Tags: Kafka  点击:(105)  评论:(0)  加入收藏
▌简易百科推荐
大家好,我是等天黑, 今天介绍一个开源免费的监控工具 Uptime Kuma, 简单实用, 主要用来监控 Web 和网络, 和 Prometheus 不一样的是, 它是轻量的, 基于Node.js 和 Vue 3 开发...【详细内容】
2021-12-16  全球技术精选    Tags:监控工具   点击:(13)  评论:(0)  加入收藏
Svelte https://svelte.dev/Svelte 是一种全新的构建用户界面的方法。传统框架如 React 和 Vue 在浏览器中需要做大量的工作,而 Svelte 将这些工作放到构建应用程序的编译阶...【详细内容】
2021-11-09  风吹草低见到喜洋洋    Tags:开源软件   点击:(73)  评论:(0)  加入收藏
开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是 Lilishop 商城系统 基于SpringBoot 研发,B2B2C多用户商...【详细内容】
2021-10-21  GitHub精选    Tags:Lilishop   点击:(225)  评论:(0)  加入收藏
前言一个基于spring boot的JAVA开源商城系统,是前后端分离、为生产环境多实例完全准备、数据库为b2b2c商城系统设计、拥有完整下单流程和精美设计的java开源商城系统https://...【详细内容】
2021-09-17  Java架构师知识    Tags:开源商城   点击:(119)  评论:(0)  加入收藏
Web项目开发中视频播放是一个非常常见的需求,需要播放器能够支持pc端和移动端的使用,并且支持常见的视频格式。我们从github上精选了5款优秀的Html5 播放器插件分享给大家。(排...【详细内容】
2021-09-17  IT宇哥    Tags:播放器   点击:(99)  评论:(0)  加入收藏
本文盘点了 7 月份比较火的几个开源项目,涉及 Java、Python、教程等,这些开源项目分别是:1. 主流技术栈原理2. 数据可视化分析工具3. Spring 手撸专栏4. 接口管理平台5. 直播源...【详细内容】
2021-08-04  一个快乐的摸鱼人    Tags:开源项目   点击:(79)  评论:(0)  加入收藏
今天,要和大家推荐一个Go 编写的开源推荐系统——Gorse。 Gorse 旨在成为一个通用的开源推荐系统,可以快速引入各种在线服务。通过将商品、用户和交互数据导入 Gors...【详细内容】
2021-08-02  程序员吖  今日头条  Tags:推荐系统   点击:(104)  评论:(0)  加入收藏
什么是kubeedge:KubeEdge是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于kubernetes构建,并为网络应用程序提供基础架构支持。云和边缘之间的部署和元...【详细内容】
2021-06-28  pythontaotao    Tags:kubeedge   点击:(225)  评论:(0)  加入收藏
什么是开源?开源(Open Source)全称是:开放源代码。在今天,不仅是软件的源代码,还有硬件的机械图、电路图、PCB图,甚至整个工程项目的源文件,也都是开源的对象。开源的目的,就是让用户...【详细内容】
2021-05-31  机电匠  今日头条  Tags:开源协议   点击:(228)  评论:(0)  加入收藏
近日,微软开源了AI安全风险评估工具Counterfit,该工具旨在帮助开发人员测试AI和机器学习系统的安全性。该公司表示,Counterfit可以使组织进行评估,以确保其业务中使用的算法是可...【详细内容】
2021-05-06    雷锋网  Tags:Counterfit源代码   点击:(234)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条