Kafka技术专题之总体原理和分析介绍(下)

Kafka Consumer底层原理分析【Kafka系列】 虽然目前Kafka0.10版本已经重写了其API,但底层原理是类似的,所以我们可以先了解kafka0.8.x里面的提供的Consumer的实现原理与交互流程 Kafka提供了两套API给Consumer The SimpleConsumer API The high-level Consumer API 本文介绍了这两种API的用法与底层原理 阅读详情

前提回顾

经过了之前的【Kafka技术专题系列(上)】和【Kafka技术专题系列(中)】的学习,相信您对Kafka的基本原理应该已经有了一个简单的介绍和认识了,接下来需要对总体做个收尾。下篇结束之后,我会对Kafka所有相关的技术板块做细化,做每一个技术板块做深入和扩展。

总体架构

核心优势

kafka被设计成通用的数据流处理平台,日志收集器和消息队列。

  • 高吞吐(日志聚合):

  • 大型数据块的整合(offline 平台的拉取)

  • 低延迟(消息队列)

  • 分区、分布式的实时流处理,从一个流派生新的流;

  • 容错(当被投喂非日志数据时)

为了支持这些特性,一系列组件被开发,使得kafka更像是一个DB的日志收集系统,而不是消息队列。

持久性

选择用文件系统,而不是把日志存进进程的缓存再统一flush,有以下理由:

  • 顺序读写是随机读写的3000x(机械硬盘)
  • OS disk page cache收益很大,有时缓存进进程反而是double cache了JVM的堆内存管理比较鸡肋,GC开销也大。
  • 经过原子化的访问和高效压缩数据成字节序列,可以更高效使用内存为什么不用树结构?

B-Tree的结构通用性很强,O(logN)的操作复杂度对于很多系统都足够了。但是,树结构本身不具备扩展性,尤其是其需要随机磁盘读写。
固定cache的情况下,树形结构的性能最好也是超线性的,随着数据量的增加。对于磁盘的顺序写是log的普遍选择。这里写不会阻塞读,写操作都是O(1)的复杂度。

最重要的是,这里和数据量的大小不再有关系。因此,kafka可以将消息持久化保持7天,以供重复读。

效率

由于消费是规模最大的操作,所以我们要尽可能把消费做的“轻”。

disk efficiency

类似系统问题主要在两方面:I/O操作太多+Bytes过度拷贝。

  • I/O操作太多,kafka的解决方案是利用消息组的抽象概念,用大块的消息读写(生产/消费)来均摊网络代价。
  • Bytes过度拷贝问题,kafka让producer, comsumer,
    broker采用同样的序列化协议,开辟了优化空间,然后利用Sendfile系统调用减少Copy。

End-to-end Batch Compression

  • 保证传输效率的另一点就是压缩。
  • kafka支持批压缩,主要因为不同log之间经常会产生大量的重复。
  • 相比于端上的单条日志压缩,可以有更好的压缩比。
  • 压缩的消息会被写入磁盘,会被发送给Consumer,最终由消费者解压缩。
  • 支持的压缩方案有GZIP, Snappy, LZ4 and ZStandard等。

Producer(生产者)

负载均衡

  • producer选好了partition,broker会直接answer给producer这个partition的leader所在的broker,然后直接传输,没有中间的路由层。
  • producer如何选partition呢?可以随机,也可以自选分区key和分区函数。以满足一些本地性。

异步发送

批量发送,可配置的定时/定量进行buffer batch send。

Consumer(消费者)

Push vs. pull

  1. push-fashion的系统,比如flume,难点在于对于多个消费者,没有办法根据消费者的接收能力控制消费速度。
  2. pull-fashion在这点要灵活的多。

可以由consumer主动去进行批量拉取(用户配置),而不是靠broker猜测。
如果broker暂时没数据,consumer不会忙等,会把自己阻塞掉,定期轮询
。

Consumer Position

  • 消息的消费状态由消费者保存(offset)。
  • 如果由broker保存,会有一系列问题。吞吐量肯定会低,其次,如果消费者消费了,但是没有Ack,那么将来会重复消费,以及broker一系列tricky的问题。

