kafka是什么牌子_kafka为什么叫kafka

kafka是什么牌子_kafka为什么叫kafka一、定义ApacheKafka是一款开源的消息系统。可以在系统中起到“肖峰填谷”的作用,也可以用于异构、分布式系统中海量数据的异步化处理。系统包括四个主要API:ProducerAPI允许一个应用推送流记录通过一个或多个Kafkatopics;ConsumerAPI允许一个应用订阅一个或多个topics并且处理这些流记录;StreamsAPI允许一个应用作为一…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、定义

Apache Kafka 是一款开源的消息系统。可以在系统中起到“肖峰填谷”的作用,也可以用于异构、分布式系统中海量数据的异步化处理。
系统包括四个主要API:
在这里插入图片描述

  • Producer API
    允许一个应用推送流记录通过一个或多个Kafka topics ;
  • Consumer API
    允许一个应用订阅一个或多个topics 并且处理这些流记录;
  • Streams API
    允许一个应用作为一个流处理者,通过topics 输入或输出流数据 ;
  • Connector API
    绑定并运行 Producer 或 Consumer 连接Kafka topics 到 到已经存在的系统或存储上;

二、功能介绍

1) Topics and log

Topic 是发布记录的类别或订阅源名称。Kafka 的topic 会关联用户;一个topic 可以有 0个或多个Consumer 订阅写入它的数据。
对于每个topic ,kafka 集群都会维护一个分区日志,如下图:
在这里插入图片描述
每个分区都是一个有序的, 不可变的记录序列, 不断附加到结构化的提交日志中。 分区中的记录每个都被分配一个称为偏移的顺序ID号,它唯一标识分区中的每条记录。
Kafka 集群可以持久的保存所有已发布的记录-无论它们是否被消费-可以易配置保留期限。
每个consumer 会保留消费者在日志中消费的偏移或位置。通常消费者在读取记录的时候会线性提高偏移量,同时消费者也可以按照自己喜欢的顺序消费记录。
在这里插入图片描述
Kafka 三层消息框架:
第一层:主题层,每个主题可以配置N个分区,每个分区可以配置M个副本。
第二层:分区层,每个分区的M个副本, 只能有一个lender副本,其对外提供服务,其它M-1 个副本是 追随者副本,只是提供数据冗余之用(客户端只会与分区中的leader副本进行交互)。
第三层:消息层,分区中包含若干条消息,每条消息的位移从0开始,依次递增。

2)Distribution(消息分配)

日志的分区分布在Kafka 集群中的服务器上,每台服务器都可以处理请求数据。每个分区都在可配置数量的服务器上进行复制,以实现容错。
每个分区只有一个服务器充当“leader”,0个或多个服务器充当“followers”,leader 节点处理分区所有的记录读取和写入,followers节点 复制 leader 节点 的数据。 如果 leader 节点 异常,其中一个 followers 节点会被选举为 leader 节点。每个服务器都可以充当某些分区的 leader 节点 和其它服务器的 followers 节点,因此负载均衡在集群中得到很好的平衡。

3)Geo-Replication(异地复制)

Kafka MirrorMaker为您的群集提供地理复制支持。使用MirrorMaker,可以跨多个数据中心或云区域复制数据。您可以在主动/被动方案中使用它进行备份和恢复; 或者在主动/主动方案中,使数据更接近用户,或支持数据位置要求。

4)Producers

生产者将数据发布到他们选择的主题。生产者负责选择分配给主题中哪个分区的记录。这可以通过循环方式完成,只是为了平衡负载,或者可以根据一些语义分区功能(例如基于记录中的某些键)来完成。

5)Consumers

