一般網站上都會消息提醒通知,如一個用戶給另一個用戶發了一條站內信,那么就會在網站頂部的導航欄上就會有一個消息提醒的數字來提示您有新消息。上面只是一個簡單例子,在實際項目中可能就會有多種類型的提醒,如某個用戶給你留言了,就顯示提醒“新留言x條”或者“新回復y條”等等吧。我打算設計成把所有類型的消息提醒統一的放到一張表(notice)里,并標記用戶是否已處理了這條消息提醒,在網站的前臺就可以只統計這一張表就行了,比如用戶A給用戶B發送了一條私信,就在notice表里插入一條新的未讀消息提醒,用來提醒用戶,當用戶B查看完成私信后,再回到這張notice表標記為已處理或者直接刪除。但是大數據量或高并發的時候就會存在一個問題,當用戶已經查看完了新收到的私信后,去notice表做標記處理時,可能由于種種原因其對應的“未讀消息提醒”還沒有寫進去,這時候就出問題了,當用戶去請求是否有“未讀消息提醒”時,剛好又寫進去了,然后就提示用戶有“新消息”,但是實際上用戶早已處理掉了,只不過就是“未讀消息提醒”延時了。如果說統計新消息提醒,去各個業務(如私信,留言)中單獨統計,然后合并,再通知給用戶,這樣做的話,怎么稱得上是“消息通知系統”呢?總覺得這樣是不合理的對于消息通知系統,我的notice表是否有存在的意義呢,大家是怎么設計的?
web消息通知系統設計問題
楊__羊羊
2019-04-13 08:37:07