Offline Data Load

  • 由于kafka的持久存储系统,数据仓库/HDFS,会选择周期性的批量bulk load数据到数仓中,这就对kafka对大量数据的吞吐效率有保证。
  • kafka将数据负载平均分割,然后并行化,每一个split都是一个map task,也可以做combination。某个map task
    fail掉了也不要紧,可以直接从最初的位置重新开始。

Static Memebership

  • 为了避免频繁触发rebalance导致Stop-The-World,kafka2.3之后设置了静态成员,由用户设置其consumer-id,好处是当短暂离线退组,再上线进组时,使用同一个id,不会导致rebalance。
  • 但是其他broker和consumer变更的情况下,仍然必须要rebalance保证负载均衡。

消息传递语义

  • 在kafka中,日志是有提交的概念的,如果日志提交了,只要复制了这个分区的broker有一个活着的,日志就还在。
  • 假设broker本身不会丢失数据,以便理解对producer/consumer的消息传递保证。

Producer Delivery

对于producer来说,如果出现网络错误,是没法知道传输的日志是否已经提交了。

  • 在0.11.0版本以前,如果没有收到ack,那么没有别的办法,只能重传,这实际上就是至少一次的语义。
  • 在0.11.0版本之后,kafka为每个消息提供了Sequence number,为每个producer分发id,这样broker的接收操作,可以设置为幂等的,就完成了对producer的确切一次的语义。
  • 而且也是从0.11.0开始,producer对多个topic partitions发送数据也可以保证事务性,要么全部接收,要么全都没接收。
  • 具体到使用的时候,producer可以根据消息类型自主选择持久化级别。log信息可以完全异步发送,当有重要数据时也可以选择有回调函数的Send,等待commit时block掉,commit的级别也可以设置,是leader收到即可或者需要多少个follower副本。一般来说,同步的Send在10ms这个级别。

Consumer Delivery

  • 由于上面我们说,producer可以对多个topic partitions进行事务性的写。
  • 这给kafka的一个场景带来了极大的便利:流处理。流处理就是通过一个topic经过一些变换产出到另一个topic中去,整个过程都在kafka集群中完成。
  • 我们把两条消息组成一个事务:转换后的消息+消费的offset。利用producer的事务写,要么offset和数据同时写入,要么同时没有被写入,这就达成了消费端的确切一次语义。
  • 如果事务中途abort掉了,对于consumer有两种可见性,取决于consumer的隔离性级别

read_uncommited:可以看到没提交的写

read_commited:看不到没提交的写

上面说的是流处理的过程是可以达成确切一次语义。

对于consumer来自外部系统呢?

麻烦在于要把消费者的位置和实际消费的日志同步起来,一个通用的做法是进行两阶段提交(编者注:kafka集群作为coordinator,每一个consumer作为一个worker)。

然而很多外部系统(比如HDFS)并不支持两阶段提交。因此只能用一个更轻型也更通用的方案,让每一个consumer把自己的offset和实际数据放在同一个位置。有一点不妙的是,由于此时的消息没有主键,因此也无法进行去重(编者注:offset不可以作为消息的主键么?)。最终支持的是至少一次语义。

Replication

  • 手工配置副本个数。副本个数为1就是不复制。
  • 所有的读写都走leader,只在leader挂了,follower才用于自动故障转移。
  • kafka在复制容错方面,只考虑宕机/恢复模型,不会考虑分布式系统领域的拜占庭故障,即故意发错误信息的特殊情况。

kafka判定节点是否alive有两个条件:

  • 是否和zookeeper的session心跳保持联系;
  • 是否和leader落后在一定范围内(用户参数)。
  • 对于一个partition,follower和leader共同构成副本集,follower像是consumer一样去拉取leader的日志。
  • leader和alive follower共同构成ISR,leader时刻通过zookeeper跟踪ISR集合,剔除死掉的follower。

producer可以在持久性和吞吐率之间做权衡。可以设置mininum replica must write

producer有几个选择:

1 完全不需要ack 0

2 需要ack,但只要leader的就可以。1

3 需要ack,要至少mininum副本写入(minimum ISR)。 -1

