客戶端 和 GatewayWorker 通訊給服務(wù)發(fā)了一條消息后立馬斷開,運行了幾個月都正常穩(wěn)定,突然一天出現(xiàn)了一條異常,客戶端給服務(wù)端發(fā)了"1條"消息斷開后,服務(wù)端同時收到了這1條消息2次,排除客戶端重復發(fā)送的可能性,有沒有其他原因造成了服務(wù)端“同一時間”收到了客戶端發(fā)送的1條消息2次?
除非業(yè)務(wù)bug,沒有其它可能性。
大佬,發(fā)消息這個地方用了redis鎖,key和客戶端用戶UID對應(yīng),15秒限制,每天上千萬次請求,完美運行幾個月都沒出現(xiàn)過這種問題,所以基本可以把“客戶端”重復發(fā)送這個可能性排除掉。
服務(wù)端沒有復雜的業(yè)務(wù),就接消息記錄了下,那么久就出現(xiàn)一次這種情況,同一時間接到同用戶相同的消息2次,所以我覺得有點詭異,感覺問題出現(xiàn)在網(wǎng)絡(luò)傳輸階段,但是說出不出個理所當然來。
@1:我們項目以前也遇到過這類“重復”數(shù)據(jù)情況,一個用戶操作觸發(fā)了接口2次(前端做了限制只允許1次),后面排查日志是同時觸發(fā)的,正常使用不會有那么快手速,看了用戶的網(wǎng)絡(luò)環(huán)境是移動運營商,后面專門拿手機在信號不好的地方復現(xiàn)出來了,是運營商搞的鬼,用戶請求一次,信號不好的情況下運營商網(wǎng)絡(luò)可能會強制變成2次請求。
因為客戶端發(fā)消息是直接給一個外網(wǎng)IP發(fā),我懷疑是不是又是客戶端的運營商把客戶的消息變成2次發(fā)過來了。
@1:http://www.360doc.com/content/18/0424/13/11935121_748340867.shtml 有沒有這個可能性?TCP無法過濾掉因網(wǎng)絡(luò)延遲而造成二重復發(fā)