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