kafka-保姆級配置說明(producer)

配置說明的最后一部分;

##指定kafka集群的列表,以“,”分割,格式:“host:port,host:port”
##此列表用于producer(consumer)初始化連接使用,server列表可以為kafka集群的子集
##通過此servers列表,client端用于發現cluster的成員全拓撲以及獲取集群的meta信息。
##為了避免某個bootstrap失效而無法初始化client,建議此servers列表中server個數>3
##此servers為kafka brokers,而非zookeeper
bootstrap.servers=
##key、value序列化類,必須實現Serializer接口
##當key、value不是string時,需要指定
##如果指定了相應的Serializer,那么也要求consumer端對應配置相應的Deserializer
#key.serializer=
#value.serializer=
##標識producer,僅用于server端追蹤請求。默認值為"",通常不需要指定
##client.id=
##消息分區的算法類,默認為:
##org.apache.kafka.clients.producer.internals.DefaultPartitioner
##即根據key進行hash分區。
#partitioner.class=
?
##producer發送消息后,在確認請求完成之前需要partition leader收到的ack的數量。
##它用來控制已發送消息的持久性。默認值為:1
##acks=0 :表示producer不需要等到broker任何ack。消息將會立即添加到socket buffer并認定為此消息已發送。
##這將不能保證broker最終一定能夠接收到消息并可靠的持久化,
##在此情況下,“retries”配置項也將不生效(即使發送是底層傳輸通道遇到error,且錯誤情況也不會對client可見)
##每個消息的反饋信息中offset值總為-1。
##這被認為是一種最高效的傳輸、確認機制,也是數據擔保能力最弱的機制。(當producer端進程退出即可能導致消息丟失)
##acks=1:表示當partition leader收到消息且寫入log文件后,即確認為消息請求已完成(向client端反饋ACK)。
##此時,leader不會等待任何replicas(ISR followers)同步完畢。
##這種情況下,當leader在ACK此消息之后失效,且此時followers尚未同步到此消息時,那么此消息將意味著丟失。
##這被認為是一種最通用的傳輸、確認機制,兼顧數據傳輸效率和數據擔保能力(當partition leader失效時可能導致消息丟失)
##acks=all:當leader接收到消息后,等待所有的ISR followers同步消息,直到所有的ISR都確認收到消息(且寫入log文件)以后,
##leader才會向producer反饋ACK,在此過程中producer將一直等待。(如果消息發送失敗,producer將會重試,直到超時)
##這被認為是一種擔保能力最強、但傳輸效率最低的機制。
##(除非broker磁盤刷新率較低,且只有leader在線,且在fsync期間物理失效,否則幾乎不會丟失數據)
acks=1
?
##單位字節,默認為:32M,建議值為:2097152 (即2M)
##producer端緩存亟待發送消息的內存最大值;
##如果消息發送的速度(調用send方法)比底層IO通道傳輸的速度高,那么在buffer溢出之前,
##producer的發送操作(send)將會阻塞或者拋出異常,直到buffer空閑。(取決于“block.on.buffer.full”)
##此值的設置,取決于producer與broker端的IO通訊效率,接近“網絡IO”的傳輸效率是最佳狀態;
##較大的值,意味著當buffer溢出后客戶端等待的時間更長;較小的值,意味著網絡IO傳輸效能較低。
buffer.memory=33554432
?
?
##當producer發送消息時,遇到底層IO異常時,重試發送的次數;默認為0,表示不重發。
##重發,可能會導致消息亂序的問題。
##(底層連接基于NIO,則允許發送多次請求,以及依次收到響應;而不是阻塞模式的request-response模式)
retries=1
##retry操作的backoff時間,即每次retry之前wait的時間
retry.backoff.ms=100
?
##producer會盡可能的將相同partiton的消息批量發送,以提高發送效率(ACK確認次數減少)
##批量發送,對client和broker都有較大的性能提升。
##此參數用于控制單次批量發送的最大數量量,單位:字節,如果設置為0則表示關閉批量發送。
##發送給broker的請求可以包含多個batches,每個batch對應一個partion(有多條消息組成)
##在發送消息時,總是創建batch.size大小的buffer用于保存消息;所以較大的值將會消耗更高的內存
batch.size=16384
?
##語義有點類似于TCP中的“Nagle”算法(封包傳輸機制)
##當我們開啟batch.size設置時,且buffer中的消息量達到batch.size時,消息將會立即批量發送;
##但是如果buffer中消息量不足batch.size時,則等待“linger.ms”時間后再發送,此期間寄希望獲得更多的消息,以達到批量發送的目的。
##此值默認為0,表示“不等待”(no delay)。
linger.ms=0
?
##當buffer溢出時、metadata不可用(即因為broker端leader選舉等,無法獲取最新的metadata),
##將會導致producer的send方法阻塞,此值用于控制阻塞的最長時間。
##用戶自定的serializers處理耗時、partitioner計算耗時,則不包含在內。
max.block.ms=60000
?
##單次請求所允許的最大數據量:用于限制每個請求所能包含的batches個數、消息的個數。
##當然也可以用來限制每個消息的最大尺寸,以避免發送“huge”的請求。
max.request.size=1048576
?
##用于控制client等待響應的最大時間
##當超時后,請求將會被重試;如果重試次數已達到閥值,則認為請求失敗。
request.timeout.ms=30000
?
##用于限定broker端leader等待followers反饋ACK以滿足“acks”配額要求的最大等待時間。
##此值不包含producer到broker的網絡傳輸耗時。
##當leader在限定時間內無法獲取滿足配額要求的acks時,將會返回error。(但已經執行的數據并不撤銷)
timeout.ms=30000
?
##在客戶端單個連接上允許“尚未ACK”的請求的最大個數,
##當此連接上“已發送”、“尚未確認”的請求個數達到此值時,client將會阻塞(max.block.ms)。
max.in.flight.requests.per.connection=5
?
##客戶端在發送實際消息之前,比如獲取broker端的meta信息:包括指定topic的parttions列表以及所位于的broker地址
##此值用于控制獲取metadata的超時時間
metadata.fetch.timeout.ms=60000
?
##因為broker集群的變遷,metadata會不斷變化,比如leader的遷移等。
##此值用于控制client端強制刷新(重新獲取)metadata的時間間隔。
##當client發送消息遇到異常時(比如partition leader不可用)也會嘗試立即刷新metadata。
metadata.max.age.ms=300000
?
##底層IO連接空閑的最大時間,單位:毫秒
##connections.max.idle.ms=540000
##底層IO連接通道,在重建連接時的backoff時間(即間歇等待的時間),以避免頻繁重建連接且失敗的情況。
reconnect.backoff.ms=50
?
##是否啟用壓縮機制,建議關閉
compression.type=none

