Wcf 将分布式数据收集到中央数据库中
我的任务是更新现有的收集销售点数据的系统,并将其插入中央数据库。目前正在工作的是基于FTP/SFTP传输的,信息每天发送一次,通常是在晚上。不幸的是,由于不稳定的连接链路(低质量的2G/3G调制解调器),一些文件似乎已损坏。只有几家商店通过这种方式连接起来,一切都很顺利,但随着商店数量的增加,错误变得越来越频繁。更糟糕的是,将数据插入中央数据库所需的时间长达12-14小时(包括等待从所有商店下载数据)这不会发生在工作日,因为这会阻碍创建销售报告的过程和数据库的其他活动,所以我们在这里的处理时间非常紧张 我的经理建议在白天连续发送数据。数据包将大大缩小,因此传输和插入速度将大大加快,中央服务器将包含实际(几乎实时)数据,夜间可用于创建备份、重建索引等长时间运行的数据库活动 在浏览了许多网站后,我发现:Wcf 将分布式数据收集到中央数据库中,wcf,rabbitmq,msmq,zeromq,data-distribution-service,Wcf,Rabbitmq,Msmq,Zeromq,Data Distribution Service,我的任务是更新现有的收集销售点数据的系统,并将其插入中央数据库。目前正在工作的是基于FTP/SFTP传输的,信息每天发送一次,通常是在晚上。不幸的是,由于不稳定的连接链路(低质量的2G/3G调制解调器),一些文件似乎已损坏。只有几家商店通过这种方式连接起来,一切都很顺利,但随着商店数量的增加,错误变得越来越频繁。更糟糕的是,将数据插入中央数据库所需的时间长达12-14小时(包括等待从所有商店下载数据)这不会发生在工作日,因为这会阻碍创建销售报告的过程和数据库的其他活动,所以我们在这里的处理时间非
- 使用ASMXWeb服务现在已经过时,应该改用WCF
- 带有MSMQ或系统消息传递的WCF可用于安全传输数据,在这种情况下,我不必太在意确认数据的传递、一致性、节点脱机等
- 根据WCF,排队更好
- 还有其他实现消息队列的技术,如RabbitMQ、ZeroMQ等
如果你能帮我,我将不胜感激。提前谢谢你 Rabbitmq可以轻松处理每秒数千条1kb的消息 由于您的用例不是关于处理实时数据的,所以我认为您应该合并一些消息并将它们作为一个批发送。这样就足够分散一天的负荷了 因为这里的动机不是实时处理数据,所以任何传输层都可以完成这项工作。甚至ftp/sftp。由于rabbitmq在这里可以正常工作,因此它不是它的典型用例
正如您提到的,您担心的一个问题是网络速度慢/不可靠,我建议在发送文件之前对其进行压缩,并在接收端立即验证其完整性。Rsync或类似的软件可能会在这方面做得很好 据我所知,你基本上有两个问题: