Kafka 客戶端 Produce 常用配置

2021-10-04 23:22:49 字數 3503 閱讀 7738

配置類值作用

demo

org.apache.kafka.clients.commonclientconfigs#bootstrap_servers_config

bootstrap.servers

配置kafka 伺服器位址資訊

localhost:9092,localhost:9092

org.apache.kafka.clients.producer.producerconfig#key_serializer_class_config

key.serializer

資料傳輸時key序列化方式

常用官方 org.apache.kafka.common.serialization.stringserializer 或自定義實現 org.apache.kafka.common.serialization.serializer介面

org.apache.kafka.clients.producer.producerconfig#value_serializer_class_config

value.serializer

資料傳輸時value序列化方式

同key

org.apache.kafka.clients.producer.producerconfig#acks_config

acks

服務端多少節點儲存存後 客戶端可以得到相應

0 (傳送後立即返回訊息)/1(預設乙個節點儲存後 返回訊息)/-1 or all (所有節點儲存後才返回訊息 生產環境不推薦)

org.apache.kafka.clients.commonclientconfigs#retries_config

retries

針對網路延遲登 可恢復錯誤的,重試次數

設定值》1同時配合retry.backoff.ms

org.apache.kafka.clients.commonclientconfigs#retry_backoff_ms_config

retries

針對網路延遲登 可恢復錯誤的,兩次重試之間的間隔

時間間隔過小或者為0 重試過度 導致服務端效能下降

org.apache.kafka.clients.producer.producerconfig#buffer_memory_config

buffer.memory

kafka的傳送才用非同步形式,produce 將訊息寫到 訊息快取中,單獨的乙個快取讀取消費資訊快取中資訊 buffer.memory 用於設定 快取的大小 預設 32mb

org.apache.kafka.clients.producer.producerconfig#compression_type_config

compression.type

用於訊息的壓縮 節約訊息通訊的網路頻寬

org.apache.kafka.clients.producer.producerconfig#batch_size_config

batch.size

producer會把發往同一分割槽的多條訊息封裝進乙個batch中,當batch滿了後,producer才會把訊息傳送出去。但是也不一定等到滿了,這和另外乙個引數linger.ms有關。預設值為16k,合計為16384.

商業環境推薦:batch 越小,producer的吞吐量越低,越大,吞吐量越大。

org.apache.kafka.clients.producer.producerconfig#linger_ms_config

linger.ms

該引數指定了生產者在傳送批次之前等待更多訊息加入批次的時間。kafkapr oduce 「會在批次填滿或linger.ms達到上限時把批次傳送出去。預設情況下,只要有可用的執行緒, 生產者就會把訊息傳送出去,就算批次裡只有乙個訊息。把linger.ms設定成比0 大的數,讓生產者在傳送批次之前等待一會兒,使更多的訊息加入到這個批次。雖然這樣會增加延遲,但也會提公升吞吐量(因為一次性傳送更多的訊息,每個訊息的開銷就變小了)

org.apache.kafka.clients.producer.producerconfig#max_request_size_config

max.request.size

控制生產者傳送訊息的大小,它可以指定單個訊息的最大值,也可以指定單個請求裡所有訊息大小的總和。比如1mb,那麼單個訊息最大大小是1mb,同時如果訊息大小是1kb,那麼一次可以傳送1000條訊息。另外broker也有接受訊息最大的限制,message.max.bytes。

預設1048576位元組 生產環境通常設定大些

org.apache.kafka.clients.commonclientconfigs#request_timeout_ms_config

request.timeout.ms

設定請求延遲時間

預設30s

org.apache.kafka.clients.producer.producerconfig#partitioner_class_config

public static final string partitioner_class_config = 「partitioner.class」;

設定分割槽資訊預設org.apache.kafka.clients.producer.internals.defaultpartitioner

自定分割槽 需要實現org.apache.kafka.clients.producer.partitioner 介面

org.apache.kafka.clients.producer.producerconfig#max_in_flight_requests_per_connection

max.in.flight.requests.per.connection

指定了生產者收到伺服器響應之前可以傳送多少個訊息。它的值越高,將會消耗更多的記憶體,不過也會提公升吞吐量。設定為1,可以保證訊息是按照傳送的順序寫入伺服器。即使發生了重試。

org.apache.kafka.clients.producer.producerconfig#interceptor_classes_config

interceptor.classes

用作***的類list。實現org.apache.kafka.clients.producer.producertinterceptor介面允許您擷取(並可能改變)生產者在發布到kafka集群之前接收到的記錄。預設情況下,不存在偵聽器。

org.apache.kafka.clients.producer.producerconfig#max_block_ms_config

max.block.ms

該引數指定了在呼叫send()方法或使用partitionfor() 方法獲取元資料時生產者的阻塞,時間。當生產者的傳送緩衝區已滿,或者沒有可用的元資料時,這些方法就會阻塞。在阻塞時間達到max.block.ms 時,生產者會丟擲超時異常配置控制kafkaproducer.send()和kafkaproducer.partitionsfor()將阻塞的時間。這些方法可能被阻塞,因為緩衝區已滿或元資料不可用。使用者提供的序列化程式或partitioner中的阻塞將不計入此超時。

瘦客戶端 胖客戶端 智慧型客戶端

胖客戶端模式將應用程式處理分成了兩部分 由使用者的桌面計算機執行的處理和最適合乙個集中的伺服器執行的處理。乙個典型的胖客戶端包含乙個或多個在使用者的pc上執行的應用程式,使用者可以檢視並運算元據 處理一些或所有的業務規則 同時提供乙個豐富的使用者介面做出響應。伺服器負責管理對資料的訪問並負責執行一些...

胖客戶端 瘦客戶端和富客戶端

以c s結構開發的網路應用程式,需要為客戶端開發專用的客戶端軟體,相對而言其客戶端比較龐大,在客戶端可以實現很多功能,分擔伺服器的負擔,屬於胖客戶端型別。以b s結構開發的web應用,其客戶端只是乙個瀏覽器,所有業務邏輯由伺服器端進行處理,相對而言客戶端比較瘦小,故稱為瘦客戶端。目前比較流行的一種開...

kafka學習 produce訊息

由於歷史原因,我們公司用的還是比較老的kafka版本0.10.1.0,最近由於專案需要,學習了kafka的使用,學習過程中了解到的一些知識記錄下,以便日後查閱 目錄 kafka學習 produce訊息 1.broker topic partition 2.傳送訊息分割槽選擇 3.資料報格式 4.go...