直播網站的外嵌功能,客戶將我們的直播嵌入到他們的網頁,而他們的網頁進行了點贊活動,有人進行刷票導致併發量
特別大。這時候由於直播網站在嵌入頁面也加入了遊客身份信息,導致了錯誤:Duplicate entry for key 'PRIMARY'。
先明確一下我們的業務流程。用戶進入直播頁面,當用戶未登錄時就是遊客身份,就會自動生成一條遊客信息插入遊客表。
遊客表是共享的,用戶關閉網頁就會將佔用的遊客記錄釋放,只有系統裏的遊客數量超過數據庫中的遊客記錄數,纔會
去生成遊客。爲了區分遊客和會員,遊客表使用了負數id作爲主鍵,並不是自增主鍵。由於系統使用了兩臺服務器,當併發
量較大時,一臺服務器創建了一條遊客記錄,而另一臺服務器也想創建相同id的記錄導致了以上的錯誤。
具體爲什麼會出現兩臺服務器同時讀到了髒數據,我還沒想清楚,大家有什麼想法給提一下。
解決方案:
1.嵌入頁面去除了用戶身份信息,不再創建遊客信息。
2.遊客表的主鍵改爲自增id,還是使用負id作爲區分遊客和會員的方式。這樣存在一個問題,就是有可能會有重複的遊客數據,
需要定期清理重複數據。
不知道大家的系統中使用遊客機制時,是如何處理,請大神賜教!