更新時(shí)間:2021年12月06日16時(shí)03分 來(lái)源:傳智教育 瀏覽次數(shù):
什么是冪等性?用http舉例來(lái)說(shuō),一次或多次請(qǐng)求,得到地響應(yīng)是一致的(網(wǎng)絡(luò)超時(shí)等問(wèn)題除外)就是冪等性,換句話(huà)說(shuō),就是執(zhí)行多次操作與執(zhí)行一次操作的影響是一樣的。
如果,某個(gè)系統(tǒng)是不具備冪等性的,如果用戶(hù)重復(fù)提交了某個(gè)表格,就可能會(huì)造成不良影響。例如:用戶(hù)在瀏覽器上點(diǎn)擊了多次提交訂單按鈕,會(huì)在后臺(tái)生成多個(gè)一模一樣的訂單。
Kafka在生產(chǎn)者生產(chǎn)消息時(shí),如果出現(xiàn)retry時(shí),有可能會(huì)一條消息被發(fā)送了多次,如果Kafka不具備冪等性的,就有可能會(huì)在partition中保存多條一模一樣的消息。
配置冪等性:props.put("enable.idempotence",true);
冪等性的原理:
為了實(shí)現(xiàn)生產(chǎn)者的冪等性,Kafka引入了 Producer ID(PID)和 Sequence Number的概念。
1.D:每個(gè)Producer在初始化時(shí),都會(huì)分配一個(gè)唯一的PID,這個(gè)PID對(duì)用戶(hù)來(lái)說(shuō),是透明的。
2.equence Number:針對(duì)每個(gè)生產(chǎn)者(對(duì)應(yīng)PID)發(fā)送到指定主題分區(qū)的消息都對(duì)應(yīng)一個(gè)從0開(kāi)始遞增的Sequence Number。
北京校區(qū)