消费者使用消费者组名称标记自己,并且发布到主题的每个记录被传递到每个订阅消费者组中的一个消费者实例。消费者实例可以在单独的进程中,也可以在不同的机器。
如果所有使用者实例具有相同的使用者组,则记录将有效地在使用者实例上进行负载平衡。
如果所有消费者实例具有不同的消费者组,则每个记录将广播到所有消费者进程。
在这里插入图片描述
两个服务器Kafka群集,托管四个分区(P0-P3),包含两个使用者组。消费者组A有两个消费者实例,B组有四个消费者实例。
在Kafka中实现消费的方式是通过在消费者实例上划分日志中的分区,以便每个实例在任何时间点都是分配的“公平份额”的独占消费者。维护组中成员资格的过程由Kafka协议动态处理。如果新实例加入该组,他们将从该组的其他成员接管一些分区; 如果实例死亡,其分区将分发给其余实例。分区实现了Kafka 的高并发。

6)Guarantees(可靠性)

  • 生产者发送到特定主题分区的消息将按其发送顺序附加。也就是说,如果记录M1由与记录M2相同的生产者发送,并且首先发送M1,则M1将具有比M2更低的偏移并且在日志中更早出现。
  • 消费者实例按照它们存储在日志中的顺序查看记录。
  • 对于具有复制因子N的主题,我们将容忍最多N-1个服务器故障,而不会丢失任何提交到日志的记录。

三、实践应用

1) Kafka 作为消息系统

通用消息系统中有两种消息模型:队列 和 发布-订阅 。

  • 队列:队列中的数据被一个消费节点读取。它的优势在于允许在多个消费者实例上划分数据处理。缺点是,队列不支持多租户,多个实例情况下无法读取被其它实例消费的记录。

  • 发布-订阅:记录被广播给所有消费者,允许将数据广播到多个消费者实例。

  • 消息顺序性:在通用队列的模式里,服务器上按顺序保存记录,如果有多个消费者从队列中消费,则服务器按存储顺序分发记录,但消息是异步传递给消费者的,
    因此他们可能会存在不同消费者上的无序传送。

    消息传递系统通常通过具有“独占消费者”的概念来解决这个问题,该概念只允许一个进程从队列中消耗,但这当然意味着处理中没有并行性。

kafka 通过在主题中具有并行性概念 – 分区 – ,Kafka能够在消费者流程池中提供订购保证和负载平衡。这是通过将主题中的分区分配给使用者组中的使用者来实现的,以便每个分区仅由该组中的一个使用者使用。通过这样做,我们确保使用者是该分区的唯一读者并按顺序使用数据。由于有许多分区,这仍然可以平衡许多消费者实例的负载。但请注意,消费者组中的消费者实例不能超过分区。

2)Kafka作为存储系统

任何允许发布与消费它们分离的消息的消息队列实际上充当了正在进行的消息的存储系统。Kafka的不同之处在于它是一个非常好的存储系统。

写入Kafka的数据将写入磁盘并进行复制以实现容错。Kafka允许生产者等待确认,以便在完全复制之前写入不被认为是完整的,并且即使写入的服务器失败也保证写入仍然存在。

磁盘结构Kafka很好地使用了规模 – 无论服务器上有50 KB还是50 TB的持久数据,Kafka都会执行相同的操作。

由于认真对待存储并允许客户端控制其读取位置,您可以将Kafka视为一种专用于高性能,低延迟提交日志存储,复制和传播的专用分布式文件系统。

3)Kafka用于流处理
仅仅读取,写入和存储数据流是不够的,目的是实现流的实时处理。

在Kafka中,流处理器是指从输入主题获取连续数据流,对此输入执行某些处理以及生成连续数据流以输出主题的任何内容。

例如,零售应用程序可能会接收销售和发货的输入流,并输出重新排序流和根据此数据计算的价格调整。

可以使用生产者和消费者API直接进行简单处理。但是,对于更复杂的转换,Kafka提供了完全集成的Streams API。这允许构建执行非平凡处理的应用程序,这些应用程序可以计算流的聚合或将流连接在一起。

此工具有助于解决此类应用程序面临的难题:处理无序数据,在代码更改时重新处理输入,执行有状态计算等。

流API构建在Kafka提供的核心原语上:它使用生产者和消费者API进行输入,使用Kafka进行有状态存储,并在流处理器实例之间使用相同的组机制来实现容错。