对于2.3 这两种选择,可能只有leader写了日志,然后就被消费了。

因此kafka的保障是:对于提交的消息,只要有一个副本活着,就不会丢失。

kafka对于节点短时间宕机恢复有容错保障,但是对网络分区就不再保证可用了。

Replicated Logs: Quorums, ISRs, and State Machines (Oh my!)

  • kafka采用的是replicated log模型,即消息由leader定序,Follower无脑copy即可。
  • 如果leader宕机掉了,就要在ISR中启动多数选举。(Raft, Paxos等),最接近kafka的是MS的PacificA。
  • 对于宕机恢复的节点,kafka不要求它的数据完全一致,但是在加入ISR之前,它的数据必须得到全量的恢复。

trade-off between availability and duribility

上面说过producer有三种选择,对于第三种选择,即最小ISR基数,存在一个trade-off。

  • 过于大的minimum容易导致分区不可用,必须阻塞等待有足够多的ISR;
  • 过于小的minimum容易导致数据丢失,比如minimum=1,那么实际上只有leader写入了。

这里存在一个权衡,要用户把握。

Replica Management

kafka用round-robin的方式保证某个topic的partitions不会聚集在少量的节点中

同样,也会用同样的方式保证leaders不会聚集在少量节点中。

另一方面,一般kafka由节点挂掉,是broker直接挂掉,不会是某个partition挂掉,那么一个broker挂掉,可能会触发几个甚至几十个partition的重新选举/rebalance。

此时kafka的策略是选择另外一个broker,在更高的级别上领导这些partition的leader选举,这样使得选举过程可以批量化,更为高效。

Log Compaction

kafka log压缩保证在一个topic partition内,在消息内部每个key的最新值都会被保留下来。这意味着在任意时刻,我们能拿到当前各个key的最新快照。这在一些事务型的日志中非常重要,可以用于下游的数据恢复。 比如下图这三次更改中,只有最后一条记录不会被压缩。


这样的话其实就产生了两种保留策略,一种是默认的按照时间(7天)或者大小来保留;另一种是按照压缩来保留。

Log Compaction Basics

这是一个kafka log的逻辑视图。

对于log compaction,kafka给出了一些保证: 消息会在一个可配置的时间之后才会进入log尾,可压缩;也就是说,如果一直在监听消费的consumer可以收到连续offset的消息,不会立即被压缩;

消息的顺序不会被打乱,只是有些消息就被删除了; 消息的offset不变;

Log Compaction Details

log compaction是由一个后台的线程池log cleaner来做的,不会block前台的produce/consume。同时也有一个用户参数来限制compaction的I/O带宽占用。一次log clean包含以下四步:

选择最大的比例:log head/log tail 用一个哈希表对log head中的每个key进行存储 从头到尾重新copy数据到一个新的位置,那些老keys会被直接删除,新的位置写满了1个segment file就会copy回去,所以只会有1个Segment file的额外空间占用。

Quota

这个是kafka在消费组/消费者之间的调度系统,放止某些消费者故意捣乱频繁拉取数据,占据了大量broker的资源而产生的。可以按照带宽/请求量进行分配,这里偏运维不细说,遇到再补充。

【kafka】kafka的动态配置管理使用和分析 文章目录源码分析1. Broker启动加载动态配置1.1 启动加载动态配置总流程1. 2 加载Topic动态配置1.3 加载Broker动态配置2. 查询动态配置 流程 `--describe`3. 新增/修改/删除/动态配置 的流程Topic配置其他的类型都一样4. Broker监听/config/changes的变更源码总结Q&A如果我想在我的项目中获取kafka的所有配置该怎么办? 源码分析 1. Broker启动加载动态配置 KafkaServer.startup 1.1 启动加载动态配置 阅读详情

相关推荐

手把手教 - VSCode 开发 GD32F450 单片机

系统版本:rt-thread v5.2.2单片机型号:GD32F450ZK基于文章进行开发。

weixin_46158019的博客 837

KafKa - 消息持久化策略 及 消息查找策略讲解

