揭秘Kafka从入门到精通,架构最全详解

news2024/12/27 12:31:45

 

Kafka架构最全详解

   

Kafka,作为关键消息中间件,广泛应用于大型架构与顶尖企业。本篇深入解析Kafka架构,掌握其核心技术要点。


Kafka

Apache Kafka 是一个分布式发布-订阅消息系统,由LinkedIn开创的分布式发布-订阅消息系统,于2010年贡献给Apache基金会,迅速成为顶级开源项目,引领消息处理新潮流。

Kafka应用场景有:日志收集系统和消息系统。

3f3ba91e4761d2630b9c1103bbdbd284.jpeg

Kafka架构

Kafka架构,由多个组件组成,如下图所示:

c26a362fe166b8ae75d05ab547c396ae.jpeg


主要会包含:Topic、生产者、消费者、消费组等组件。

服务代理(Broker)

如下图所示:

f779c48d48ae32be35dccdf38a3877f7.jpeg


Topic(主题)

每个Topic可以被分成多个分区,每个分区在不同的Broker节点上进行存储。

Topic主题的数据以一系列有序的消息进行组织。


生产者(Producer)

可以选择将消息发送到特定分区,或让Kafka自动选择分区。

如下图所示:

af87b64b03eaa27ccc2140aceb2b0845.jpeg

生产者负责将消息进行缓冲和批量发送,以提高性能和吞吐量。


消费者(Consumer)

Consumer是Kafka的客户端,订阅并接收一个或多个主题的消息,直接从对应分区拉取数据,实现高效消息处理。

如下图所示:

80529391b792a45bedbc8bca30bccc0d.jpeg

消费者可按消费组形式组织,组内成员共享消费主题消息,有效实现负载均衡与容错机制,确保系统高效稳定运行。

Consumer Group(消费组)

如果消费者组中的消费者数量多于主题分区的数量,那么一些消费者将处于空闲状态。


ZooKeeper

ZooKeeper是Kafka使用的协调服务,用于管理和协调整个Kafka集群。

它负责维护Broker的元数据、主题的配置信息和消费者组的状态信息。

如下图所示:

b17c2c464fe95224c24a7ffe7d814767.jpeg

ZooKeeper还用于进行Leader选举、分区分配和故障恢复等操作。


 总结:

1. 主题(Topic):消息以流的形式存储在主题中,主题是消息的分类名。
2. 生产者(Producer):生产者是能够发布消息到主题的任何对象。生产者将数据发送到 Broker 代理。
3. 服务代理(Broker):已发布的消息保存在一组服务器中,这些服务器被称为代理(Broker)或 Kafka 集群。
4. 消费者(Consumer):消费者可以订阅一个或多个主题,并从 Broker 拉取数据,从而消费这些已发布的消息。
5. Zookeeper:Kafka 使用 Zookeeper 作为其分布式协调框架,用于保证系统的可用性,保存一些元信息,并实现负载均衡。
6. Consumer Group:组内多个的 Consumer 可以共用一个 Consumer Id,组内所有的 Consumer 只能注册到一个分区上去消费,一个 Consumer Group 只能到一个 Topic 上去消费。
7. 位移主题:位移主题的主要作用是保存 Kafka 消费者的位移信息。在 Kafka 新版本中,Consumer 的位移信息 offset 会作为普通消息提交到位移主题(_consumer_offsets)中。
8. 顺序写入和批量处理:Kafka 采用顺序写入和批量处理技术,使用消息累加器将多个消息批量发送,既节省带宽又提高了发送速度。
9. 消息压缩:Kafka 支持消息压缩,支持 gzip、snappy、lz4 格式,可以通过 `compression.type` 配置。
10. 页缓存和零拷贝技术:Kafka 在消息发送后,并没有等到消息写入磁盘后才返回,而是到 page cache 中就返回。同时,Kafka 使用零拷贝技术,提高了数据传输效率。
Kafka 的特性包括高吞吐量、低延迟、可扩展性、持久性、可靠性、容错性和高并发。Kafka 可以处理每秒几十万条消息,并且延迟可以低至几毫秒。它支持消息的持久化存储到本地磁盘,并允许数据备份以防止数据丢失。此外,Kafka 集群支持热扩展,可以灵活地应对不同的负载需求。

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1697080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

长安链使用Golang编写智能合约教程(一)

编写前的注意事项: 1、运行一条带有Doker_GoVM的链 2、建议直接用官方的在线IDE去写合约,因为写完可以直接测,缺点只是调试不方便。 3、自己拉环境在本地写合约,编译时注意编译环境,官方有提醒你去Linux下去编译。 …

010-Linux磁盘介绍

文章目录 1、名词 2、类型 3、尺寸 4、接口/协议/总线 5、命名 6、分区方式 MBR分区 GPT分区 1、名词 磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy D…

牛客网刷题 | BC99 正方形图案

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 KiKi学习了循环&am…

CST初级教程 六

本篇教程将以差分线为例,实例讲解参数化建模及参数扫描。 一 Project创建 点击New and Recent,再点击New Template 点击MICROVAVES & RF/OTICAL,然后在选中Circuit & Components。 点击对话框中Next按钮,在弹出对话框…

C语言中的七种常用排序

