面試大雜燴之kafka

面試這個領域最近環境不行,所以卷起來流量挺大?

關于K8s

? ? ? 其實看我之前的博客,k8s剛有點苗頭的時候我就研究過,然后工作的時候間接接觸 也自己玩過 但是用的不多就忘記了,正苦于不知道寫什么,水一篇 用來面試應該是夠了

clickhouse

kafka

搭建:

? ? ?總體來說 比較簡單,主要是配置文件,命令的話分開了producer /consumer/ topic 大概這么個意思。具體可以看里面的博客?

#host配置
#安裝包
wget https://archive.apache.org/dist/kafka/3.2.0/kafka_2.13-3.2.0.tgz
#壓縮 配置系統變量
#zk集群搭建 當然kafka自帶zk 這都行,集群中zk的配置是都需要改的
#3.x kafka提供了kraft取代zk
https://blog.csdn.net/qq_41865652/article/details/126588263

?點對點:生產者 發送 消息 到隊列,消費者從隊列 取出 并 消費(消費后不再儲存)

? ? ?一條消息 只會被一個消費者消費,想發給多個消費者 多次發送

發布/訂閱:一對多,多個訂閱者消費 消息,數據保留指定期限,默認7天

? ? ?同一個消費組 中消費者 不能消費同一個partition中的數據

? ? ?一個消費者一個分區(消費組)

0.9 偏移量儲存在kafka的topic中

? ?0.9將offset保存在zk中,0.9及后保存在Kafka“__consumer_offsets”主題

生產者

? ? ? ?生產消息追加到log文件,采用分片/索引機制,將每個partition 分為多個segment,每個segment對應2個文件 index log,同一文件夾(topic名稱+分區序號)。

同步

? ? 同步:ISR列表(同步副本 里面的follow與leader同步,選擇從這個里面選? H W/LEO)

? ? ? HW:消費者能看到的offset,isr隊列min的LED ,hw-led待同步的消息

? ? ? ? ? 選leader (epoch,offset)二位數組,前面是任期 后面是標識大小誰最新

? ? ? follower故障,從isr剔除,恢復后讀取上一次HW高于的截取掉 從hw開始向leader同步 加入isr

  • ack-1 數據不丟但會重,生產者pid消息seqnumber 如pid partion seqnumber一樣,重復數據
  • 0不重復 丟失

消費者

拉取pull,無消息 死循環,消費者 消費數據時傳遞timeout參數,當時無數據 等待一段時間再返回

topic多個partion

  • 輪詢rountRobin對topic組生效,一個消費組內all消費者訂閱主題是一樣的
  • rang單個topic生效,數據不均衡

消費者不能同時消費 同組的 同一個分區

分區策略:消費者組 消費者個數 發生變化

offset維護

斷電 宕機,消費者恢復后 記錄的offset(zk/kafka)

? 消費者/topic/partion 確定offset?

流程

producer兩個線程,主線程 攔截/序列化/分區==》處理消息 到 消息累加器(32M / 隊列) producerBatch批量發送到sender線程,批量組織request 給selector 送到kafka

? ?kafka的pageCache 異步刷盤 flusher 追加到日志文件

? ? ? ?partition . segment:

? ? ? ? ? ? log 存儲數據 位置:offset?

? ? ? ? ? ? index索引,相對位移:物理位置;稀疏索引? msg設置指針 mmap進行內存操作

? ?被消費ack 清緩存

? ?消費者帶著offset,去fetch 利用sendfile底層NIO(transferTo/transferFrom)

消費者能力不足:

增加消費者數量

主題增加分區,消費者并行處理能力

? ?

優化消費邏輯,多線程

max.poll.interval.msrang消費者更長時間處理消息

監控 報警 /及時調整

? ?kafka內置指標

kafka stream:內置了自適應調節機制

數據清理策略:及時清理

啟動kafka壓縮

? ?compression.type,none不壓縮/lz4壓縮 加大cpu開銷

升級版本

命令

topic的./bin/kafka-topics.sh

生產者./bin/kafka-console-producer.sh

消費者./bin/kafka-console-consumer.sh

大數據之Kafka(心得)_集群級kafka數據消費的挑戰與實踐-CSDN博客

