gpt4 book ai didi

c# - 通过 TCP 或更好的协议(protocol)进行更快的状态复制

转载 作者:可可西里 更新时间:2023-11-01 02:57:17 25 4
gpt4 key购买 nike

我有一个双节点系统,我试图在其中复制节点之间的内存状态...为了简化,只需考虑主从(主动-被动)。节点 A 有一个相对恒定的变化流进来,然后尝试将状态推送到节点 B。目前,这是通过批处理状态并使用 TcpClient 实例推送它来定期进行的。

当前的 TcpClient 进程似乎有点低效。只要建立 channel ,我就可以通过这种方式在两个系统之间建立链接并从一个系统流式传输状态到另一个系统。

出于性能原因,我不能使用 WCF 或 Remoting 之类的东西...我对较低级别的网络结构相对缺乏经验,但我非常愿意尝试任何新事物。理想情况下,解决方案是我可以使用 native C# 4 完成的事情,而不需要任何新产品。

最佳答案

您使用 TCP 是对的。您应该建立连接并保持打开状态,直到完成所有操作。在速度方面,您真的无法击败它。

如果变化不是太大,最好只发送增量变化,而不是数据的整个副本。我过去这样做的方法是使用 Differental Execution .这可能比您想尝试的要多,但基本思想是您编写一个函数来遍历数据。将其视为同步序列化器/反序列化器。在该控制结构下,它会自动检测自上次行走以来的所有变化。您可以获取这些更改并将它们发送到另一端的接收器,该接收器以相同的方式工作,但会折叠更改。

这对于您正在做的事情来说可能有点多,但无论如何,TCP 是可行的方法。顺便说一句,尽量避免 new-ing。这很昂贵。

关于c# - 通过 TCP 或更好的协议(protocol)进行更快的状态复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8581884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com