一、kafka 消息持久化策略 Kafka实际上就是日志消息存储系统, 根据offset获取对应的消息,消费者获取到消息之后该消息不会立即从mq中移除,而是继续存储在磁盘中。 Kafka 会将topic分成多个不同的分区、每个分区中拆分成多个不同的segment文件存储日志。每个segment文件都会有 .index 文件 (消息偏移量索引文件),.log 文件(消息物理存放文件),timeindex文件(时间索引文件),在默认的情况下,每个segment文件容量最大是为500mb,如果超过了500mb 则

小毕超博客 4632

手机拍照背后的隐形功臣:一文读懂高通ISP三兄弟(IFE/BPS/IPE)如何协同工作

本文深入解析了高通ISP三兄弟(IFE/BPS/IPE)在手机拍照中的协同工作机制。通过拟人化比喻,详细介绍了IFE作为图像前端引擎的分流预处理、BPS作为RAW格式修图师的专业处理,以及IPE作为全能后期制作人的多面功能,揭示了三者在图像处理pipeline中的高效配合与技术创新。

weixin_27032989的博客 526

kafka 消息保留机制

的值设置为1GB,如果消息字节总数在不到一天的时间就超过了1GB,那么堆出来的部分就会被删除,相反,如果消息字节总数小与1GB,那么一天之后这些消息也会被删除,尽管分区的数据总量小于1GB。如果同时指定了两个参数没只要任意一个参数得到满足,消息就会被删除。为86400000(也就是一天),

King_S_H的博客 2694

BGE(BAAI General Embedding)模型详解

BGE(BAAI General Embedding)是北京智源人工智能研究院(BAAI)推出的通用文本嵌入模型系列,旨在为各种自然语言处理任务提供高质量的向量表示。

ttyy1112的专栏 7551

快速搭建SpringBoot3+Vue3+ElementPlus管理系统

快速搭建SpringBoot3+Vue3管理系统前端项目搭建(默认开发环境:node20,Jdk17)创建项目并下载依赖--执行以下命令 前端项目搭建(默认开发环境:node20,Jdk17) 创建项目并下载依赖–执行以下命令 创建项目 yarn create vite admin-vue --template 2.下载依赖(也可按需下载) yarn add echarts --save yarn add vue-router --save yarn add element-plus --save y

adingyb的博客 2817

Kafka中的leader选举算法Raft

Apache Kafka是一种流行的分布式消息队列系统,它被广泛用于解决现代应用程序中的数据传输问题。它支持高吞吐量和低延迟,可通过多个生产者分区、消费者组和分区复制实现高可靠性分布式系统。在Kafka集群中,每个分区都有一个Leader节点,负责处理该分区所有的读写请求。Leader节点会通过ZooKeeper进行注册,其他节点则作为Follower。Leader节点的重要性在于它提供了一个单点入口来确保多副本之间一致性及高可用性。

BXA 2992

保姆级教程如何进行本地局域网布署openclaw小龙虾

全网唯一一篇一步步实战教程,图文并茂方式的方式教你如何本地部署安装小龙虾openclaw

zzw17wei的专栏 1466

SparkStreaming笔记

1.SparkStreaming的批处理时间间隔 很容易陷入的一个误区就是,以为时间间隔30秒就是每30秒从kafka读取一次。其实不然,可以理解为数据向水流一样源源不断的从kafka中读取出来(只要定义了DStream,Spark程序就会将接收器在各个节点上启动,接收器会以独立线程的方式源源不断的接受数据),每积累30秒钟的数据作为一个RDD供进行一次处理。 2.性能优化可以思考的途径:

卧龙居 2175

双像素传感器的AI计算摄影实战:单目深度估计与图像去模糊的融合创新

本文介绍了双像素传感器技术在计算机视觉中的应用,包括深度估计、图像去模糊和图像重建等任务。双像素传感器通过两个子单元捕捉视差信息,使摄像头能够分析场景的三维结构和运动轨迹。文章以图像去模糊为例,详细展示了从数据准备到模型训练的完整流程,包括构建自定义数据集、设计双像素特征提取模块、训练去模糊模型及推理测试。通过模拟双像素的"双视角"信息融合,该AI算法能有效恢复模糊图像的清晰细节。

