【MQ-Apache Kafka】
文章平均质量分 82
kafka的搭建与使用
kafka副本机制及选举原理
kafka架构设计原理
kafka最佳性能优化
小小工匠
show me the code ,change the world
展开
-
Kafka - 监控工具 Kafka Eagle:实时洞察Kafka集群的利器
Kafka Eagle是一款开源的、高度可定制的监控和告警工具,专门为Apache Kafka设计。它为Kafka集群提供了丰富的实时监控和管理功能,以确保高可用性、性能和数据完整性。Kafka Eagle的核心目标是帮助用户更好地理解和优化他们的Kafka环境,减少潜在问题的风险。原创 2023-10-31 23:45:00 · 7223 阅读 · 0 评论 -
Kafka - 3.x 消费者 生产经验不完全指北
这使得消费者能够以事务的方式处理消息,包括从Kafka中读取消息、处理消息和提交消息的offset。之前,Kafka的消费者通常使用手动提交offset的方式,但这种方式可能导致消息被重复消费或漏消费,特别是在处理消息和提交offset之间发生错误的情况下。:一些Kafka客户端库提供了高性能的消费者实现,如Apache Kafka的Java客户端,它具有较低的延迟和更高的吞吐量。:选择适当的分区分配策略,以确保分区分配在不同的消费者之间均匀分布,以充分利用多个消费者实例的并行性。原创 2023-10-31 22:15:00 · 5530 阅读 · 0 评论 -
Kafka - 3.x 分区分配策略及再平衡不完全指北
Sticky策略的主要优点是减少了分区再分配的频率,减轻了系统的不稳定性,降低了重新平衡的成本。RoundRobin分区分配策略是Kafka中一种常用的消费者分区分配策略,它的原理非常简单:每个消费者依次轮流分配Topic的分区,以确保分区分配是均匀的。即在执行一次新的分配之前,考虑上一次分配的结果,尽量少的调整分配的变动,可以节省大量的开销。需要注意的是,Kafka的分配策略和Consumer Group的协调机制使得数据的消费和负载均衡变得相对容易管理,同时允许水平扩展,以适应不同规模的工作负载。原创 2023-10-31 06:45:00 · 4755 阅读 · 0 评论 -
Kafka - 3.x Kafka消费者不完全指北
每个实例代表一个消费者组中的一个成员。:初始化消费者组前,需要创建一个消费者配置对象,其中包括了一些重要的属性,例如Kafka集群的地址、消费者组的ID、自动提交偏移量等。:首先,你需要配置消费者的属性,包括Kafka集群的地址、消费者组、主题名称、序列化/反序列化器、自动偏移提交等。:如果有消费者实例加入或离开消费者组,或者分区的分配发生变化,Kafka会自动进行重新平衡,以确保消息均匀分配。:如果消费者实例加入或退出消费者组,或者分区的分配发生变化,消费者组会自动进行重新平衡,以确保消息均匀分配。原创 2023-10-30 20:15:00 · 4606 阅读 · 0 评论 -
Kafka - 3.x 文件存储不完全指北
Kafka的producer生产数据,要写入到log文件中,写的过程是一直追加到文件末端,为顺序写。总之,Kafka的日志清理策略是一个关键组成部分,用于管理消息日志的大小和维护磁盘空间。根据业务需求,可以选择不同的保留策略和清理策略,以满足数据保留、性能和可用性方面的要求。Kafka的日志清理策略是为了管理磁盘上的数据,确保系统的性能和可用性。日志清理策略通常与消息日志的保留策略相关。总之,Kafka的数据存储机制通过主题、分区和段的组织,支持高吞吐量的消息流处理,使其成为一种强大的数据流平台。原创 2023-10-28 11:15:00 · 4564 阅读 · 0 评论 -
Kafka - 3.x 副本不完全指北
follower发生故障后会被临时踢出ISR,待该follower恢复后,follower会读取本地磁盘记录的上次的HW,并将log文件高于HW的部分截取掉(HW之前每个节点都有,故安全),从HW开始向leader进行同步。当分区的领导者(Leader)失败时,会触发新的领导者选举过程,确保分区的可用性。eader发生故障之后,会从ISR中选出一个新的leader,之后,为保证多个副本之间的数据一致性,其余的follower会先将各自的log文件高于HW的部分截掉,然后从新的leader同步数据。原创 2023-10-28 08:00:00 · 5061 阅读 · 0 评论 -
Kafka - 3.x 图解Broker总体工作流程
图解Broker工作流程原创 2023-10-28 06:15:00 · 5136 阅读 · 0 评论 -
Kafka - 3.x Producer 生产者最佳实践
对于某些不太重要的数据,对数据的可靠性要求不是很高,能够容忍数据的少量丢失,所以没必要等ISR中的follower全部接收成功。所以Kafka为用户提供了三种可靠性级别,用户根据对可靠性和延迟的要求进行权衡,选择以下的配置。,参数值默认为true,设置为false就关闭了。在prudocer的配置对象中,添加参数。原创 2023-10-27 21:45:00 · 4480 阅读 · 0 评论 -
Kafka - 3.x Kafka 生产者分区技巧全面指北
除了使用 Kafka 提供的默认分区器进行分区分配,还可以使用自定义的分区器,只需同DefaultPartitioner 一样实现 Partitioner 接口即可。默认的分区器在 key 为 null 时不会选择非可用的分区, 我们可以通过自定义的分区器 来打破这一限制,具体的实现可以参考下面的示例代码,实现步骤:① 定义类,实现Partitioner接口② 重写partition()方法import org/*** @author 小工匠} else {原创 2023-10-27 07:15:00 · 4916 阅读 · 0 评论 -
Kafka - TimeoutException: Expiring 1 record(s) for art-0:120001 ms has passed since batch creation
不关闭防火墙,但是建议本机防火墙开放特定端口,可以使用如下命令 (使用root账户)我并没有大改配置,具体的配置可参考。结果都是关闭的 (建议开放特定端口)可以看消费者的控制台程序,输出正常。要解决这个问题,修改如上配置即可。这种情况,肯定要先看网络问题嘛。如下的配置并没有修改。原创 2023-10-26 20:45:00 · 9921 阅读 · 2 评论 -
Kafka - 异步/同步发送API
该方法有两个参数分别是RecordMetadata(元数据信息)和Exception(异常信息)。回调函数callback()会在producer收到ack时调用,为异步调用。需求:创建Kafka生产者,采用异步的方式发送到Kafka broker。同步发送的意思就是,一条消息发送之后,会阻塞当前线程,直至返回ack。注意:消息发送失败会自动重试,不需要我们在回调函数中手动重试。忽略我这个offset …原创 2023-10-26 22:45:00 · 6162 阅读 · 0 评论 -
Kafka - 图解生产者消息发送流程
发送消息到RecordAccumulator:主线程将创建的消息发送到一个双端队列(deque)叫做RecordAccumulator。管理消息的状态:RecordAccumulator跟踪每条消息的发送状态,以确保消息被成功发送到Kafka broker。从RecordAccumulator拉取消息:Sender线程定期轮询(poll)RecordAccumulator,检查是否有新消息需要发送。负责消息批量化:RecordAccumulator也有助于消息的批量发送,以减少网络开销和提高性能。原创 2023-10-26 20:45:00 · 4679 阅读 · 0 评论 -
Kafka - 3.x Kafka命令行操作
这些参数是Kafka管理工具的一部分,用于在Kafka集群上执行各种管理任务,例如创建、删除、配置和查看主题。根据具体的任务,您可以使用这些参数中的一个或多个来执行相应的操作。:指定要连接的Kafka Broker的主机名和端口号,用于建立连接到Kafka集群的初始引导服务器。需要指定要修改的主题以及新的配置。:用于更新系统默认的Kafka主题配置,可以设置不同的主题级别的配置参数。:查看指定主题的详细描述,包括主题的配置、分区信息、副本分配等。:指定操作的主题的名称,这是执行各种操作的目标主题。原创 2023-10-26 06:45:00 · 4904 阅读 · 0 评论 -
Kafak - 单机/集群快速安装指北(3.x版本)
因为Zookeeper集群当中记录着Kafka集群相关信息,Zookeeper集群一旦先停止,Kafka集群就没有办法再获取停止进程的信息,只能手动杀死Kafka进程了。分别在hadoop103和hadoop104主机上修改配置文件server.properties中broker.id=103、broker.id=104。注意:停止Kafka集群时,一定要等Kafka所有节点进程全部停止后再停止Zookeeper集群。注:broker.id不得重复。原创 2023-10-26 04:30:00 · 5356 阅读 · 0 评论 -
Kafka - java.lang.VerifyError: Uninitialized object exists on backward branch 193
我这里的版本虽然看起来对,但是JAVA_HOME不对。无论运行哪个版本的 JRE,都需要 JAVA_HOME 指向正确的 JDK 版本。这玩意儿一看就是JDK版本的问题。原创 2023-10-26 05:30:00 · 4892 阅读 · 2 评论 -
Kafka - 深入了解Kafka基础架构:Kafka的基本概念
- 1)Producer :消息生产者,就是向kafka broker发消息的客户端- 2)Consumer :消息消费者,向kafka broker获取消息的客户端- 3)Consumer Group (CG):消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个broker可以有多个不同的topic,一个topic下的一个分区只能被一个消费者组内的一个消费者所消费;消费者组之间互不影响。消费者组是逻辑上的一个订阅者原创 2023-10-25 22:15:00 · 5538 阅读 · 0 评论 -
Kafka - 消息队列的两种模式
这种模式适用于一对多的通信,其中消息的发送者不需要关心谁会接收消息,通常用于事件处理、日志记录和实时通知等场景。消息队列主要分为两种模式:点对点模式(一个生产者对口一个消费者)和发布/订阅模式(一对多)。这种模式适用于一对一的通信,其中生产者和消费者之间有直接的关联,通常用于任务分发和处理。在实际的消息队列系统中,可以根据需求选择合适的模式来实现不同类型的消息传递。这两种模式有各自的优势和适用性,选择哪种模式取决于应用程序的需求。消息队列确实可以根据消息传递的模式分为。原创 2023-10-25 20:15:00 · 6020 阅读 · 0 评论 -
MQ - 闲聊MQ一二事儿 (Kafka、RocketMQ 、Pulsar )
ookeeper 是 cp 强一致架构的一种,其内部使用 zab 算法,进行信息同步和容灾,在信息量较小的情况下,性能较好,当信息交互变多,因为同步带来的性能损耗加大,性能和吞吐量降低。kafka 的整体性能收到了 topic 数量的限制,这和底层的存储有密不可分的关系,我们上面讲过,当消息来的时候,底层数据使用追加写入的方式,顺序写盘,使得整体的写性能大大提高,但这并不能代表所有情况,当我们 topic 数量从几个变成上千个的时候,情况就有所不同了。所以,针对不同场景选择合适的产品是非常关键的。原创 2023-07-24 23:29:14 · 9957 阅读 · 0 评论 -
Kafka - Primie Number of Partitions Issue & Consumer Group Rebalance
在 Kafka 中,Consumer Group Rebalance 是指在 Consumer Group 中添加或删除消费者时,重新分配 Topic 的分区的过程。Consumer Group Rebalance 由 Consumer Group Coordinator(负责管理 Consumer Group State 的 Broker)触发,并使用 Consumer Group Assignment Strategy(确定如何将分区分配给 Consumer Group 中的消费者)重新平衡分区分配。原创 2023-07-20 10:57:06 · 9107 阅读 · 0 评论 -
Kafka - AR 、ISR、OSR,以及HW和LEO之间的关系
如果ISR太小,那么当主副本故障时,选举新的主副本可能会导致数据丢失或延迟;如果ISR太大,那么同步数据的成本会变得很高,影响分区的性能。当消费者从分区中读取消息时,它会记录当前已经读取到的偏移量,并将该偏移量作为下一次读取的起始位置。如果消费者读取到的偏移量小于HW,那么它只能读取到已经被所有副本复制的消息;如果消费者读取到的偏移量大于HW,那么它可能会读取到未被所有副本复制的消息。OSR的存在不会影响分区的可用性和性能,但是如果OSR过大,那么可能会占用过多的磁盘空间和网络带宽。原创 2023-07-19 19:45:00 · 10073 阅读 · 0 评论 -
Kafka - 分区中各种偏移量的说明
LEO是Log End Offset的缩写,它标识当前日志文件中下一条待写入消息的offset,上图中offset为9的位置即为当前日志文件的LEO,LEO的大小相当于当前日志分区中最后一条消息的offset值加1。如上图,它代表一个日志文件,这个日志文件中有 9 条消息,第一条消息的 offset(LogStartOffset)为0,最后一条消息的offset为8,offset为9的消息用虚线框表示,代表下一条待写入的消息。如果消费者读取到的偏移量大于HW,那么它可能会读取到未被所有副本复制的消息。原创 2023-07-18 22:15:00 · 9533 阅读 · 0 评论 -
Kakfa - 多副本架构
提高数据可靠性:多副本架构可以将同一个主题的数据同时存储在多个 Broker 上,当某个 Broker 发生故障时,系统可以从其他 Broker 上获取数据,从而保证数据的可靠性。为了避免这种情况,需要对数据进行复制和同步。提高系统可用性:多副本架构可以保证系统在某个 Broker 发生故障时仍然可以继续提供服务,从而提高系统的可用性。会增加存储成本:多副本架构需要将同一个主题的数据同时存储在多个 Broker 上,会增加存储成本。会增加系统复杂度:多副本架构需要对数据进行复制和同步,会增加系统的复杂度。原创 2023-07-18 20:15:00 · 11028 阅读 · 0 评论 -
Apache Kafka - 流式处理
Kafka被广泛认为是一种强大的消息总线,可以可靠地传递事件流,是流式处理系统的理想数据来源。流式处理系统通常是指一种处理实时数据流的计算系统,能够对数据进行实时的处理和分析,并根据需要进行相应的响应和操作。与传统的批处理系统不同,流式处理系统能够在数据到达时立即进行处理,这使得它们特别适合需要实时响应的应用程序,例如实时监控和警报、实时推荐、实时广告投放等。Kafka的设计使其成为流式处理系统的理想数据源,因为它具有高吞吐量、低延迟和可靠性,并且能够轻松地扩展以处理大量数据。原创 2023-06-03 23:33:26 · 15425 阅读 · 1 评论 -
Apache Kafka - 跨集群数据镜像 MirrorMaker
在分布式系统中,数据镜像是一项重要的功能,它可以将数据从一个集群复制到另一个集群,以保证数据的高可用性和容错性。Apache Kafka是一个流处理平台,它提供了一种跨集群数据镜像的解决方案,可以让用户轻松地将数据从一个Kafka集群复制到另一个Kafka集群。Kafka跨集群数据镜像的实现方式是通过Kafka Connect来完成的。Kafka Connect是Kafka提供的一种可扩展的数据导入和导出框架,它可以将数据从外部系统导入到Kafka集群中,也可以将Kafka集群中的数据导出到外部系统中。原创 2023-06-01 21:15:00 · 14713 阅读 · 0 评论 -
Apache Kafka - 构建数据管道 Kafka Connect
Kafka Connect 是一个工具,它可以帮助我们将数据从一个地方传输到另一个地方。比如说,你有一个网站,你想要将用户的数据传输到另一个地方进行分析,那么你可以使用 Kafka Connect 来完成这个任务。Kafka Connect 的使用非常简单。它有两个主要的概念:source 和 sink。Source 是从数据源读取数据的组件,sink 是将数据写入目标系统的组件。原创 2023-06-01 19:30:00 · 15336 阅读 · 0 评论 -
Apache Kafka - 灵活控制Kafka消费_动态开启/关闭监听实现
在实际应用中,往往需要根据业务需求动态开启/关闭Kafka消费者监听。例如,在某些时间段内,可能需要暂停对某个Topic的消费,或者在某些条件下才开启对某个Topic的消费。在Spring Boot中,要实现动态的控制或关闭消费以及动态开启或关闭监听,可以使用Spring Kafka提供的一些功能。原创 2023-05-31 19:20:18 · 16593 阅读 · 0 评论 -
Apache Kafka - 如何实现可靠的数据传递
所以,Kafka 通过分区多副本、生产者消费者重试机制、批量操作与校验、顺序写磁盘与页缓存、混合存储、高可用设计以及时间戳与消息编号等手段,实现了高吞吐、低延迟与高可靠的数据传输。这也体现了 Kafka 的设计目标与关键机制。原创 2023-05-28 19:52:36 · 14627 阅读 · 0 评论 -
Apache Kafka - 理解Kafka内部原理
生产者将消息发送给分区的领导者,领导者将消息追加到日志并进行复制。消息以追加的方式写入日志片段,并根据一定的大小或时间策略进行日志段的滚动和压缩。这种存储模型支持高吞吐量的消息写入和顺序读取,并允许消息的持久化存储和回溯。ZooKeeper维护了有关Kafka集群中所有服务器的元数据信息,包括主题(topics)、分区(partitions)以及它们在集群中的分布情况。总之,Kafka的实现机制包括集群成员关系的管理、控制器的角色分配、基于副本的复制机制、请求的处理和基于提交日志的物理存储。原创 2023-05-28 12:46:57 · 14394 阅读 · 0 评论 -
Apache Kafka - 高性能原因探究
分布式架构:Kafka 采用分布式集群架构,可以水平扩展到上万个节点,支持每秒处理百万级消息。持久化存储:Kafka 使用文件系统持久化存储消息,避免了数据库成为性能瓶颈,大大提高了吞吐量。顺序读写:Kafka 的消息和文件都是顺序读写的,不需要频繁的随机寻址,这种顺序写入的方式非常高效。零拷贝:Kafka 使用 SendFile 技术,可以直接将文件映射到内核空间和网络空间,避免用户空间和内核空间之间的拷贝,提高网络吞吐量。原创 2023-05-27 21:24:25 · 15222 阅读 · 0 评论 -
Apache Kafka - ConsumerInterceptor 实战(2)
在Spring Boot中配置Kafka消费者的拦截器需要进行以下步骤:首先,创建一个拦截器类,实现Kafka的ConsumerInterceptor接口,定义拦截器的逻辑。在应用的配置文件(例如application.properties或application.yml)中,添加拦截器相关的配置项,其中包括设置interceptor.class属性为拦截器类的全限定名。原创 2023-05-25 21:02:27 · 15367 阅读 · 0 评论 -
Apache Kafka - ConsumerInterceptor 实战 (1)
ConsumerInterceptor是Kafka中的一个重要组件,它允许开发人员在Kafka消费者端拦截和修改消息的处理过程。ConsumerInterceptor可以用于实现各种功能,从消息监控到数据转换和错误处理,为开发人员提供了更大的灵活性和可定制性。ConsumerInterceptor的主要作用是在消息被消费之前和之后对其进行拦截和处理。原创 2023-05-25 20:41:02 · 15693 阅读 · 0 评论 -
Apache Kafka - 重识消费者
Kafka是一个分布式的消息队列系统,它的出现解决了传统消息队列系统的吞吐量瓶颈问题。Kafka的高吞吐量、低延迟和可扩展性使得它成为了很多公司的首选消息队列系统。在Kafka中,消息被分成了不同的主题(Topic),每个主题又被分成了不同的分区(Partition)。生产者(Producer)将消息发送到指定的主题中,而消费者(Consumer)则从指定的主题中读取消息。接下来我们将介绍Kafka消费者相关的知识。原创 2023-05-20 23:15:00 · 16085 阅读 · 1 评论 -
Apache Kafka - 重识Kafka生产者
Kafka 生产者是 Apache Kafka 中的一个重要组件,它负责将数据发送到 Kafka 集群中。在实时数据处理和流式处理应用程序中,Kafka 生产者扮演着非常重要的角色。这里我们将介绍 Kafka 生产者的概念、工作原理以及如何使用 Kafka 生产者。Kafka 生产者是 Apache Kafka 中的一个重要组件,它负责将数据发送到 Kafka 集群中。Kafka 生产者的工作原理是连接 Kafka 集群、发送数据、处理错误和关闭连接。原创 2023-05-20 21:15:00 · 15291 阅读 · 0 评论 -
Apache Kafka - 安装注意事项
在现代的大数据时代,消息队列成为了极为重要的组件。Kafka作为一种高吞吐量、低延迟、可扩展的分布式发布订阅消息系统,在大数据领域得到了广泛的应用。来,这里我们将介绍如何安装Kafka以及一些配置注意事项。原创 2023-05-20 19:00:00 · 15609 阅读 · 0 评论 -
Apache Kafka - 重识Kafka
Kafka是一个高性能、分布式的消息队列系统,它的出现为大规模的数据处理提供了一种可靠、快速的解决方案。我们先初步了解Kafka的概念、特点和使用场景。原创 2023-05-20 16:30:00 · 15958 阅读 · 0 评论 -
Apache Kafka - 生产者内存优化注意事项
如果生产者出现频繁 full GC 或接近 JVM 最大内存,并且消费端的消费能力仍然跟得上,表明生产者的内存和资源很有可能不足以支撑当前的消息负载。topic 的 partition 数量和分布也会影响每个生产者的负载。对 Kafka 集群进行升级和使用更强劲的硬件也可以提高其整体吞吐能力,間接减轻生产者的负载。一旦出现问题及时调优。如果一个生产者负载过大,可以增加更多生产者实例,分散负载,降低每个实例的内存压力。如果生产者负载较大,可以适当限制客户端的消息生产速率,降低生产者的负载压力。原创 2023-05-13 21:22:25 · 15917 阅读 · 0 评论 -
Apache Kafka-通过API获取主题所有分区的积压消息数量
【代码】Apache Kafka-通过API获取主题所有分区的积压消息数量。原创 2023-05-06 21:15:00 · 16847 阅读 · 0 评论 -
Apache Kafka-Spring Kafka生产消费@KafkaListener源码解析
文章目录概述概述#kafkaspring.kafka.bootstrap-servers=10.11.114.247:9092spring.kafka.producer.acks=1spring.kafka.producer.retries=3spring.kafka.producer.batch-size=16384spring.kafka.producer.buffer-memory=33554432spring.kafka.producer.key-serializer=org.a原创 2021-03-31 19:56:24 · 14775 阅读 · 2 评论 -
Apache Kafka-Spring Kafka将泛型反序列化为对象而非LinkedHashMap
文章目录PrePre#kafkaspring.kafka.bootstrap-servers=10.11.114.247:9092spring.kafka.producer.acks=1spring.kafka.producer.retries=3spring.kafka.producer.batch-size=16384spring.kafka.producer.buffer-memory=33554432spring.kafka.producer.key-serializer=org原创 2021-03-31 16:51:26 · 13389 阅读 · 0 评论 -
Apache Kafka-max.poll.interval.ms参数含义说明
文章目录官方说明官方说明https://kafka.apache.org/documentation/选择对应的版本,我这里选的是 2.4.Xhttps://kafka.apache.org/24/documentation.html选择https://kafka.apache.org/24/documentation.html#consumerconfigs查找 max.poll.interval.ms让我们来品一品官方的解读...原创 2021-02-23 00:40:43 · 14154 阅读 · 0 评论