![](https://img-blog.csdnimg.cn/direct/1fdce80617384472a6029b41eec01e9d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Kafka
文章平均质量分 93
Kafka 最初由 Linkedin 公司开发,是一个分布式、支持分区的(Partition)、多副本的(Replica),基于 Zookeeper 协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景。
流华追梦
15年+ IT从业经验,互联网高级算法工程师、Java语言专家、.Net专家、博客专家、阿里云专家、CSDN2023博客之星,CSDN付费资源项目实践专家,谢谢关注!
展开
-
(一)Kafka 地理复制之配置地理复制
许多体系结构具有跨多个数据中心部署的事件流,这些数据中心跨越事件流平台、数据中心或地理区域的边界。在这些情况下,一个事件流平台中的客户端应用程序访问另一个平台中生成的事件可能很有用。不应强制所有客户端从源事件流平台读取,这可能会导致高延迟和数据出口成本。相反,使用一次读取多次的方法,可以将数据复制到本地数据中心,在那里客户端可以快速而廉价地完成所有处理。原创 2024-04-12 07:30:00 · 1364 阅读 · 0 评论 -
Kafka 推荐配置及 Java 版本
Kafka 推荐配置即是指 Kafka 生产者、消费者以及 Broker 三者的重要配置,只要这些重要配置设置正确了,那么使用起来便不会有大的问题。比如,生产者的重要配置有 acks、compression、batch.size 等,消费者的重要配置有 fetch.size 等。原创 2024-04-11 07:30:00 · 1178 阅读 · 0 评论 -
(二)Kafka 多租户架构
接上一篇《(一)Kafka 多租户架构》,本篇第二节从 2.4 小节开始。原创 2024-04-10 07:30:00 · 965 阅读 · 0 评论 -
(一)Kafka 多租户架构
Kafka 租户模式是一种多租户架构模式,用于在单个 Kafka 集群中支持多个不同的租户。这种模式可以提供更好的资源隔离和租户管理,同时减少硬件成本和管理复杂性。原创 2024-04-09 07:30:00 · 1417 阅读 · 0 评论 -
Kafka 地理复制之启停和监控地理复制
许多组织使用 Apache Kafka 构建跨越多个地理分布的数据中心的数据管道,用于从高可用性和灾难恢复到数据聚合和法规遵从性的各种用例。从单集群部署到多集群部署的过程可能会令人望而生畏,因为您需要处理网络配置、安全模型和操作挑战。对 Kafka 的地理复制支持已经取得了长足的进步,开源和商业解决方案都支持各种复制拓扑和灾难恢复策略。原创 2024-04-08 07:30:00 · 847 阅读 · 0 评论 -
(二)Kafka 地理复制之配置地理复制
接一篇《(一)Kafka 地理复制之配置地理复制》,第二节从 2.4 小节开始。目标群集中复制的 Topic(有时称为远程 Topic)将根据复制策略进行重命名。MirrorMaker 使用此策略来确保来自不同集群的事件(也称为记录、消息)不会写入同一 Topic 分区。bar-topic。原创 2024-04-05 07:30:00 · 983 阅读 · 0 评论 -
Kafka 地理复制之概览,复制流
使用 MirrorMaker,Kafka 管理员可以将 Topic、Topic 配置、消费者组及其偏移量和 ACL 从一个或多个源 Kafka 集群复制到一个或更多个目标 Kafka 群集,即跨集群环境。简而言之,MirrorMaker 使用连接器从源集群消费并生产到目标集群。这些从源集群到目标集群的定向流称为复制流。它们是用格式定义的 {source_cluster}->{target_cluster},如后所述。管理员可以基于这些流创建复杂的复制拓扑。主动/主动高可用性部署:A->B,B->A。原创 2024-04-04 07:30:00 · 1253 阅读 · 0 评论 -
Kafka 基本操作之节点退役,增加副本,数据迁移期间限制带宽使用
Kafka 节点退役是指将一个节点永久地从集群中移除的过程。节点退役通常发生在节点故障、硬件损坏或集群扩容等情况下。节点退役的原理同样基于 Kafka 的分布式设计和复制机制。当一个节点需要退役时,需要将该节点上的所有分区的 Leader 副本迁移到其他节点上,并将该节点上的所有副本从集群中移除。原创 2024-04-02 07:30:00 · 771 阅读 · 0 评论 -
Kafka 基本操作之设置配额,操作之数据中心
可以设置 Kafka 配额以限制网络带宽使用,Kafka 度量此吞吐量 (以字节/秒为单位)。如果发现超过 30 秒窗口的吞吐量超过已设置的配额,那么 Kafka 会计算足够的延迟,以使吞吐量在配额限制内。然后,Kafka Broker 将延迟信息作为标准 Kafka 协议响应的一部分发送给客户机。遵循协议合同的合作客户机在发出新请求之前等待此延迟;不合作客户机可能不遵守调速请求,但在这种情况下,Broker 在调速延迟过去之前不会读取该客户机的请求(这可能导致不合作客户机超时)。原创 2024-04-03 07:30:00 · 1052 阅读 · 0 评论 -
Kafka 基本操作之集群扩容
Kafka 集群的服务发现是由 ZooKeeper 实现的,因此 Kafka 集群想添加新的 Broker 就非常容易。我们只需要为新的 Broker 设置一个唯一的 broker.id, 然后启动新增的 Kafka 就行。Kafka 集群会自动发现新增的 Broker 并同步原数据,包括当前集群有哪些 topics 以及 topics 的分区信息等。分区重新分配工具还可以用于选择性地将分区的副本移动到特定的 Broker 集。原创 2024-03-29 07:30:00 · 964 阅读 · 0 评论 -
Kafka 基本操作之平衡 Leader、群集之间的数据镜像、检查消费者的位置、管理消费者组
Leader 负载均衡是指在分布式系统中,将负载均衡地分配给不同的 Leader 节点,以实现系统的高可用性和性能优化。在 Kafka 中,Leader 负载均衡是通过动态选举和重新分配分区的方式来实现的。Kafka 的分区是分布在多个 Broker(即 Kafka 节点)上的,每个分区都有一个 Leader 和若干个Follower。Leader 负责处理分区的读写请求,而 Follower 则复制 Leader 的数据以提供备份和故障恢复。原创 2024-03-26 07:30:00 · 1021 阅读 · 0 评论 -
Kafka 基本操作之添加、修改、删除 Topic 及优雅关闭 Kafka
本节将回顾您在 Kafka 集群上执行的常见 Topic 的操作。本节中介绍的所有工具都可以在 Kafka 发行版的 bin/ 目录下使用,如果在没有参数的情况下运行,每个工具都会打印所有可能的命令行选项的详细信息。原创 2024-03-25 07:30:00 · 1404 阅读 · 0 评论 -
Kafka 实现之消息及消息格式
Kafka 的消息格式是由消息的键和值组成的。每条消息都有一个可选的键和一个必选的值,它们都是字节数组。键和值可以是任意类型的数据,但在发送和接收消息时,它们需要被序列化为字节数组。在 Kafka 中,消息是以字节数组的形式进行传输和存储的。这种灵活的格式使得 Kafka 非常适合处理各种类型的数据,包括结构化数据、文本数据、二进制数据等。Kafka 的消息格式并不限制消息的内容,开发人员可以自由定义消息的格式和结构。这种灵活性使得 Kafka 可以适应各种不同的应用场景和数据类型。原创 2024-03-21 07:30:00 · 1316 阅读 · 0 评论 -
Kafka 实现之分配(Distribution)
Kafka 提供了消费者客户端参数 partition.assignment.strategy 来设置消费者与订阅主题之间的分区分配策略。默认情况下,此参数的值为 org.apache.kafka.clients.consumer.RangeAssignor,即采用 RangeAssignor 分配策略。除此之外,Kafka 还提供了另外两种分配策略:RoundRobinAssignor 和 StickyAssignor。原创 2024-03-18 07:30:00 · 1082 阅读 · 0 评论 -
Kafka 实现之网络层和日志
Kafka 客户端一般不会碰到大量连接请求,但是 Broker 会遇到,因为它不止收到提供者/消费者的连接请求,还需要收到集群中其他 Broker 的请求,所以对于服务端来说,面临的是高并发场景,客户端使用 NetworkClient 来管理连接就足够了,Server 是不行的,它采用 Reactor 模式实现网络层。原创 2024-03-15 07:30:00 · 1666 阅读 · 0 评论 -
Kafka 实现之接口设计 —— 生产者 API、消费者 API
Kafka 强大的应用程序层的基础是用于访问存储的两个基本 API,即用于写入事件的生产者 API和用于读取事件的消费者 API。在这两个 API 之上构建了用于集成和处理的 API。原创 2024-03-13 07:30:00 · 1033 阅读 · 0 评论 -
Kafka 设计之配额(Quatos)
Kafka 配额对生产和使用请求实施限制,以控制客户机所使用的代理资源。Kafka 配额使管理员能够对单个生产者和使用者应用程序可使用的网络吞吐量实施限制。原创 2024-03-12 09:05:50 · 789 阅读 · 0 评论 -
Kafka 设计之日志压缩
Kafka 日志压缩类似于 Redis 持久化的 RDB 模式,假设 Kafka 崩溃,通过日志文件恢复最终状态时,Kafka 只需要关心最新状态,并不关心每一时刻的状态。Kafka 日志压缩主要是针对两种数据:1. Key 值相同的数据,压缩后只记录同 Key 值最新的一条数据;2. Key 不为空,Value 为空的消息,这种消息在日志压缩过程中会被设置为墓碑消息。原创 2024-03-11 07:30:00 · 974 阅读 · 0 评论 -
Kafka 设计之副本和 Leader 选举
在 Kafka 中,副本分成两类:领导者副本(Leader Replica)和追随者副本(Follower Replica)。每个分区在创建时都要选举一个副本,称为领导者副本,其余的副本自动称为追随者副本。Kafka 的副本机制比其他分布式系统要更严格一些。在 Kafka 中,追随者副本是不对外提供服务的。这就是说,任何一个追随者副本都不能响应消费者和生产者的读写请求。所有的请求都必须由领导者副本来处理,或者说,所有的读写请求都必须发往领导者副本所在的 Broker,由该 Broker 负责处理。原创 2024-03-10 07:30:00 · 1390 阅读 · 0 评论 -
Kafka 设计之消息传递保障
消息传递保障对于分布式系统的可靠性至关重要。在分布式系统中消息传递保障是确保系统可靠性的核心问题之一。系统需要确保消息能够按照预期的方式进行传递,以满足业务需求。Kafka 是一种分布式的消息队列系统,作为消息中间件常用于实现基于发布/订阅模型的消息传递服务。因此在 Kafka 中需要提供消息传递保障。原创 2024-03-08 07:30:00 · 847 阅读 · 0 评论 -
Kafka 设计之生产者与消费者
接上一篇。本文将介绍 Kafka 设计中的生产者与消费者,通过对官方文档的阅读,来加深对 Kafka 生产者和消费者设计的理解。原创 2024-03-07 07:30:00 · 1042 阅读 · 0 评论 -
Kafka 之 AdminClient 配置
一般情况下,我们都习惯使用 kafka-topics.sh 脚本来管理主题,但有些时候我们希望将主题管理类的功能集成到公司内部的系统中,打造集管理、监控、运维、告警为一体的生态平台,那么就需要以程序调用 API 的方式去实现。Kafka 社区于 0.11 版本正式推出了 Java 客户端版的 AdminClient,并不断地在后续的版本中对它进行完善。本文主要介绍 KafkaAdminClient 的配置项,以及各配置项的具体含义。原创 2024-03-06 07:30:00 · 1594 阅读 · 0 评论 -
Kafka 之 Connect 配置和 Stream 配置
Kafka Connect 是一款可扩展并且可靠地在 Apache Kafka 和其他系统之间进行数据传输的工具。可以很简单的定义 connectors(连接器) 将大量数据迁入、迁出Kafka。Kafka Stream 是 Apache Kafka 从 0.10 版本引入的一个新 Feature,它提供了对存储于 Kafka内的数据进行流式处理和分析的功能。原创 2024-03-05 07:30:00 · 1129 阅读 · 0 评论 -
Kafka 设计之效率
接上一篇《Kafka 设计之动机与持久性》。本文将介绍 Kafka 设计中的效率以及端到端的批量压缩,通过对官方文档的阅读,来加深对 Kafka 效率设计的理解。原创 2024-03-04 07:30:00 · 792 阅读 · 0 评论 -
Kafka 设计之动机与持久性
Kafka 设计初衷是使 Kafka 能够成为统一、实时处理大规模数据的平台,为了达到这个目标,支持以下几个应用场景:高吞吐来支持诸如实时的日志集这样的大规模事件流;很好的处理大量积压的数据,以便能够周期性加载离线数据进行处理;能够低延迟处理传统消息应用场景;支持分区,分布式,实时处理消息,同时具有容错保障机制。原创 2024-03-03 07:30:00 · 1709 阅读 · 0 评论 -
Kafka 之 Broker 配置,含各大版本0.xx、1.xx、2.xx、3.xx
Kafka 集群由多个 Broker 组成。每个 Broker 都是一个独立的服务器,它负责管理一个或多个主题的分区。Broker 接收来自生产者的消息,并将消息存储在消息队列中。同时,它还处理来自消费者的请求,并将消息发送回消费者。每个分区都会被分配到一个 Broker 上,并在该 Broker 上进行复制,以确保数据的高可用性和冗余性。broker.idlog.dirs本文将详细论述主题级别配置和默认值。原创 2024-02-27 07:30:00 · 2007 阅读 · 0 评论 -
Kafka 之消费者 Consumer 配置
Kafka 的官方文档列出了所有与消费者相关的配置说明。大部分参数都有合理的默认值,一般不需要修改它们,不过有一些参数与消费者的性能和可用性有很大关系。在应用开发中需要根据自己的实际情况去选择和动态调整它们,但 Kafka 的参数非常多,本篇文章就详细介绍下 Kafka 的消费者参数。。在0.9.0.0中,我们引入了新的 Java 消费者来替代早期基于 Scala 的简单和高级消费者。新老客户端的配置如下文。原创 2024-03-01 07:30:00 · 998 阅读 · 0 评论 -
Kafka 之 生产者(Producer) 配置
Kafka Producer 是 Kafka 集群的发送消息的客户端,主要就是向某个 Topic 的某个分区发送一条消息。Partitioner 决定向哪个分区发送消息。用户指定 Key,默认的分区器会根据 Key 的哈希值来选择分区,如果没有指定 Key 就以轮询的方式选择分区。也可以自定义分区策略。Kafka Producer 的配置中,bootstrap.servers、key.serializer、value.serializer 这三个是必须的。原创 2024-02-20 07:30:00 · 1912 阅读 · 0 评论 -
Kafka 之 Topic 配置
Topic 就是数据主题,一个逻辑概念,可以用来区分业务系统。Kafka 中的 Topic 总是多订阅者模式,一个 Topic 可以拥有一个或者多个消费者来订阅它的数据。Topic 下的数据会被进一步分配到分区(Partition)中,Partition 是最小的存储单元,掌握着一个 Topic 的部分数据。每个 Partition 都是一个单独的 log 文件,每条记录(消息)都以追加的形式写入。事件被组织并持久地存储在 Topic 中,Topic 类似于文件系统中的文件夹,事件就是该文件夹中的文件。原创 2024-02-17 07:30:00 · 901 阅读 · 0 评论 -
Kafka 之 AdminClient API
自0.11.0.0版本起,Kafka 社区推出了 AdminClient 和 KafkaAdminClient,意在统一所有的集群管理 API。使用 0.11.0.0 及以后版本的用户应该始终使用这个类来管理集群。Kafka 的管理 Java 客户端,支持管理和检查 Topic、Broker、配置和 ACL。所需的最小 Broker版本是 0.10.0.0。有更严格要求的方法将指定所需的最小 Broker 版本。这个客户端是在 0.11.0.0中引入的,API 还在不断发展。原创 2024-02-16 07:30:00 · 646 阅读 · 0 评论 -
Kafka 之消费者(Consumer)
消息的消费一般有两种模式,推模式和拉模式。推模式是服务端主动将消息推送给消费者,而拉模式是消费者主动向服务端发起请求来拉取消息。Kakfa 采用的是拉模式,这样可以很好的控制消费速率。原创 2024-02-14 07:30:00 · 855 阅读 · 0 评论 -
Kafka 之生产者(Producer)
Kafka生产者是一个应用程序,它负责向 Kafka 主题发送消息。这些消息可以用于多种目的,如记录用户活动、收集物联网设备数据、保存日志消息或缓存即将写入数据库的数据。原创 2024-02-13 07:30:00 · 1282 阅读 · 0 评论 -
Kafka 下载与启动
在前文《Kafka 入门介绍》中,主要介绍了 Kafka 的由来、使用场景、相关的重要术语等,本文就着重介绍下Kafka 的下载、安装和启动,以便为接下使用它做好准备。原创 2024-02-09 07:30:00 · 1669 阅读 · 0 评论 -
Kafka 入门介绍
Kafka 最初由 Linkedin 公司开发,是一个分布式、支持分区的(Partition)、多副本的(Replica),基于 Zookeeper 协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景,比如基于 Hadoop 的批处理系统、低延迟的实时系统、Storm/Spark 流式处理引擎,web/nginx 日志、访问日志,消息服务等等,用 scala 语言编写,Linkedin 于2010年贡献给了 Apache 基金会并成为顶级开源项目。原创 2024-02-08 07:30:32 · 1619 阅读 · 0 评论