在这里,在这个页的末尾。最后一段, 他们提到了这个协议中出现的一些问题。 我无法理解这些问题。 ?例如, 。他说。 “如果请求处理时间很长” 我无法理解此声明。客户处理需要很长时间的请求在哪里?或在服务器上? 或者我无法理解时钟(时间)在哪里?它在客户端还是服务器端?因为这里提到了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:消息协议格式