今天&#xff0c;为大家整理了C语言中几种常用的排序&#xff0c;以及他们在实际中的运用&#xff08;有Bug请在下方评论&#xff09;&#xff1a; 一.桶排序 #include <stdio.h> int main() {int book[1001],i,j,t,n;for(i0;i<1000;i)book[i]0;scanf("%d"…

B树与B+树区别

B树和B树是常见的数据库索引结构&#xff0c;都具有相较于二叉树层级较少&#xff0c;查找效率高的特点&#xff0c;它们之间有以下几个主要区别&#xff1a; 1.节点存储数据的方式不同 B树的叶子结点和非叶子节点都会存储数据&#xff0c;指针和数据共同保存在同一节点中B树…

MySQL的索引, 到底怎么创建?

目录 前言 MySQL的数据结构 索引是一把双刃剑 索引创建原则 如何给一个列挑选索引? 索引列的基数, 要尽量小 索引列的类型尽量小 索引长字符串的前缀 不要对索引列进行计算操作或者函数计算. 不要老想着查询, 想想插入该怎么办? 避免索引冗余和重复 前言 今天在…

【二叉树】:LeetCode:100.相同的数(分治)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;初阶初阶结构刷题 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 1.问题描述&#xff1a; 2.问题分析&#xff1a; 二叉树是区分结构的&#xff0c;即左右子树是不一…

上5个B端系统的设计规范,让你的开发比着葫芦画瓢。

B端系统设计规范在企业级系统开发中起着重要的作用&#xff0c;具体包括以下几个方面&#xff1a; 统一风格和布局&#xff1a;设计规范能够统一系统的风格和布局&#xff0c;使不同功能模块的界面看起来一致&#xff0c;提升用户的使用体验和学习成本。通过统一的设计规范&am…

模型驱动架构设计方法及应用

引言 模型驱动架构&#xff08;Model Driven Architecture&#xff0c;MDA&#xff09;是一种软件开发方法论&#xff0c;它强调使用一系列抽象层次的模型&#xff0c;并利用模型之间的转换来实现从需求到设计、直至代码生成的全过程。MDA的核心思想是在软件开发过程中强调使用…

druid 1.2.14,application.yaml配置文件中,如何进行数据库加密配置

步骤一&#xff1a;先生成加密的密码&#xff1a; 步骤二&#xff1a;配置application.yaml文件&#xff1a; spring:datasource:driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcedruid:username: rootpassword: aPJ35saFz6ASmnmNt…

CentOS 7.9部署宝塔面板超详细

CentOS7 部署宝塔面板 Linux的宝塔面板搭建起来非常轻松&#xff0c;也可以用一句话来形容&#xff0c;如果喝水一样简单&#xff0c;只需一条命令剩下的交给时间&#xff0c;几分钟就能部署好&#xff0c;然后就可以直接进行登录&#xff0c;直接可以安装LNMP、LAMP平台&…

数据结构与算法(Java版) | 详解十大经典排序算法之一:希尔排序

接下来&#xff0c;我来给大家讲解第四种排序算法&#xff0c;即希尔排序。 简单插入排序所存在的问题 在上篇文章中&#xff0c;我已经给大家讲解完插入排序了&#xff0c;虽说是讲完了&#xff0c;但在这里我还是想请大家开动脑筋思考一下&#xff0c;就是咱们讲解的插入排…

SDK崩溃后怎么打开已有工程

1.进到SDK里面&#xff0c;保留&#xff1a;platform、bsp和工程包&#xff08;这里是C&#xff09;&#xff0c;其他都删掉 2.windows窗口运行sdk 3.导入sdk工程

基于springboot+vue的4S店车辆管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

人工智能场景下的网络负载均衡技术

AI技术驱动智能应用井喷&#xff0c;智能算力增速远超通用算力。IDC预测&#xff0c;未来五年&#xff0c;我国智能算力规模年复合增长率将超50%&#xff0c;开启数据中心算力新纪元。随着需求激增&#xff0c;数据中心或智算网络亟需扩容、增速、减时延&#xff0c;确保网络稳…

数据结构(三)栈 队列 数组

2024年5月26日一稿(王道P78) 栈 基本概念 基本操作 顺序存储结构 基本操作 共享栈

数据库管理-第194期 网络加速RDMA初探(20240526)

数据库管理194期 2024-05-26 数据库管理-第194期 网络加速RDMA初探&#xff08;20240526&#xff09;1 概念2 发展3 使用总结 数据库管理-第194期 网络加速RDMA初探&#xff08;20240526&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09; Oracle ACE A…

PLSQL连接Linux Oracle21c

PLSQL连接Linux Oracle21c 一、安装PLsql 下载官网 https://www.allroundautomations.com/registered-plsqldev/ 二、Oracle Instant Client下载 使用plsql连接oracle的时候是需要本地先安装oracle客户端&#xff0c;英文名就是Oracle Instant Client。 官方下载地址&…

RedHat9 | DNS剖析-配置辅助DNS服务器

一、实验环境 1、辅助域名DNS服务器 DNS通过划分为若干个区域进行管理&#xff0c;每一个区域由1台或多台DNS服务器负责解析&#xff0c;如果仅仅采用1台DNS服务器&#xff0c;在DNS服务器出现故障后&#xff0c;用户将无法完成解析。 辅助DNS服务器的优点 容灾备份&#x…