??----------------------------------------------------------------------------------------------

深耕運維行業多年,擅長linux、容器云原生、運維自動化等方面。
承接各類運維環境部署、方案設計/實施、服務代運維工作,歡迎溝通交流!

(V: xiaoxiangbj2013 ) !

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

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

相關文章

.NET周刊【2月第2期 2025-02-09】

國內文章 開箱即用的.NET MAUI組件庫 V-Control 發布了! https://www.cnblogs.com/jevonsflash/p/18701494 文章介紹了V-Control,一個適用于.NET MAUI的組件庫。作者計劃將其開源,強調.NET MAUI是生產力強的跨平臺移動開發工具。V-Control提供多種組件…

PHP2(WEB)

##解題思路 打開頁面什么線索都沒有,目錄掃描只是掃出來一個index.php,而源代碼沒有東西,且/robots.txt是不允許訪問的 于是一番查詢后發現,有個index.phps的文件路徑,里頭寫著一段php的邏輯,對url的id參數…

VisActor/VTable - 快速搭建表格

VTable源于VisActor體系,該體系是從字節跳動大量可視化場景沉淀而來,旨在提供面向敘事的智能可視化解決方案。VisActor包括渲染引擎、可視化語法、數據分析組件、圖表組件、表格組件、GIS組件、圖可視化組件、智能組件等多個模塊,以及周邊生態…

c++第一課(基礎c)

目錄 1.開場白 2.char(字符) 3.字符數組 4.ASCII碼 1.開場白 OK,咱們也是億(不是作者故意的)天沒見,話不多說,直接開始! 2.char(字符) 眾所不周知&…

2025年02月21日Github流行趨勢

項目名稱:source-sdk-2013 項目地址url:https://github.com/ValveSoftware/source-sdk-2013項目語言:C歷史star數:7343今日star數:929項目維護者:JoeLudwig, jorgenpt, narendraumate, sortie, alanedwarde…

【簡單】209.長度最小的子數組

題目描述 給定一個含有 n 個正整數的數組和一個正整數 target 。 找出該數組中滿足其總和大于等于 target 的長度最小的 子數組 [numsl, numsl1, …, numsr-1, numsr] ,并返回其長度。如果不存在符合條件的子數組,返回0。 示例 1: 輸入&am…

【STM32】內存管理

