通过TCP或更好的协议实现更快的状态复制

本文关键字:状态 复制 实现 协议 TCP 更好 通过 | 更新日期: 2023-09-27 18:18:31

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

当前的TcpClient进程似乎有点低效。这是一种方法,我可以建立两个系统之间的链接和流状态从一个到下一个只要通道建立。

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

通过TCP或更好的协议实现更快的状态复制

您使用TCP是正确的。你应该建立连接并保持打开状态,直到完成所有操作。就速度而言,它是无与伦比的。

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

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

TCP是基于低级连接的流协议。这似乎是正确的选择。

关于TCP的唯一问题是延迟问题。

你可以使用UDP,但是从它的声音来看,你最终会在UDP上模拟TCP。