Kafka集群搭建及生產者消費者案例_kafka 消費者組 多機器-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15549.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15549.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ | Leetcode C++題解之第111題二叉樹的最小深度

題目&#xff1a; 題解&#xff1a; class Solution { public:int minDepth(TreeNode *root) {if (root nullptr) {return 0;}queue<pair<TreeNode *, int> > que;que.emplace(root, 1);while (!que.empty()) {TreeNode *node que.front().first;int depth que…

VC編譯sample_onnx_mnist提示無法打開輸入文件cudnn.lib

出現錯誤 LNK1181 無法打開輸入文件“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib\x64\cudnn.lib” 解決辦法&#xff1a;下載cudnn&#xff0c;NVIDIA cuDNN | NVIDIA Developer 拷貝相應的文件到CUDA安裝的目錄下。 VC編譯libtorch提示無法打開輸入文件cu…

huggingface 筆記:PretrainModel

1 from_pretrained 從預訓練模型配置中實例化一個 PyTorch 預訓練模型默認情況下&#xff0c;模型使用 model.eval() 設置為評估模式&#xff08;Dropout 模塊被禁用&#xff09; 要訓練模型&#xff0c;應該首先使用 model.train() 將其設置回訓練模式 1.1 主要參數 pretra…

java 子類繼承父類

為什么需要繼承 我現在要有兩個類一個 一個是小學生&#xff0c;一個是大學生 代碼 小學生 package b; public class encapsulatio{public String name;public int age;public double score;public void setscore (double score) {this.scorescore;}public void testing() {S…

(三)MySQL 索引

歡迎訪問 什么是索引&#xff1f; 提高查詢效率的一種數據結構&#xff0c;索引是數據的目錄 索引的分類 按「數據結構」分類&#xff1a;Btree索引、Hash索引、Full-text索引。按「物理存儲」分類&#xff1a;聚簇索引、二級索引。按「字段特性」分類&#xff1a;主鍵索引…

Spring6 對 集成MyBatis 開發運用(附有詳細的操作步驟)

詳細實現操作步驟 具體實現內容&#xff1a;我們運用 Spring6 和 MyBatis 實現一個轉賬操作(該轉賬操作&#xff0c;進行一個事務上的控制&#xff0c;運用 MyBatis 執行 SQL 語句)。 第一步&#xff1a;準備數據庫表 使用t_act表&#xff08;賬戶表&#xff09; 連接數據庫的…

三個有意思的鏈表面試題的完成

上一篇博客我們已經完成了鏈表的所有內容&#xff0c;那么這一篇博客我們來看一下三個特別有意思的鏈表題目。 **第一個題目如下&#xff1a;**相信不少朋友看到這題目就已經暈了&#xff0c;那就簡單說明下這個題目&#xff0c;題目就是創建一個鏈表&#xff0c;其中每個節點…

深入探索Java中的流式編程:優雅地處理集合數據

Java流式編程&#xff08;Stream API&#xff09;是Java 8引入的一項重要特性&#xff0c;它為處理集合數據提供了一種更為優雅和函數式的方式。通過流式操作&#xff0c;開發者可以以更簡潔、更直觀的方式處理數據&#xff0c;從而提高代碼的可讀性和可維護性。本文將深入探討…

Android14 - 繪制系統 - 概覽

從Android 12開始&#xff0c;Android的繪制系統有結構性變化&#xff0c; 在繪制的生產消費者模式中&#xff0c;新增BLASTBufferQueue&#xff0c;客戶端進程自行進行queue的生產和消費&#xff0c;隨后通過Transation提交到SurfaceFlinger&#xff0c;如此可以使得各進程將緩…

【vue3+elementuiplus】el-select下拉框會自動觸發校驗規則

場景&#xff1a;編輯彈框省份字段下拉框必填&#xff0c;觸發方式change&#xff0c;有值第一次打開不會觸發校驗提示&#xff0c;關閉彈框再次打開觸發必填校驗提示&#xff0c;但是該字段有值 問題的原因是&#xff1a;在關閉彈層事件中&#xff0c;我做了resetfileds&…

SpringBoot + MybatisPlus

