kafka調優參考建議 —— 筑夢之路

這里主要是從不同使用場景來調優,僅供參考。

吞吐量優先

吞吐量優先使用場景如采集日志。

1.?broker配置調優

num.partitions:分區個數,設置為與消費者的線程數基本相等

2.?producer配置調優

?

  • batch.size

    批量提交消息的字節數,發送消息累計大小達到該值時才會發送(或者達到linger.ms),默認16k,如果 batch 設置太小,會導致頻繁網絡請求,吞吐量下降;如果 batch 太大,會導致一條消息需要等待很久才能被發送出去,增加網絡延時;建議設置為1M。

  • linger.ms

    發送間隔時間,默認是 0,意思就是消息必須立即被發送。如果 linger.ms 設置的太小,會導致頻繁網絡請求,吞吐量下降;如果 linger.ms 太長,會導致一條消息需要等待很久才能被發送出去,增加網絡延時;建議設置為100ms以上。

  • compression.type

    壓縮類型,默認是 none,不壓縮,但是也可以使用 lz4 壓縮,效率還是不錯的,壓縮之后可以減小數據量,提升吞吐量,但是會加大 producer 端的 CPU 開銷。

  • acks

    應答機制,默認是all(0.8.x之前,默認為1),即等待所有的副本收到消息后再返回成功,可以設置成1,即leader副本確認接收到消息后,生產者會收到返回成功的信息。但如果恰好此時leader失效,該條消息就會丟失。

  • buffer.memory

    內存緩沖區大小,默認32M,當消息寫入過快或者寫入量過大時,Sender 線程來不及處理,造成緩存區堆積,此時會阻塞用戶線程,禁止往 kafka 寫入消息,一般需要根據業務場景估算一個 buffer_memory 的合理值,建議64M以上。

?3.?consumer配置調優

  • fetch.min.bytes

    從broker獲取消息的最小字節數,只有大于這個值時,consumer才會拉取消息,默認是1,建議設置為1048576(1M)。

  • fetch.max.wait.ms

    當fetch.min.bytes不滿足時,從broker獲取消息的最大等待時間,默認是500,建議設置為1000

低延時優先

?使用場景有實時數據傳輸,比如彈幕

1.?broker配置調優

  • num.partitions

    分區個數,設置為與消費者的線程數基本相等。

  • num.io.threads

    默認是8。負責寫磁盤的線程數。整個參數值要占總核數的50%。

  • num.replica.fetchers

    默認是1。副本拉取線程數,這個參數占總核數的50%的1/3。

  • num.network.threads

    默認是3。數據傳輸線程數,這個參數占總核數的50%的2/3

2.?producer配置調優?????

  • linger.ms

    設置為0,即有消息就發送。

  • compression.type

    設置為nonenone。

  • acks

    設置為0,異步發送,無需等待任何broker確認

3.?consumer配置調優

  • fetch.min.bytes

    設置為1,一有消息就消費。

  • 線程數

    消費者的并發線程數能滿足實時消費的要求,避免積壓

可靠性優先

?將kafka作為核心數據源,不允許kafka出現數據丟失情況的業務架構。

1.?broker配置調優

  • default.replication.factor

    至少設置為3,2/3機器掛掉夠,依然不影響數據的可靠性。

  • min.insync.replicas

    當生產者的ack設置為all時,必須滿足該數量的副本同步成功后才能繼續寫入。當default.replication.factor設置為3時,該值建議設置為2。

  • unclean.leader.election.enable

    不潔leader選舉,默認true,建議設置為false,即不允許不在ISR列表中的broker參加leader的選舉,否則會導致已經提交但是還未復制的消息的丟失

2.?producer配置調優

  • acks

    設置為all,等待ISR中的所有副本收到數據后再返回成功。

  • retries

    重試次數,建議>=3

3.?consumer配置調優?

enable.auto.commit: 是否開啟自動提交,默認true,在設置為true時與auto.commit.interval.ms(自動提交時間間隔)配合使用,有點是簡單,省去了偏移量提交邏輯,缺點是會存在重復消費和消息丟失的情況,在數據可靠性優先的場景下需要設置為false,當事務提交后再提交位移。

可用性優先

?將kafka作為核心依賴,不允許kafka出現長時間不可用情況的業務架構(對數據可靠性要求不高,不阻塞讀寫就行)

