卡夫卡详解_外行卡夫卡指南

2023-10-19 10:40
文章标签 详解 指南 卡夫卡 外行

本文主要是介绍卡夫卡详解_外行卡夫卡指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

卡夫卡详解

首先,为什么要用卡夫卡? (Firstly why Kafka?)

Kafka’s growth is exploding, more than 1⁄3 of all Fortune 500 companies use Kafka. These companies include the top ten travel companies,7 of the top ten banks, 8 of the top ten insurance companies, 9 of the top ten telecom companies, and much more. LinkedIn, Microsoft, and Netflix process four comma messages a day with Kafka (1,000,000,000,000).

卡夫卡的增长迅猛 ,在世界500强企业中,有超过1⁄3的企业使用卡夫卡。 这些公司包括排名前十的旅行社,排名前十的银行中的七,排名前十的保险公司中的八,排名前十的电信公司中的九,等等。 LinkedIn,Microsoft和Netflix 每天使用Kafka(1,000,000,000,000)处理四条逗号消息。

Kafka is used for real-time streams of data, used to collect big data or to do real-time analysis or both).

Kafka用于实时数据流,用于收集大数据或进行实时分析,或两者兼而有之

Kafka is used with in-memory microservices to provide durability and it can be used to feed events to CEP (complex event streaming systems), and IOT/IFTTT style automation systems.If you want to know which companies use Kafka take a look here https://kafka.apache.org/powered-by

Kafka与内存微服务一起使用以提供持久性,并且可以用于将事件馈送到CEP (复杂事件流系统)和IOT / IFTTT风格的自动化系统。如果您想知道哪些公司在使用Kafka,请查看此处https ://kafka.apache.org/powered-by

但是卡夫卡到底是什么? (But what the Heck is Kafka?)

Image for post
Well Yeah... this is why I am reading the layman's blog :|
是的...这就是为什么我要阅读外行博客的原因:|

So Kafka is a distributed system consisting of servers and clients that communicate via a high-performance TCP network protocol. It can be deployed on bare-metal hardware, virtual machines, and containers in on-premise as well as cloud environments.

因此,Kafka是一个分布式系统,由通过高性能TCP网络协议进行通信的服务器客户端组成。 它可以部署在内部以及云环境中的裸机硬件,虚拟机和容器上。

让我们简化一下 (Let’s simplify it a bit)

Think of Kafka as your house mailbox, in Kafka, we refer to that mailbox as a Kafka Topic, other people can send you mail’s on this mailbox address, those senders we refer as Kafka Producers, and yes the people who read those mail are known as Kafka Consumers and well yeah your family living in the same house belonging to a Consumer group all grouped by a Group id.

将卡夫卡视为您的家庭邮箱,在卡夫卡中,我们将该邮箱称为“卡夫卡主题” 其他人可以在该邮箱地址上向您发送邮件,那些发件人我们称为“卡夫卡生产者” ,是的,阅读这些邮件的人是已知的作为卡夫卡消费者 是的,您的家人住在属于“ 消费者”组的同一个房屋中,所有住房均按“ 组ID”分组

Image for post

现在,让我们看看有关我们发现的事物的一些关键功能 (Now Let’s see some of the key features about the things we have discovered)

大事记 (Events)

An Event is the most basic entity in Kafka, it corresponds to a single message/event published or consumed from any topic, When you read or write data to Kafka, you do this in the form of Events.

事件是Kafka中最基本的实体,它对应于从任何主题发布或使用的单个消息/事件,当您向Kafka读取或写入数据时,您将以事件的形式进行操作。

话题 (Topic)

All Kafka Events are organized into topics.

所有Kafka活动均按主题进行组织。

Image for post
it is so simple …
这是如此简单……
  • A topic in Kafka can have zero to many producers writing events to it as well as zero to many consumers that are subscribed to these events.

    Kafka中的主题可以有零个生产者向其编写事件,也可以零个订阅这些事件的消费者。
  • Unlike a traditional messaging system events are not deleted after consumption, you can define how long an event should remain thorough a per-topic configuration setting and read from them as often as needed.

    与传统的消息传递系统不同,使用后事件不会被删除,您可以定义事件在每个主题的配置设置中应保留的时间,并根据需要从中读取事件。

经纪人 (Brokers)

Kafka, as a distributed system, runs in a cluster. Each node in the cluster is called a Kafka broker.

Kafka作为分布式系统,在集群中运行。 群集中的每个节点都称为Kafka 代理

现在让我们深入探讨这些主题 (Now let us dive a little more into these topics)

Topics in Kafka are Partitioned this is just a fancy way of saying that your events are distributed into several buckets located onto different Kafka brokers. Every Broker has exactly one partition leader which handles all the read/write requests of that broker. If the replication factor is greater than 1, the additional partition replications act as partition followers.

