比如你拿個數據要寫庫,你先根據主鍵查一下,如果這數據都有了,你就別插入了,update 一下好吧。(高並發會有問題) 比如你是寫 Redis,那沒問題了,反正每次都是 set,天然冪等性。 比如你不是上面兩個場景,那做的稍微復雜一點,你需要讓生產者發送每條數據的時候,里面加一個全局唯一的 id ...
面試官心理剖析: 主要是看你對消息隊列數據重復消費的問題,是否有了解,是否知道怎么解決 如果這塊不知道,那么面試官會覺得如果交給你做功能,可能會出現多次消費的情況。 回答: 為什么會出現重復消費 分析: 如圖,在什么場景會出現消息重復消費 比如說消費端已經消費了 offset ,offset ,offset 的三條數據,正准備把這個 offset 的值傳給 kafka,這時候消費端機器宕機了,這個 ...
2019-03-27 11:35 0 4307 推薦指數:
比如你拿個數據要寫庫,你先根據主鍵查一下,如果這數據都有了,你就別插入了,update 一下好吧。(高並發會有問題) 比如你是寫 Redis,那沒問題了,反正每次都是 set,天然冪等性。 比如你不是上面兩個場景,那做的稍微復雜一點,你需要讓生產者發送每條數據的時候,里面加一個全局唯一的 id ...
什么是冪等? 任意多次執行所產生的影響均與一次執行的影響相同就可以稱為冪等 什么是消息冪等? 當出現消費者對某條消息重復消費的情況時,重復消費的結果與消費一次的結果是相同的,並且多次消費並未對業務系統產生任何負面影響 為什么我們要保證冪等性,不保證冪等性,會不會有問題? 這個問題其實沒法 ...
在消息傳遞過程中,如果出現傳遞失敗的情況,發送會執行重試,重試可能會產生重復的消息。對系統來說,如果沒有對重復消費進行處理,會導致系統數據發生錯誤。 比如,一個訂單系統,訂單創建成功后,把數據寫入統計數據庫,如果發生重復統計,會導致數據庫數據錯誤。 解決消息重復消費,其實就是保證消息 ...
1、面試官心里分析 其實這個很常見的一個問題,這倆問題基本可以連起來問。既然是消費消息,那肯定要考慮考慮會不會重復消費?能不能避免重復消費?或者重復消費了也別造成系統異常可以嗎?這個是MQ領域的基本問題,其實本質上還是問你使用消息隊列如何保證冪等性,這個是你架構里要考慮的一個問題。面試官問你 ...
昨天業務反饋了一個問題,一個用戶的月流水賬單重復了,拿到userid,開始定位問題之路。 查看數據庫記錄,如下圖,用戶月流水數據確實重復了(taskid同一個批次,每個月數據都有二條)。 1. 首先,看外部數據供應商是否重復推送業務數據給我,我程序中是會設置攔截重復消息 2. 查看 ...
如何保證消息隊列的高可用和冪等性以及數據丟失,順序一致性 <!-- more --> RabbitMQ的高可用性 RabbitMQ是比較有代表性的,因為是基於主從做高可用性的,我們就以他為例子講解第一種MQ的高可用性怎么實現。 rabbitmq有三種模式: 單機模式 ...
或者:如何保證從消息隊列里拿到的數據按順序執行? 解決方案的關鍵是在消費者消費之前,將有相關性的數據按順序寫入同一個隊列(queue或者是內存隊列) 1、rabbitMQ 中,有個默認是數據1進入一個queue並且只會被一個消費者消費 場景:(1queue對多consumer ...
主要思路有兩種:1、單線程消費來保證消息的順序性;2、對消息進行編號,消費者處理時根據編號判斷順序。 1、rabbitMq問題分析:如圖,data1 和 data2 是有順序的,必須 data1 先執行,data2 后執行;這兩個數據被不同的消費者消費到了,可能 data2 先執行,data1 ...