1.?broker配置調優

  • unclean.leader.election.enable

    設置為true,允許不潔的副本當選leader。

  • min.insync.replicas

    設置為1。

  • num.recovery.threads.per.data.dir

    啟動時用于日志恢復和關閉時用于刷新的每個數據目錄的線程數,默認為1,建議設置為1,減少重啟時加載日志的時間。

2.?producer配置調優

acks :?設置為0,不等待任何確認,直接返回成功。

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

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

相關文章

力扣算法之1045. 買下所有產品的客戶

力扣傳送門 題解注釋 Customer表中對應的customer_id對應的product_key去重后要全部存在于Product表中的product_key 我的解 SELECT customer_id FROM Customer GROUP BY customer_id HAVING COUNT(DISTINCT product_key)(SELECT COUNT(DISTINCT product_key) FROM Product…

《java數據結構》--順序表詳解

一.順序表的概念🙉 🐱順序表是一段物理地址連續的儲存單元,一次儲存數據元素的線性結構。一般情況下采用數組儲存,和數組的增刪查改類似。 但是順序表和數組還是有區別的比如,數組按照是否可以擴容可以分為&#xff…

duckdb 插件機制研究

本文研究 duckdb 內置的 extensions 工作機制。 插件架構 在 duckdb 源碼內,內置了一組原生插件,位于頂層 extension 目錄下: 除此之外,還支持 Out-of-Tree Extension,簡單說就是獨立的插件,不是集成在源…

Star CCM+繪圖顯示設置

前言 如前文介紹,根據報告創建監視器與繪圖后,在繪圖中會出現報告繪圖。此處可以自定義繪圖的格式,如網格顯示、字體大小、曲線的粗細等。同時也可以根據需要創建右坐標,分別監測不同類型的函數數值。為此方便后期輸出仿真報告。…

哆啦AAA萌也能用HTML畫出來?看這里!【完整代碼可運行】

關注微信公眾號「ClassmateJie」有完整代碼以及更多驚喜等待你的發現。 簡介/效果展示 你是否曾經想過&#xff0c;那些可愛的哆啦A夢角色是如何被創造出來的呢&#xff1f;今天&#xff0c;我要帶你一起探索一個神奇的秘密——用HTML畫出哆啦A夢&#xff01; 代碼 <!DOCT…

【quarkus系列】創建quarkus第一個應用程序

文章目錄 序言環境準備創建項目項目分析程序代碼構建訪問項目 序言 Quarkus 是一個設計用于 Kubernetes 和云原生環境的 Java 框架&#xff0c;具有快速啟動時間、低內存消耗和強大的開發者體驗。溪源將帶您一步步創建一個簡單的 Quarkus 應用程序。 環境準備 在開始之前&am…

Neo4j安裝部署及python連接neo4j操作

Neo4j安裝部署及python連接neo4j操作 Neo4j安裝和環境配置 安裝依賴庫&#xff1a; sudo apt-get install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y 增加Neo4 GPG key&…

為什么并行化將會是下一代的區塊鏈解決方案?

原文標題&#xff1a;《Parallel Execution: The Next Generation of Blockchains》撰文&#xff1a;Paul Timofeev 、Mike Jin、Gabe Tramble 編譯&#xff1a;Chris&#xff0c;Techub News 區塊鏈是虛擬機&#xff0c;一種軟件基礎的計算模型&#xff0c;它運行在任何人都可…

DDOS攻擊和DOS攻擊有什么區別?

DDOS攻擊的全稱為分布式拒絕服務攻擊&#xff0c;能夠使很多個計算機在同一時間內遭受到攻擊&#xff1b;DOS攻擊的全稱則是拒絕服務攻擊&#xff0c;是攻擊者想辦法讓目標機器停止提供服務&#xff0c;對于DDOS攻擊和DOS攻擊我們經常會混淆&#xff0c;但是兩者之間在性質上還…

Pytorch深度學習實踐筆記10(b站劉二大人)

&#x1f3ac;個人簡介&#xff1a;一個全棧工程師的升級之路&#xff01; &#x1f4cb;個人專欄&#xff1a;pytorch深度學習 &#x1f380;CSDN主頁 發狂的小花 &#x1f304;人生秘訣&#xff1a;學習的本質就是極致重復! 《PyTorch深度學習實踐》完結合集_嗶哩嗶哩_bilibi…

C++的第一道門坎:類與對象(一)

1.面向過程與面向對象 1.1面向過程 我們之前學習的C語言就是一種面向過程的語言&#xff0c;面向過程的語言強調的是具體實現的過程&#xff0c;一般用函數來具體實現。我們用面向過程的思想&#xff0c;就可以把炒菜分為以下幾個步驟: 1.2面向對象 而對于面向對象的語言而言…

【簡單介紹下容器是什么?】

&#x1f3a5;博主&#xff1a;程序員不想YY啊 &#x1f4ab;CSDN優質創作者&#xff0c;CSDN實力新星&#xff0c;CSDN博客專家 &#x1f917;點贊&#x1f388;收藏?再看&#x1f4ab;養成習慣 ?希望本文對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出…

【Spring】Spring AOP底層原理:JDK動態代理和CGLIB動態代理

目錄 1、代理模式 1.1、靜態代理 1.2、動態代理 2、JDK 動態代理 2.1、jdk動態代理簡介 2.2、使用JDK動態代理機制步驟 3、CGLIB 動態代理 3.1、CGLIB 動態代理的特性 3.2、CGLIB的核心類 3.3、CGLIB 動態代理步驟 4、JDK 和 CGLIB 創建代理對象的區別 ?編輯 1、…

通關!游戲設計之道Day16

皆大歡喜計費點 游戲行業中有一項設計顯得越來越重要&#xff0c;那就是計費點設計 是開發者琢磨出來的一系列手段&#xff0c;讓玩家買了游戲之后&#xff0c;還能繼續付費 對于把玩家跟他們的錢拆散&#xff0c;游戲開發者們總是樂此不疲 來看幾個能讓開發者額外多賺些錢…

(四)手把手教你內網穿透,實現外網主機訪問內網服務器

背景&#xff1a;書接上回&#xff0c; 服務器的使用-CSDN博客 課題組成員都有自己的賬號&#xff0c;且能通過內網訪問服務器&#xff0c;進行遠程連接了。我們知道內網中的主機可以訪問公網的主機&#xff0c;反之不可以訪問。那么如果課題組成員在家不在內網區域內&#x…

源碼編譯安裝LAMP與部署

目錄 一、LAMP架構的簡述 1.LAMP搭建時各組件安裝順序 二、編譯安裝Apache httpd服務 1.關閉防火墻&#xff0c;將安裝Apache所需軟件包傳到/opt目錄下 2.安裝環境依賴包?編輯 3.配置軟件模塊 4.編譯及安裝 5.優化配置文件路徑&#xff0c;并把httpd服務的可執行程序文…

基于51單片機的智能燈光控制系統

一.硬件方案 智能燈光控制系統由單片機最小系統、人體感應模塊、關照強度模塊、燈光控制模塊、電源模塊和燈泡組成。本文以STC89C52單片機為核心&#xff0c;通過利用光照度和紅外人體感應相結合主動與被動的探測方法&#xff0c;現了室內無人或者關照充足時燈光自動光燈&…

Kubernetes 容器資源管理Resources和探針Probe

資源配額 Resources 在 Kubernetes 中&#xff0c;resources 配置用于設置容器的資源請求和限制&#xff0c;以確保集群中的資源&#xff08;如 CPU 和內存&#xff09;得到合理分配和使用。 在之前的pod中&#xff0c;不寫 resources 字段。就意味著 Pod 對運行的資源要求“…

Java面試八股之AQS對資源的共享方式

AQS對資源的共享方式 AQS設計了一套靈活的機制&#xff0c;不僅支持獨占&#xff08;Exclusive&#xff09;鎖模式&#xff0c;也支持共享&#xff08;Shared&#xff09;鎖模式&#xff0c;使得資源可以被一個或者多個線程以不同的方式訪問。這兩種模式通過控制一個內部的vol…

技術速遞|宣布 Java on Azure 開發工具支持 Azure Functions Flex Consumption

作者&#xff1a;Jialuo Gan 排版&#xff1a;Alan Wang Azure Functions Flex Consumption 剛剛在微軟 Build 2024大會期間發布&#xff08;詳情請參見本博客&#xff09;。我們很高興地與大家分享&#xff0c;Azure Functions 的 IntelliJ Azure Toolkit 和 Maven 插件現在也…