我被要求设计一个批处理应用程序,该应用程序将定期从外部供应商检索数据(特别是详细的交易列表)。我们已同意使用 XML 进行数据交换,但我们正在研究不同的方法/协议以促进实际的数据传输。供应商建议使用电子邮件或 FTP 作为传输数据的方式,但出于物流和可靠性方面的考虑,我们直接拒绝了第一种选择。
至于第二个FTP,我一直很犹豫在关注可靠性的生产环境中是否使用FTP。供应商将文件发布到 FTP 并定期下载的设计似乎不可靠且容易出错。我最初的反应是倾向于网络服务之类的东西(这个特定的供应商可能或可能不能够或愿意提供),可以根据需要在特定时间段内查询数据。
一般来说,在这种情况下最好使用什么方法? FTP(或 SFTP)通常被认为是可接受的选择,还是有更好的选择?对于如此简单的数据交换来说,网络服务是否太过分了?还有其他我完全忽略的可行选择吗?
文件传输带来了许多复杂性。
我更喜欢 Web 服务,或者只是通过摘要/基本身份验证对文件进行 HTTPS 访问,但对于非常大的文件,这对他们来说可能不切实际。
另一个答案可能是使用共享存储桶亚马逊S3 https://en.wikipedia.org/wiki/Amazon_S3,您具有读取访问权限,而他们具有写入访问权限。我已经用过几次它作为穷人的安全文件传输。
我已经以这种方式使用了 FTP 的风格,如果您这样做的话,这里有一些提示:
-
使用安全版本,例如SFTP https://en.wikipedia.org/wiki/SFTP- FTP 对于凭证或数据来说并不安全。
-
使用信号量文件来指示最新文件何时完整且可用,或者确保当他们将文件写入 FTP 目录时,他们会整体移动该文件,这样您就不会访问不完整的文件。
-
确保每个文件都有唯一的文件名(时间戳、序列号等),以便您可以跟踪已处理的文件和尚未处理的文件。不要重复使用文件名,因为您不知道何时已经处理,并且可能会在访问文件时更新文件的竞争条件。
-
使用哈希值检查传输是否成功。他们可以提供一个MD5 https://en.wikipedia.org/wiki/MD5文件的哈希值,然后您可以在完成复制后根据您的版本检查它。我也经常使用 MD5 文件作为信号量,既指示文件可用,又提供一种方法来检查传输是否完整且正确。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)