SpringBoot MybatisPlus 整合記錄 1. 硬件軟件基本信息2. 相關鏈接3. 通過idea快速生成一個Springboot項目4. 啟動報錯問題解決問題一&#xff1a;Springboot啟動的時候報錯提示 “沒有符合條件的Bean關于Mapper類型”問題二&#xff1a;啟動的時候提示需要一個Bean&#xff0…

電磁仿真--CST網格介紹

1. 簡介 網格會影響仿真的準確性和速度&#xff0c;花時間理解網格化過程是很重要的。 CST 中可用的數值方法包括FIT、TLM、FEM、MoM&#xff0c;使用不同類型的網格&#xff1a; FIT和TLM&#xff1a;六面體 FEM&#xff1a;四面體、平面 MoM&#xff1a;表面 CFD&#…

深入理解與防御跨站腳本攻擊(XSS):從搭建實驗環境到實戰演練的全面教程

跨站腳本攻擊&#xff08;XSS&#xff09;是一種常見的網絡攻擊手段&#xff0c;它允許攻擊者在受害者的瀏覽器中執行惡意腳本。以下是一個XSS攻擊的實操教程&#xff0c;包括搭建實驗環境、編寫測試程序代碼、挖掘和攻擊XSS漏洞的步驟。 搭建實驗環境 1. 安裝DVWA&#xff…

【408真題】2009-16

“接”是針對題目進行必要的分析&#xff0c;比較簡略&#xff1b; “化”是對題目中所涉及到的知識點進行詳細解釋&#xff1b; “發”是對此題型的解題套路總結&#xff0c;并結合歷年真題或者典型例題進行運用。 涉及到的知識全部來源于王道各科教材&#xff08;2025版&…

推薦一個快速開發接私活神器

文章目錄 前言一、項目介紹二、項目地址三、功能介紹四、頁面顯示登錄頁面菜單管理圖表展示定時任務管理用戶管理代碼生成 五、視頻講解總結 前言 大家好&#xff01;我是智航云科技&#xff0c;今天為大家分享一個快速開發接私活神器。 一、項目介紹 人人開源是一個提供多種…

SCSS配置教程

SCSS&#xff08;Sassy CSS&#xff09;是 Sass&#xff08;Syntactically Awesome Stylesheets&#xff09;的一種語法&#xff0c;它是一種 CSS 預處理器&#xff0c;允許你使用變量、嵌套規則、混合&#xff08;mixin&#xff09;、函數等高級功能來編寫 CSS&#xff0c;從而…

Golang | Leetcode Golang題解之第112題路徑總和

題目&#xff1a; 題解&#xff1a; func hasPathSum(root *TreeNode, sum int) bool {if root nil {return false}if root.Left nil && root.Right nil {return sum root.Val}return hasPathSum(root.Left, sum - root.Val) || hasPathSum(root.Right, sum - roo…

C++常見知識點總結

常見字符 * 注釋&#xff1a;/* 這是一個注釋*/乘法&#xff1a;a * b取值運算符&#xff1a;*指針變量&#xff0c;int a 4&#xff0c;*a &#xff1f;&#xff1f;&#xff1f;&#xff1f;指針變量&#xff1a;數據類型 *變量名&#xff0c; int *no &bh&#xff0…

SAP揭秘者-怎么執行生產訂單ATP檢查及其注意點

文章摘要&#xff1a; 上篇文章給大家介紹生產訂單ATP檢查的相關后臺配置&#xff0c;大家可以按照配置步驟去進行配置&#xff0c;配置完之后&#xff0c;我們接下來就是要執行ATP檢查。本篇文章具體給大家介紹怎么來執行生產 訂單ATP檢查及其注意點。 執行生產訂單ATP檢查的…

Qt for android 獲取USB設備列表(二)JNI方式 獲取

簡介 基于上篇 [Qt for android 獲取USB設備列表&#xff08;一&#xff09;Java方式 獲取]&#xff0c; 這篇就純粹多了&#xff0c; 直接將上篇代碼轉換成JNI方式即可。即所有的設備連接與上篇一致。 (https://listentome.blog.csdn.net/article/details/139205850) 關鍵代碼…