c# - 传输大量数据的策略

标签 c# java architecture

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

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

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

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

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

最佳答案

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

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

2 检查每个处理 block 和数据的任何分割的正确性(您的描述暗示不会有分割)。这意味着有关传输的日志记录数据 - 交易数量;传输的字节数;以及每个数据 block 的校验和,这些数据与其他数据分开记录。

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

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

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

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

数据损坏或丢失有多重要?

数据在目的地多久刷新一次?

如果目的地检测到问题,是否可以请求重发?

数据的可替换性如何?

关于c# - 传输大量数据的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3901900/

相关文章:

c# - 在 MVC 5 中使用 ModelClientValidationRule 会抛出错误?

java - 未调用 SpringBoot CommandLineRunner run() 方法

xcode - cocoa - 应用程序架构

algorithm - 有哪些非常适合整数线性规划的问题示例?

java - 如何使用 Jfreechart 绘制日图表

java - 用户详细信息存储最佳实践

c# - 构建具有保证消息传递的 SignalR/Knockout 仪表板

c# - 本地主机上的 asp.net cookie 安全失败

c# - 注册 COM c# 组件 - TYPE_E_REGISTRYACCESS

java - 想要迭代 mongoDB 的一半,并使用另一个查询迭代剩下的一半