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

 

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 集群支持热扩展,可以灵活地应对不同的负载需求。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据仓库与数据挖掘实验练习6-7(实验四2024.5.22)

tips: 列出虚拟环境:conda env list 激活虚拟环境:activate hi 进入jupyter-lab:jupyter lab 练习6 1. 处理字符串空格 发现问题: 使用 values 属性查看数据时,如果发现 Name 列没有对齐,很可能是 Name 左…

008-Linux后台进程管理(作业控制:、jobs、fg、bg、ctrl + z、nohup)

文章目录 前言 1、& 2、ctrl z 3、jobs 4、fg:将后台进程调到前台执行 5、bg:将一个暂停的后台进程变为执行 6、&和nohup 总结 前言 有时候我们需要将一个进程放到后台去运行,或者将后台程序切换回前台,这时候就…

刷代码随想录有感(79):回溯算法——N皇后问题

题干: 代码&#xff1a; class Solution { public:vector<vector<string>> res;void backtracking(vector<string>& chessboard, int n, int row){if(row n){res.push_back(chessboard);return;}for(int col 0; col < n; col){if(isvalid(chessboa…

【吊打面试官系列】Java高并发篇 - ThreadLocal 是什么?有什么用?

大家好&#xff0c;我是锋哥。今天分享关于 【ThreadLocal 是什么&#xff1f;有什么用&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; ThreadLocal 是什么&#xff1f;有什么用&#xff1f; ThreadLocal 是一个本地线程副本变量工具类。主要用于将私有线程和该…

六招搞定,SPA单页面加载速度慢的问题。

众所周知&#xff0c;SPA页面有很多优点&#xff0c;但是首屏加载慢的问题一直被诟病&#xff0c;本文介绍几种解决策略&#xff0c;希望对老铁们有所帮助。 一、SPA页面的独有优势 1. 更快的用户体验&#xff1a; SPA在加载初始页面后&#xff0c;可以在用户与应用程序交互…

看这两位东北圣女美吗?如何描写美女的大长腿?

看这两位东北圣女美吗&#xff1f;如何描写美女的大长腿&#xff1f; 最近署名为懂球娘娘的一篇描写东北圣女的文章火了&#xff0c;文中描述了海棠朵朵与辛芷蕾这两位娇媚动人的角色。其美艳动人的形象和魅力四溢的描写让人为之倾倒。 这种通过文字展现人物魅力的能力让人佩服…

4个宝藏网站,免费即用,办公运营效率利器!

哈喽&#xff0c;各位小伙伴们好&#xff0c;我是给大家带来各类黑科技与前沿资讯的小武。 有很多朋友在日常办公时&#xff0c;需要发送邮件&#xff1b;在新媒体运营、设计及前端开发等工作场合中&#xff0c;都或多或少会遇上图片、视频等文件太大及格式问题需要压缩和转换…

白嫖的在线工具类宝藏网站清单,快点击进来收藏一波

简单整理了一下自己日常经常使用的10个免费工具网站&#xff0c;建议点赞关注收藏&#xff0c;快点分享给小伙伴们&#xff01; 1.奶牛快传:用户体验更好的网盘工具。 https://cowtransfer.com/ 今年开始使用的一款网盘工具&#xff0c;和百度网盘类似,叫奶牛快传&#xff0c;如…

VUE3视频播放器 videojs-player/vue

简介 官网&#xff1a; https://gitcode.com/surmon-china/videojs-player/overviewhttps://github.com/surmon-china/videojs-player?tabreadme-ov-file video-player是一个基于video.js的视频播放器组件&#xff0c;它提供了丰富的功能&#xff0c;包括视频播放、暂停、快…

前缀和算法:提升编程效率的秘密武器(Java版)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…

千亿级开源大模型Qwen110B部署实测

近日&#xff0c;通义千问团队震撼开源 Qwen1.5 系列首个千亿参数模型 Qwen1.5-110B-Chat。 千亿级大模型普通显卡是跑不了推理的&#xff0c;普通人一般也没办法本地运行千亿级大模型。 为了探索千亿级大模型到底需要计算资源&#xff0c;我用云计算资源部署了Qwen1.5-110B-…

JAVAEE之线程(10)_线程池、线程池的创建、实现线程池

一 线程池 1.1为什么要有线程池&#xff1f; 线程池顾名思义是由多个线程所组成&#xff0c;作用就是减少线程的建立与销毁&#xff0c;与数据库连接池相同概念&#xff0c;为了减少连接与释放&#xff0c;从而降低消耗提升效率。 1.2 线程池的优势 总体来说&#xff0c;线程…

大模型中的Tokenizer

在使用GPT 、BERT模型输入词语常常会先进行tokenize 。 tokenize的目标是把输入的文本流&#xff0c;切分成一个个子串&#xff0c;每个子串相对有完整的语义&#xff0c;便于学习embedding表达和后续模型的使用。 一、粒度 三种粒度&#xff1a;word/subword/char word词&a…

安装qianfan大模型库,报错:ERROR: Command errored out with exit status 1

安装qianfan大模型库&#xff08;pip install qianfan&#xff09;&#xff0c;报错&#xff1a;ERROR: Command errored out with exit status 1 分析错误&#xff0c;是加载 pycryptodome库时导致的 解决&#xff1a; 1、命令行中重新安装&#xff1a;>pip install pycry…

amis 文件上传 大文件分块上传

amis 图片/文件上传组件 receiver&#xff1a;参数配置为上传接口。 {"type": "input-image", // "type": "input-file","label": "照片","name": "url", "imageClassName": &qu…

大模型提示词Prompt学习

引言 关于chatGPT的Prompt Engineer&#xff0c;大家肯定耳朵都听起茧了。但是它的来由&#xff1f;&#xff0c;怎么能用好&#xff1f;很多人可能并不觉得并不是一个问题&#xff0c;或者说认定是一个很快会过时的概念。但其实也不能说得非常清楚&#xff08;因为觉得没必要深…

【Windows】 IDimager Photo Supreme 2024(图片管理软件)安装教程

软件介绍 IDimager Photo Supreme 2024是一款专业的图片管理软件&#xff0c;旨在帮助用户有效地组织、管理和浏览他们的照片收藏。以下是该软件的一些主要特点和功能&#xff1a; 图片管理&#xff1a;Photo Supreme提供强大的图片管理功能&#xff0c;可以帮助用户轻松地整理…

2024系统架构师软考考题考点回忆版

2024系统架构师软考试题/考点梳理 选择题 (75道单选题) 软件测试(P205) 静态测试:是被测程序不运行,只依靠分析和检查源程序的语句、结构、过程来检查程序是否有错误。动态测试:运行被测试程序,对得到的结果与预期的结果进行比较分析,同时分析运行效率和健壮性能等。…

关于堆排序

今天我们不刷力扣了&#xff0c;我们来复习&#xff08;手撕&#xff09;一下数据结构中的八大排序算法之一&#xff0c;堆排序 基本概念&#xff1a; 堆是一种特殊的树形数据结构&#xff0c;即完全二叉树。 堆分为大顶堆和小顶堆&#xff1a; 大顶堆&#xff1a;每个节点的值…