卡夫卡中的主题是分区的,这只是一种奇特的说法,您的事件被分配到了不同的卡夫卡经纪人的多个桶中。 每个经纪人只有一个分区负责人 ,负责处理该经纪人的所有读/写请求。 如果复制因子大于1,则其他分区复制将充当分区跟随器

A partition, in theory, can be described as an immutable collection (or sequence) of messages.

从理论上讲,分区可以描述为消息的不可变集合(或序列)。

T

Ť

Each event in a partition has an identifier called offset. This offset is responsible for maintaining the order of your events in a partition for you.

分区中的每个事件都有一个名为offset的标识符。 此偏移量负责为您维护分区中事件的顺序。

Hence to summarise each event in a Kafka topic can be uniquely identified by a tuple of partition, and offset within the partition.

因此,总结一下,Kafka主题中的每个事件都可以由一个分区的元组唯一地标识,并在该分区内偏移。

Image for post
A visual representation of what we discussed so far
到目前为止我们所讨论内容的直观表示

生产者 (Producers)

So far you must have known that a producer is responsible for writing / committing your events to any Kafka topic, so let’s be a little more specific now.

到目前为止,您必须已经知道制作人负责将您的事件编写/提交给任何Kafka主题,所以现在让我们更具体一些。

A Producer writes to a single partition leader for a Kafka topic, this provides a means of load balancing production so that each write can be serviced by a separate broker and machine.

生产者向Kafka主题的单个分区负责人写信,这提供了一种负载均衡生产的方法,以便每个写操作都可以由单独的代理和机器提供服务。

消费者 (Consumers)

Each consumer reads from a single partition, also consumers can be organized into consumer groups for a given topic, the group as a whole consumes all messages from the entire topic.

每个使用者都从单个分区读取,也可以将使用者组织为给定主题的使用者组,该组作为一个整体使用整个主题中的所有消息。

If the number of consumers in a consumer group is more than the number of partitions then some of these consumers will be idle as they have no partition to read from. Similarly, if the number of partitions is more than the number of consumers then consumers will receive messages from multiple partitions

如果使用者组中的使用者数大于分区数,则这些使用者中的一些将处于空闲状态,因为它们没有要读取的分区。 同样,如果分区数大于使用方数,那么使用方将从多个分区接收消息

If you have equal numbers of consumers and partitions, each consumer reads messages in order from exactly one partition.

如果您具有相同数量的使用者和分区,则每个使用者都从一个分区中按顺序读取消息。

卡夫卡担保 (Kafka Guarantees)

There are some claims which Kafka makes but like always there are terms and conditions applied so let’s discuss those first.

Kafka提出了一些主张,但像往常一样,有一些适用的条款和条件,所以让我们先讨论一下。

So Kafka guarantees hold as long as we are producing to one partition and consuming from one partition, it voids as soon as we either read from the same partition using multiple consumers or write to a single partition using multiple producers.

因此, 只要我们 生产一个分区并从一个分区消费, Kafka保证就成立,一旦我们使用多个使用者从同一个分区读取或使用多个生产者写入单个分区,Kafka保证便会失效。

Q. But what will I get if I pay this cost?A. Data consistency and availability 🚀

问:但是如果我支付这笔费用,我会得到什么? A.数据一致性和可用性🚀

How?

怎么样?

  1. Messages sent to a topic partition will be appended to the commit log in the order they are sent.

    发送到主题分区的消息将按照发送顺序追加到提交日志中。
  2. A single consumer instance will see messages in the order they appear in the log.

    单个使用者实例将按照消息在日志中出现的顺序查看消息。
  3. A message is ‘committed’ when all in-sync replicas have applied it to their log.

    所有同步副本都将消息“提交”时,会将其应用于日志。
  4. Any committed message will not be lost, as long as at least one in sync replica is alive.

    只要至少有一个同步副本处于活动状态,任何提交的消息都不会丢失。
Image for post
This is what I wanted
这就是我想要的

使用Kafka我们可以实现什么? (What can we achieve using Kafka?)

Using Kafka in our architecture provides a high level of parallelism and decoupling between data producers and their consumers. In a Microservice pattern, this comes very handy when we want to trigger some other flow with an event happening somewhere else.

在我们的体系结构中使用Kafka可以在数据生产者及其使用者之间提供高度的并行性和去耦性。 在微服务模式中,当我们想触发其他事件发生在其他地方的流程时,这非常方便。

Wait! but this can also be achieved using some rest APIs and async calls 😕. So why do I bother to learn something new? I had the same question so I thought of researching a little more about this and these are my findings.

等待! 但这也可以使用一些其他API和异步调用来实现。 那么,为什么我要去学习新的东西呢? 我有同样的问题,所以我想对此进行更多研究,这是我的发现。