know_F0727的博客 255

【OpenCV】第二十三章: 图像特征检测之SURF、FAST、BRIEF、OBR算法

4、由于在检测特征点时是需要对图像中所有的像素点进行检测,然而图像中的绝大多数点都不是特征点,如果对每个像素点都进行上述的检测过程,那显然是种浪费,所以FAST采用一种进行非特征点判别的方法:首先对候选点的周围90度的点(1,9,5,13)四个点进行测试,而且是先测试1和9,如果它们两个符合阈值要求再测试5和13。继SIFT和SURF后,大家在特征点检测的速度上又进行了很多的改进尝试,但速度的提升效果都不是非常明显,直到FAST算法诞生,特征点检测的速度才有了一个质的飞跃。无法计算描述符的特征点将被删除。

因为热爱所以坚持 2158

kafka学习笔记

数据传输的事务定义有三种级别:1、最多一次,消息不回重复发送,最多被传输一次,但也有可能一次不传输2、最少一次,消息不会漏发,但是可能会被重复传输3、精确的一次(exactly one):不会漏传,但是也不会重复传输,是大家所期望的。

qq_43325216的博客 2372

webrtc进阶-- FlexFEC 实现原理与调试分析(m80 代码对齐版)

WebRTC 中 FlexFEC 技术解析与调试指南 摘要:本文深入分析 WebRTC 的 FlexFEC(灵活前向纠错)技术实现原理,重点探讨其在 m80 版本中的协商机制、接收侧恢复流程以及 SFU 场景下的特殊处理。文章指出 FlexFEC 通过动态冗余策略提升弱网抗丢包能力,详细解析了编解码器分配、SSRC 映射、包恢复等关键环节,并提供了针对 XR+SFU 场景的调试建议。调试时可重点关注 FEC 包接收与媒体包恢复日志,以验证链路有效性。

HOSTEN的博客 48

Kafka技术专题之总体原理和分析介绍(中)

生产者消息对应分区策略 生产者分区投递原则的简单介绍: 1)指明partition的情况下,直接将指明的值直接作为partition值; 2)没有指明partition值但有key的情况下,将key的hash值与topic的partition数进行取余得到partition值; 3)没有partition和key情况下,第一次调用时随机生成一个整数,将这个值与topic可用partition总数取余得到partition值,也就是常说的round-robin算法。 Rebalance Rebalance本

Java_Pluto的博客 2226

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Kafka技术专题之总体原理和分析介绍(上)

背景介绍 发布订阅模式 点对点传递模式 该模式即使有多个消费者同时消费数据,也能保证数据处理的顺序。 发布者将消息投递到Topic中,数据在持久化在Topic中,只有订阅了相应Topic的消费者才可以消费这个消息,一个Topic可以允许多个消费者订阅,一个消费者可以订阅多个Topic,所以Topic可以被所有订阅者消费,而被消费掉后不会立即删除,会保留历史消息。 kafka用的就是发布订阅模式: kafka就是一个流处理平台,是一个高效和实时具有发布订阅模式、分布式的、多副本的消息系统,kafka

Java_Pluto的博客 488

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

kafka工作原理介绍

两张图读懂kafka应用:Kafka 中的术语 broker:中间的kafka cluster,存储消息,是由多个server组成的集群。 topic:kafka给消息提供的分类方式。broker用来存储不同topic的消息数据。 producer:往broker中某个topic里面生产数据。 consumer:从broker中某个topic获取数据。Kafka 中的术语设计:1、Broker  ...

Saint 9万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

推荐面试使用 |【夯实Kafka知识体系及基本功】分析一下Kafka总体原理和分析介绍「下篇」

kafka被设计成通用的数据流处理平台,日志收集器和消息队列。高吞吐(日志聚合):大型数据块的整合(offline 平台的拉取)低延迟(消息队列)分区、分布式的实时流处理,从一个流派生新的流;容错(当被投喂非日志数据时)为了支持这些特性,一系列组件被开发,使得kafka更像是一个DB的日志收集系统,而不是消息队列。选择用文件系统,而不是把日志存进进程的缓存再统一flush,有以下理由:顺序读写是随机读写的3000x(机械硬盘)OS disk page cache收益很大,有时缓存进进程反而是double c

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。 4705

