扭曲的RPC是否保证按顺序到达?

2024-10-05 15:29:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用twisted来实现一个客户机和一个服务器。我已经在客户端和服务器之间设置了RPC。因此,在客户机上我执行protocol.REQUEST_UPDATE_STATS(stats),这就转化为在客户机传输上用transport.write发送消息,这是["update_stats", stats]的编码版本。当服务器收到此消息时,将调用服务器协议上的dataReceived函数,对其进行解码,并基于该消息调用函数,如本例中的CMD_UPDATE_STATS(stats)。你知道吗

如果在客户机上,我做了如下操作:

protocol.REQUEST_UPDATE_STATS("stats1")
protocol.REQUEST_UPDATE_STATS("stats2")

…我能保证"stats1"消息在服务器上的"stats2"消息之前到达吗?你知道吗

更新:为更清晰而编辑。但现在答案似乎很明显——不可能。你知道吗


Tags: 服务器消息客户端客户机requeststatstwistedupdate
1条回答
网友
1楼 · 发布于 2024-10-05 15:29:41

它们将按照Python进程接收请求的顺序到达。这包括连接建立时间加上包含请求数据的数据包。因此不,这不能保证是发送进程发送请求的顺序,因为网络延迟、丢弃的数据包、发送方数据包排队等。对于分布式系统,“顺序”的定义也很松散。你知道吗

但是,是的,一般来说,你可以指望他们被按顺序交付,只要他们分开了一个相对较长的时间(100毫秒在互联网上)。你知道吗

相关问题 更多 >