【问题标题】:How to synchronize an ArrayList over a Network?如何通过网络同步 ArrayList?
【发布时间】:2022-01-14 13:14:48
【问题描述】:

我想在两个用 C# 编写的应用程序之间同步一个对象。

示例:ArrayList

我只想要从服务器到客户端的单向传输。 每次修改ArrayList(其中一个元素被修改或添加新元素或删除项目)时,客户端列表中的ArrayList 必须更新/同步。

每秒最多可以进行 500 次更改。一秒钟的延迟是可以接受的。

你知道怎么做吗?如果我必须编写代码,我想将 MemoryCache 与 ZeroMQ 库一起使用。

【问题讨论】:

    标签: c# zeromq distributed-computing low-latency


    【解决方案1】:

    问: 你知道(...方式...)这样做吗?

    A :
    是的,这个概念是可行的,无论是在节奏方面 (500 [Hz]) 还是在延迟方面 (1000 [ms] E2E),假设没有巨型乳齿象消息有效负载或巨大的 SER/DES/更新相关处理被加载到这样的 E2E-soft-sync-line 上。

    ZeroMQ 有许多巧妙的技巧,但可能会出现一些惊喜 - 比如 (几乎)智能零复制操作带来的零延迟优势以及消息传递的零保证,每条消息要么作为已发送原始文件的精确二进制图像传递,要么根本不传递(使我们免于位损坏的错误恢复和其他低级噩梦 - 这也是一个好处,但有些人不需要考虑这一点加分)

    因此,从概念上讲,服务器准备(序列化和注释,如果需要任何丰富的格式、元数据、时间戳和喜欢)数据更新有效负载并将它们发送到所有连接和侦听的交易对手(使用 ZeroMQ 自我维护的信号 +传输元平面 - 严格来说,您可以为此使用许多 SIG + 许多 TRANSPORT 套接字,使用任何可用的传输类的组合
    { inproc: | ipc: | tipc: | vmci: | tcp: | norm: | pgm: | epgm: },
    在您的实际部署基础设施中变得合适、智能和方便(被它是一个物理本地主机,或者是一组托管的 VM-s 或一个全球物联网......)。

    接收客户端自己接收任何数据更新负载并在本地反序列化其内容并负责执行自己的内部数据同步更新(因此这个概念独立于原始/目标平台的O / S工作, CPU 架构、机器代码字节序、数据结构约定,一切尽在您的设计人员手中。

    只有想象力才是做到这一点的天花板。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      相关资源
      最近更新 更多