Kafka存取原理与实现分析,打破面试难关

在前面的几篇内容中,我们依次讲了Kafka的安装、与Spring Boot的结合,还有选型与应用场景。但是笔者也知道,对于很多小伙伴来说,原理及实现才算重头戏,而且也是面试热点,那么本次我们先来进行存取原理的分析,当然抱着疑问去学习才是最快的,因此在开始之前,我也先抛出一些Kafka的重点与热点问题,希望大家在学习过程中能总结印证

战斧的博客 8607

Kafka原理详细介绍

Kafka   Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。 1.前言   消息队列的性能好坏.

You’re a wanderer just like me 2万+

kafka原理分析—broker总体架构和启动流程

概述 本文分析了kafka的broker的实现架构,通过本文的分析,我们可以对broker的实现架构的各个部分有一个总体的了解。 实现broker的总体架构图 下图是broker内部的总体架构图(该图来自于kafka官方的设计文档): 从图中可以看出,kafka系统是由若干子系统构成。根据核心的功能模块,可以大体划分成以下几个子系统: 客户端连接请求处理服务 客户端指令处理服务 日志管理子系统...

zg_hover的专栏 2116

Kafka的介绍和原理分析

在了解kafka的到工作原理前,先来了解下框架组成。

m0_37938849的博客 174

kafka原理分析—API层实现总体框架分析

概述 本文描述了kafka broker API层的实现原理。 API层主要用来处理kafka客户端发送过来的请求,或者把请求发送给对应的处理子系统,并把处理结果返回给客户端。 也可以查看这篇文章来了解API层的功能。 API层的启动和初始化 上图是kafka API层的启动和初始化过程,可以看到,API层是通过一个线程池来实现的,该线程池也可以通过修改server.properties文件中的...

zg_hover的专栏 541

【Java进阶营】【Kafka技术专题】核心技术原理分析和介绍

[Kafka简介] **       Kafka是一种分布式的,基于发布/订阅的消息系统,它可以让你发布和订阅记录流。在这方面,它类似于一个消息队列或企业消息系统。它可以让你持久化收到的记录流,从而具有容错能力。** 主要设计目标如下: **     时间复杂度为O(1)的方式提供消息持久化能力,并保证即使对TB级以上数据也能保证常数时间的访问性能。** **       高吞吐率:使在非常廉价的商

352

Kafka 架构及原理分析

Kafka 架构及原理分析 Kafka适合什么样的场景? 它可以用于两大类别的应用: 构造实时流数据管道,它可以在系统或应用之间可靠地获取数据。 (相当于message queue) 构建实时流式应用程序,对这些流数据进行转换或者影响。 (就是流处理,通过kafka stream topic和topic之间内部进行变化) 为了理解 Kafka 是如何做到以上所说的功能,从下面开始,我们将深入探索Kafka 的特性。 定位 消息中间件 消息引擎 分布式实时流处理平台 简介 使用场景 大数据领域

架构探险之道 2268

Kafka核心架构设计及核心技术原理分析

胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电子工业出版技术成长领路人称号,荣获2024年电子工业出版社博文视点20周年荣誉专家称号,2024电子工业出版社年度优秀作者。

huxian1234的专栏 1592

Kafka底层原理分析

目录 1、Kafka源码部署 1.1 Scala环境变量 1.2 下载Kafka源码包 1.3 gradle编译部署 2、Kafka核心原理剖析 2.1 什么是分区 2.2 副本与ISR设计 2.3 日志设计 3、Kafka Server Reactor设计模型 3.1 认识Java NIO 4、Kafka 选举机制 4.1 控制器(Broker)选举 4.2 分区副本选举机制 5、Kafka HA设计解析 5.1 Replica均匀分布到整个集群 5.2 消息同步co.

长沙老码农 1462
上一篇: Kafka技术专题之总体原理和分析介绍(中)
下一篇: Java技术专题-JVM研究系列,JVM深入研究挖掘课题
普通网友
博客等级 码龄6年 3807粉丝 69原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值