在這裏,在這個頁的末尾。最後一段, 他們提到了這個協議中出現的一些問題。 我無法理解這些問題。 ?例如, 。他說。 「如果請求處理時間很長」 我無法理解此聲明。客戶處理需要很長時間的請求在哪裏?或在服務器上? 或者我無法理解時鐘(時間)在哪裏?它在客戶端還是服務器端?因爲這裏提到了2點結束。 「如果在這段時間內沒有收到答覆,則客戶端機器的內核會重新發送請求消息。」
1
A
回答
1
考慮一下:
- 客戶端發送消息。如果它沒有收到來自服務器的回覆 - 例如 - 1分鐘,它將再次發送消息。
- 當服務器收到一條消息時,它僅在已經生成了對客戶端發送的消息的完整響應之後才發送回覆。
不假設您作爲客戶端向服務器發送消息。服務器收到您的消息,並開始處理它。在這個時候,你,客戶端,不知道服務器是否收到了消息。假設您向服務器發送複雜的任務,需要1分5秒來完成。 1分鐘後(忽略傳輸時間),服務器仍在忙於您的工作,但您作爲客戶端不知道任何此類信息並再次發送消息。
現在,根據實際協議的實現,也有一些潛在的問題:
- ,通過再次發送消息,可以增加一些序列數,因此無法接收回復這是可能的之後的原始消息。
- 服務器可能無法確定到達的消息是第一條消息還是必須再次發送的消息。因此,它可能已經完成了它的工作,導致不必要的處理,或者在最壞的情況下導致(業務)邏輯錯誤。
此外,通過發送消息和答覆可能不需要多次,您增加傳輸的總數據量,而不會從中獲得任何東西。
要「解決」這個問題,您可以在客戶端再次發送消息之前增加等待時間。這將在服務器上長時間運行的任務中「解決」問題,但是也會因爲你在等待更長的時間甚至發送新消息而在消息實際上丟失了的情況下受到傷害。
這裏的「真正」解決方案是讓服務器在收到來自客戶端的消息後立即確認,就像「我收到您的消息,我會很快發送回覆!」甚至在開始實際處理消息之前。
相關問題
- 1. 使用哪種消息傳遞協議?
- 2. WCF可靠會話(可靠消息傳遞)的問題
- 3. 消息傳遞協議
- 4. WebSphere Liberty中包含哪些跨語言消息傳遞協議?
- 5. 帶消息傳遞的IPC
- 6. windows-ce中有哪些消息傳遞技術可以保證消息傳遞?
- 7. RabbitMQ的可靠消息傳遞
- 8. UDP上的可靠傳輸協議
- 9. 有哪些proxy_pass協議?
- 10. 消息傳遞問題
- 11. IPC over Socket - 消息傳遞標準
- 12. 一些協議問題
- 13. Python高速公路WAMP消息協議
- 14. DNS協議,消息
- 15. 關於可靠協議的考試問題
- 16. 適用於即時消息傳遞的協議
- 17. 異步消息傳遞協議的Python(和扭曲)
- 18. PubSub +可靠的消息傳遞給不可靠的目前用戶
- 19. 使用MQTT協議的android消息傳遞系統的可行性
- 20. Mule ESB作爲基於TCP的消息傳遞協議(多個持久連接)的消息路由器
- 21. SecureSocket支持哪些協議?
- 22. FileUtils.copyUrlToFile支持哪些協議?
- 23. 哪些協議用於PING?
- 24. 通過node.js中的TCP實現可靠的消息傳遞
- 25. FCM上游消息傳遞的可靠性如何?
- 26. 使用Secure MIME的安全消息傳遞是否可靠?
- 27. RS485:簡單可靠的協議
- 28. 對話鏈問題(傳遞消息)
- 29. Google雲消息傳遞(GCM)問題
- 30. XMPP:消息協議格式