我被指派更新现有的收集来自销售点的数据并将其插入中央数据库的系统。现在工作的是基于 FTP/SFTP 传输,其中信息每天发送一次,通常在晚上。不幸的是,由于不稳定的连接链接(低质量的 2G/3G 调制解调器),一些文件似乎已损坏。以这种方式连接的只有几家商店,一切都很顺利,但随着商店数量的增加,错误变得更加频繁。更糟糕的是,
我的经理建议的想法是在白天连续发送数据。数据包会更小,因此它们的传输和插入速度会更快,中央服务器将包含实际(几乎实时)数据,夜间可用于长时间运行的数据库活动,如创建备份、重建索引等。
浏览了很多网站后,我发现:
- 使用 ASMX Web 服务现已过时,应改用 WCF
- 带有 MSMQ 或系统消息传递的 WCF 可用于安全地传输数据,我不必太在意确认数据的交付、一致性、节点脱机等。
- 根据http://blogs.msdn.com/b/motleyqueue/archive/2007/09/22/system-messaging-versus-wcf-queuing.aspx WCF排队更好
- 还有其他实现消息队列的技术,如 RabbitMQ、ZeroMQ 等。
这就是我感到困惑的地方。有这么多选择,你对这些技术有什么优缺点吗?我们将 .NET 与 Windows Forms 和 SQL Server 一起使用,但如果有必要,我们可以更改为更合适的东西。我也有点害怕服务器效率。经过一些计算,服务器每秒将接收大约 15 个数据包(峰值)。很多吗?我知道有很多网站没有严格的服务器基础设施,在线处理数百名访问者仍然运行流畅,但网站主要将数据上传到客户端,这里我们将从客户端下载。
我还发现了一些类似的 SO 问题:Middleware to build data-gathering and monitoring for a Distributed System 其中提到了 DDS。您如何看待引入一些中间件服务器来处理到销售点的低质量链接,这样主服务器就不会被 1KB/s 的传输阻塞?
我会很感激你的帮助。先感谢您!