【STM32】內存管理 文章目錄 【STM32】內存管理1、內存管理簡介疑問:為啥不用標準的 C 庫自帶的內存管理算法?2、分塊式內存管理(掌握)分配方向分配原理釋放原理分塊內存管理 管理內存情況 3、內存管理使用(掌握&#…

Linux 命令大全完整版(14)

5. 文件管理命令 chgrp(change group) 功能說明&#xff1a;變更文件或目錄的所屬群組。語  法&#xff1a;chgrp [-cfhRv][–help][–version][所屬群組][文件或目錄…] 或 chgrp [-cfhRv][–help][–version][–reference<參考文件或目錄>][文件或目錄…]補充說明&…

[數據結構]順序表詳解

目錄 一.線性表 二.順序表 2.1概念及結構 1. 靜態順序表&#xff1a;使用定長數組存儲元素。 2. 動態順序表&#xff1a;使用動態開辟的數組存儲。 2.1按需申請 2.2 接口實現&#xff1a;增刪查改 SeqList.h: SeqList.c: test.c 一.線性表 線性表 &#xff08; line…

綫性與非綫性泛函分析與應用_2.賦范向量空間-母本

第2章 賦范向量空間 1.向量空間;哈默爾基;向量空間的維數 - 定義與性質 - 向量空間的定義:設\mathbb{K}為數域,集合X是\mathbb{K}上的向量空間,若在X上定義了加法(x,y)\in X\times X\to x + y\in X和數乘(\alpha,x)\in\mathbb{K}\times X\to\alpha x\in X兩種運算,且滿足…

2025年- G17-Lc91-409.最長回文-java版

1.題目描述 2.思路 思路1: 判斷一個字符串中的字母個數是否是偶數個。 遍歷字符串&#xff0c;檢查每個字符是否是字母&#xff08;可以通過 Character.isLetter() 來判斷&#xff09;。 累加字母的個數。 最后判斷字母的個數是否是偶數。 思路2: 這段 Java 代碼的作用是 統…

SpringBoot+Mybatis-Plus實現動態數據源

目錄 一、前言二、代碼實現1&#xff09;工程結構2&#xff09;相關依賴3&#xff09;數據源攔截切面4&#xff09;動態數據源切換5&#xff09;核心配置類6&#xff09;使用 三、原理分析1&#xff09;mapper接口注入流程2&#xff09;動態數據源切換執行流程 四、聲明式事務導…

玩轉 Java 與 Python 交互,JEP 庫來助力

文章目錄 玩轉 Java 與 Python 交互&#xff0c;JEP 庫來助力一、背景介紹二、JEP 庫是什么&#xff1f;三、如何安裝 JEP 庫&#xff1f;四、JEP 庫的簡單使用方法五、JEP 庫的實際應用場景場景 1&#xff1a;數據處理場景 2&#xff1a;機器學習場景 3&#xff1a;科學計算場…

Qt常用控件之日歷QCalendarWidget

日歷QCalendarWidget QCalendarWidget 是一個日歷控件。 QCalendarWidget屬性 屬性說明selectDate當前選中日期。minimumDate最小日期。maximumDate最大日期。firstDayOfWeek設置每周的第一天是周幾&#xff08;影響日歷的第一列是周幾&#xff09;。gridVisible是否顯示日歷…

三數之和:經典問題的多種優化策略

三數之和&#xff1a;經典問題的多種優化策略 大家好&#xff0c;我是Echo_Wish。今天我們來聊一個經典的算法問題——三數之和&#xff08;3Sum&#xff09;。它是許多面試和算法競賽中常見的問題之一&#xff0c;也常常考察我們對算法優化的理解和技巧。我們不僅要解決問題&…

Go 語言中的協程

概念 Go語言中的協程&#xff08;Goroutine&#xff09;是一種由Go運行時管理的輕量級線程。它是Go語言并發模型的核心&#xff0c;旨在通過簡單、易用的方式支持高并發的程序設計。 創建協程 協程的創建非常簡單&#xff0c;只需要使用go關鍵字&#xff0c;后面跟著一個函數…

JAVA最新版本詳細安裝教程(附安裝包)

目錄 文章自述 一、JAVA下載 二、JAVA安裝 1.首先在D盤創建【java/jdk-23】文件夾 2.把下載的壓縮包移動到【jdk-23】文件夾內&#xff0c;右鍵點擊【解壓到當前文件夾】 3.如圖解壓會有【jdk-23.0.1】文件 4.右鍵桌面此電腦&#xff0c;點擊【屬性】 5.下滑滾動條&…

基于javaweb的SpringBoot個人博客系統設計和實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論…

三、linux字符驅動詳解

在上一節完成NFS開發環境的搭建后&#xff0c;本節將探討Linux字符設備驅動的開發。字符設備驅動作為Linux內核的重要組成部分&#xff0c;主要負責管理與字符設備&#xff08;如串口、鍵盤等&#xff09;的交互&#xff0c;并為用戶空間程序提供統一的讀寫操作接口。 驅動代碼…

Python爬蟲處理網頁中的動態內容

文章目錄 前言一、Python環境搭建1.Python安裝2.選擇Python開發環境 二、Python爬蟲處理網頁中的動態內容1. 使用 Selenium 庫2. 使用 Pyppeteer 庫3. 分析 API 請求 前言 在網頁中&#xff0c;動態內容通常是指那些通過 JavaScript 在頁面加載后動態生成或更新的內容&#xf…