Thank you Java Technical for an amazing explanation
谢谢Java技术的精彩解释

Also committing to a Kafka topic is much faster than executing an API call which writes to a database, hence is we have a pipeline to process the data which is being produced choosing Kafka over REST is better, but if we have a user waiting for the response after the data is being consumed REST is best.

与执行写入数据库的API调用相比,提交Kafka主题的速度要快得多,因此,我们是否拥有一条管道来处理正在生成的数据,因此选择REST上的Kafka会更好,但是如果我们有一个用户在等待数据被消耗后的响应最好是REST。

Hope this article was able to develop a better understanding of Kafka and also its use case, will be soon writing the next blog about how to set up a Kafka system in some of the frequently used programming languages 😀. Feel free to put your thoughts or corrections about this article it will surely help me to write better next time.

希望本文能够对Kafka及其用例有更好的理解,并将很快撰写下一个博客,介绍如何使用某些常用的编程语言来设置Kafka系统blog。 请随意发表您对本文的想法或更正,这肯定会帮助我下次写得更好。

一些不错的读物帮助我撰写了此博客 (Some good reads which helped me write this blog)

  • https://kafka.apache.org/intro

    https://kafka.apache.org/intro

  • https://sookocheff.com/post/kafka/kafka-in-a-nutshell/

    https://sookocheff.com/post/kafka/kafka-in-a-nutshell/

  • https://medium.com/@durgaswaroop/a-practical-introduction-to-kafka-storage-internals-d5b544f6925f

    https://medium.com/@durgasw​​aroop/a-practical-introduction-to-kafka-storage-internals-d5b544f6925f

  • https://stackoverflow.com/questions/57852689/kafka-msg-vs-rest-calls

    https://stackoverflow.com/questions/57852689/kafka-msg-vs-rest-calls

翻译自: https://medium.com/@jenishjain6/laymans-guide-to-kafka-203089f1dbd0

卡夫卡详解


http://www.taodudu.cc/news/show-7999611.html

相关文章:

  • 5.9spring整合卡夫卡
  • java卡夫卡_java – 如何在卡夫卡使用多个消费者?
  • 卡夫卡与mysql_zookeeper与卡夫卡集群搭建
  • 读道德经的心得
  • 编译原理部分知识点总结
  • 【学习周报】深度学习笔记第七周
  • 离散数学学习笔记——集合论基础
  • 西电网课雨课堂《书法鉴赏》全部课后答案
  • Webrtc音视频会议之Webrtc“不求甚解”
  • python学习forth day之不求甚解
  • sphinx python mysql_不求甚解的使用sphinx生成Python文档
  • 不求甚解1:什么是elf
  • 对新概念应当”不求甚解“
  • equals ==(不求甚解) 十六
  • 图像特征之不求甚解
  • 不求甚解系列之tailwindcss
  • 设计模式学习--不求甚解
  • 编程之不求甚解(从python中来看)
  • 不求甚解-luence
  • 不求甚解-zookeeper
  • 不求甚解-SpringBoot
  • 【不求甚解】知识点
  • Springboot事件监听+@Async注解
  • python学习first day之不求甚解
  • 深度:一文读懂美国10种类型养老机构:概念定义、差异剖析、盈利能力、典型案例、发展历程
  • 美国纽约房产:曼哈顿对岸新泽西威霍肯Henley on Hudson社区
  • 网络购物商场系统的设计与实现(论文+源码)_kaic
  • Tik Tok进军全球电子商务,战略性放弃美国与欧洲线上购物计划
  • 分析师:苹果收购自动驾驶初创企业Drive.ai不会超过2亿美元
  • 苹果收购了数据库公司FoundationDB ,这并不稀奇,它太需要加强云技术了
  • 这篇关于卡夫卡详解_外行卡夫卡指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



    http://www.chinasem.cn/article/239242

    相关文章

    Spring Security基于数据库验证流程详解

    Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

    OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

    1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

    Retrieval-based-Voice-Conversion-WebUI模型构建指南

    一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

    6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

    上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

    Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

    概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

    K8S(Kubernetes)开源的容器编排平台安装步骤详解

    K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

    基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

    前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

    嵌入式Openharmony系统构建与启动详解

    大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

    LabVIEW FIFO详解

    在LabVIEW的FPGA开发中,FIFO(先入先出队列)是常用的数据传输机制。通过配置FIFO的属性,工程师可以在FPGA和主机之间,或不同FPGA VIs之间进行高效的数据传输。根据具体需求,FIFO有多种类型与实现方式,包括目标范围内FIFO(Target-Scoped)、DMA FIFO以及点对点流(Peer-to-Peer)。 FIFO类型 **目标范围FIFO(Target-Sc

    019、JOptionPane类的常用静态方法详解

    目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMessageDialog()方法 3.1