前提:kafka使用默認(rèn)的配置。
- 生產(chǎn)者初始化:生產(chǎn)者初始化后,向集群中任一broker請(qǐng)求元數(shù)據(jù)(配置、主題、分區(qū)leader等),并將元數(shù)據(jù)緩存到本地,后續(xù)會(huì)定期請(qǐng)求并更新本地的元數(shù)據(jù)。
- 查詢主題元數(shù)據(jù):向某個(gè)主題發(fā)送消息時(shí),先本地查詢主題元數(shù)據(jù),如果主題不存在,向集群中任一broker請(qǐng)求主題的元數(shù)據(jù),broker發(fā)現(xiàn)主題不存在,默認(rèn)會(huì)創(chuàng)建主題并選舉各分區(qū)leader,然后將主題元數(shù)據(jù)響應(yīng)給生產(chǎn)者。
- 選擇分區(qū):生產(chǎn)者默認(rèn)使用鍵哈希選擇消息要發(fā)往主題下的哪個(gè)分區(qū)。
- 發(fā)消息:向分區(qū)的leader broker發(fā)消息。默認(rèn)acks=1的情況下,當(dāng)leader broker接收消息后會(huì)立即回復(fù)確認(rèn)。