四、名词解释

  • 消息:Record。Kafka是消息引擎,这里的消息就是Kafka处理的主要对象。
  • 主体:Topic。主题就是承载消息的逻辑容器,在实际应用中多用于区分具体业务。
  • 消息位移:Offset。表示分区中每条消息的位置信息,是一个单调递增不变的值。
  • 副本:Replica。Kafka中一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。副本还分为领导者副本和追随者副本,各自有不同的角色划分。副本是在分区层级下的,即每个分区可配置多个副本实现高可用。
  • 生产者:Producer 。 向主题发布新消息的应用程序。
  • 消费者:Consumer。从主题订阅新消息的应用程序。
  • 消费者位移:Consumer Offset 。表示消费者消费进度,每个消费者都有自己的消费者位移。
  • 消费者组:Consumer Group 。多个消费者实例共同组成的一个组,同时消费多个分区实现高吞吐。
  • 重平衡:Rebalance。消费者组内某个消费者实例挂掉后,其它消费者实例自动重新分配订阅主题分区的过程。Rebalance 是kafka
    消费者端实现高可用的重要手段。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182319.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 图解Kafka中的数据采集和统计机制 | 文末送30本书任你选[通俗易懂]

    图解Kafka中的数据采集和统计机制 | 文末送30本书任你选[通俗易懂]在讲解kafka限流机制之前,我想先讲解一下Kafka中的数据采集和统计机制你会不会好奇,kafka监控中,那些数据都是怎么计算出来的比如下图这些指标这些数据都是通过Jmx获取的kafka监控指标,那么我们今天老探讨一下,这些指标都是怎么被计算出来的在开始分析之前,我们可以自己思考一下如果让你统计前一分钟内的流速,你会怎么统计才能够让数字更加精确呢?我相信你脑海中肯定出现了一个词:滑动窗口在kafka的数据采样和统计中,也是用了这个方法,通过多个样本Sample进行采样,并合并统计当然

  • 获取当前时间并且转化为字符串_python处理百万级数据时间

    获取当前时间并且转化为字符串_python处理百万级数据时间linux 用户空间获得纳秒级时间ns【转】

  • Python GUI编程学习思维导图

    思维导图制作工具:MindNode

  • ssm管理系统课题_p2实验室

    ssm管理系统课题_p2实验室开发目的方便高效地实验室设备统一管理,除了实现基本的增删改查,还提供借用、归还、购买和问题反馈功能,可实现对实验室设备的基本业务的处理本项目由本人负责开发完成,项目能保证正常运行,当然其中不免也会有缺漏或不完善的地方解决方案1.后端Java框架使用spring+springmvc+mybatisspring功能是实现参数参数注入,请求分发处理,对数据库操作进行事务控制,其中mybatis使用注解查询,整体上大部分使用xml配置,少部分使用注解2.前端使用HTML+javascript+css+j

    2022年10月13日
  • 利用 JS 脚本实现网页全自动秒杀抢购

    利用 JS 脚本实现网页全自动秒杀抢购利用JS脚本实现网页全自动秒杀抢购倒计时页面:倒计时未结束时,购买按钮还不能点击。结束时,可以点击购买,点击后出现提示“付款成功”展示效果1.制作测试网页首先我们来做一个简易的抢购页面<!DOCTYPEhtml><htmllang=”zh_CN”><head><metacharset=”UTF-8″><title>Apple</title><styletype=”te

  • microbiomeViz:绘制lefse结果中Cladogram「建议收藏」

    microbiomeViz:绘制lefse结果中Cladogram「建议收藏」平日经常会分析shotgun宏基因组的数据,我们的pipeline使用MetaPhlAn,Kraken等profiler。这种数据经常会产生一个表格,如下download.file(“https://bitbucket.org/biobakery/biobakery/raw/tip/demos/biobakery_demos/data/metaphlan2/output/SRS014459-Stool_profile.txt”,’SRS014459-Stool_profile.txt’)knitr

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号