原文地址:https://kafka.apache.org/0101/documentation.html#theproducer
負載均衡
生產(chǎn)者之間發(fā)送數(shù)據(jù)到主分區(qū)的服務(wù)器上节仿,不需要經(jīng)過任何中間路由习绢。為了讓生產(chǎn)者實現(xiàn)這個功能陨瘩,所有的 kafka 服務(wù)器節(jié)點都能響應這樣的元數(shù)據(jù)請求:哪些服務(wù)器是活著的央串,主題的哪些分區(qū)是主分區(qū)库物,分配在哪個服務(wù)器上疫萤,這樣生產(chǎn)者就能適當?shù)刂苯影l(fā)送它的請求到服務(wù)器上芝囤。
客戶端控制消息發(fā)送數(shù)據(jù)到哪個分區(qū)次洼,這個可以實現(xiàn)隨機的負載均衡方式关贵。或者使用一些特定語義的分區(qū)函數(shù)卖毁,我們有提供特定分區(qū)的接口讓用于根據(jù)指定的鍵值進行hash分區(qū)(當然也有選項可以重寫分區(qū)函數(shù))揖曾,例如,如果鍵值使用用戶ID亥啦,則用戶相關(guān)的所有數(shù)據(jù)都會被分發(fā)到同一個分區(qū)上炭剪。這允許消費者,在消費數(shù)據(jù)時做一些特定的本地化處理翔脱。這樣的分區(qū)風格經(jīng)常被設(shè)計用于一些本地處理比較敏感的消費者奴拦。
異步發(fā)送
批處理是提升性能的一個主要驅(qū)動,為了允許批量處理届吁,kafka 生產(chǎn)者會嘗試在內(nèi)存中匯總數(shù)據(jù)错妖,并用一次請求批次提交信息。批處理疚沐,不僅僅可以配置指定的消息數(shù)量暂氯,也可以指定等待特定的延遲時間(如64k 或10ms),這允許匯總更多的數(shù)據(jù)后再發(fā)送亮蛔,在服務(wù)器端也會減少更多的IO操作痴施。該緩沖是可配置的,并給出了一個機制究流,通過權(quán)衡少量額外的延遲時間獲取更好的吞吐量辣吃。
更多的細節(jié)信息可以在生產(chǎn)者的 configuration 和 api 這里找到.