C# 传输大量数据的策略

C# 传输大量数据的策略,c#,java,architecture,C#,Java,Architecture,我正在写我的硕士论文,正在与一家数字标牌公司联系,在那里我正在写大量数据的分发。我需要一些将大量数据(这是图像和视频,~100Mb-~1Gb-但任何数据都可以,大型数据集也会带来一些相同的问题)传输到多个客户机的想法或记录在案的经验 有没有人知道我可以研究一种方法,如何以结构化的方式处理这个问题,或者至少为我指明一个方向(其他论文、书籍、论文、人物) 我现在的主要方法是解决一些问题: 1.如何确保数据到达时完好无损(不是corruptet,.png仍然可以工作) 2.如何确定是否已收到所有数据?

我正在写我的硕士论文,正在与一家数字标牌公司联系,在那里我正在写大量数据的分发。我需要一些将大量数据(这是图像和视频,~100Mb-~1Gb-但任何数据都可以,大型数据集也会带来一些相同的问题)传输到多个客户机的想法或记录在案的经验

有没有人知道我可以研究一种方法,如何以结构化的方式处理这个问题,或者至少为我指明一个方向(其他论文、书籍、论文、人物)

我现在的主要方法是解决一些问题: 1.如何确保数据到达时完好无损(不是corruptet,.png仍然可以工作) 2.如何确定是否已收到所有数据? 3

任何输入都是受欢迎的,当前的方法是通过Web服务进行流式传输,我将研究BitTorrent aproach(P2P),但这似乎不是一个合适的策略,因为每个客户端都可以显示不同的内容

你们中的任何一个在数字标牌公司工作的人能告诉我你们的方法是怎样的吗?或者,如果您有将大型数据集从服务器移动到客户端的经验。。。你的方法是什么?

FTP

在这里我将为你做研究

另一个链接:


斯坦福德过去有一些程序,在这些程序中,他们利用世界各地的计算机进行群集计算,以处理大量数据


通常,他们将数据分成几个独立的部分,然后发送到世界各地的笔记本电脑上,然后在后台进行处理。为此,用户需要安装一个小软件。数据经过处理后,通过软件上传到斯坦福德服务器。我不记得它的名字,但你可以在斯坦福网站上搜索。应该是他们的一些基因研究实验室

根据我的经验,我在一家出租车顶部做广告的公司工作。虽然我没有处理系统的广告分发部分,但我认为大部分通信都是通过XMPP和使用BitTorrent的广告分发进行的。像我们一样使用移动系统,网络上下波动很大,所以无论你选择什么,都不需要在出现故障时重新下载

我的经验是在机器之间移动非常大的数据集——在计算和事务环境中大约有140Gb的数据流——因此我的评论对于您的查询来说可能有些过分。我们必须在应用程序中纳入一些基本原则:

1使数据流可中断-因此,如果数据传输应用程序出现任何问题,则只需“倒带”一小部分数据-在我的应用程序中,我们必须确保任何问题都不会导致损失超过一个小时的计算时间。这意味着,除了连续记录数据和计算外,还需要从程序内部中断每小时(在我的情况下是每小时)一次的处理,以检查记录和校正数据是否最新和正确

2检查每个处理块和数据的任何子分区的正确性(您的描述意味着将没有子分区)。这意味着记录有关传输事务数的数据;传输的字节数;和每个数据块上的校验和,这些数据块与其他数据分开记录

3记录在本地和远程数据上进行的计算(这就是要求传输数据的原因)。必须将数据传输到备份站点,该站点必须在主计算机出现故障时保持健壮。这意味着地理位置偏远;在国家电网的不同部分配备自己的电源;具有独立的专用通信线路和服务器等

4我们的解决方案意味着远程站点需要确认接收到每个数据块及其单独计算的日志数据,以便与源进行比较。显然,这种检查可以在两端进行,但我们选择在接收方系统上进行

由于数据量大,这些原则是必要的;进行所有计算的计算成本;以及数据的敏感性

在选择解决方案之前,您必须回答的主要问题有:

数据损坏或丢失有多重要

在目的地刷新数据的频率如何

如果目标检测到问题,是否可以请求重新发送

数据的可替换性如何?

必须使用流(缓冲)-不要试图将整个数据存储在内存中。 使用校验和或散列策略分解并验证小部分(如果您担心数据完整性,可能需要密钥散列)


现在处理大量数据非常简单…

谢谢您的回答。现在我们正在使用Web服务来传输数据,但您得到了一个要点—回到基础。最简单的事情,将工作!SFTP在安全性方面的完整性更好