在数据集成系统中检测重复项

问题描述 投票:0回答:1

我正在寻找避免通过HTTP和SFTP传输重复文件的方法。每次执行传输时,我的系统都会将传输状态存储到外部缓存中。

[每次传输之前,我都会查询外部缓存,如果当前文件中有状态为SUCCESS的条目,则将跳过该文件。只要我的系统每次传输时都能将状态存储在缓存中,此方法就可以很好地工作。但是,如果完成传输并且在写入传输状态之前,该服务死亡,该服务不知道有关传输的信息,并且下次同一文件出现时,我将重新传输该文件。

改善此状况的一种方法是在传输完成之前和之后更新缓存,以便使我对文件有所了解。但是还有其他方法可以避免这种情况吗?因为一旦将文件传输到外部系统,当状态写入失败时就无法撤消它。有什么想法吗?

etl apache-nifi data-transfer fault-tolerance system-design
1个回答
0
投票

我通常会同步外部数据,并且已经编写了足够的母带处理程序,可以就该主题进行发言。您在寻求物流解决方案时甚至不提及数据的上下文及其在传递到另一个位置时的目的。

您是否尝试将文件的主副本镜像到另一个位置?如果是这样,那么您只需要简单地传送带有唯一传送号的文件,就可以使接收者独立地同步两个数据集并处理文件中检测到的差异。如果您强行代表接收者执行此工作,则可能正在破坏数据。我始终建议接收者根据需要自己提取数据并自己同步/掌握数据,而不是推送数据。这样,这些业务规则将在应有的位置进行组织。推送过程不好。

您是否试图允许用户用自己的副本覆盖主文件,询问如何协调其上载以免覆盖该文件?如果是这样,则需要取消他们的直接控制才能覆盖该文件。您需要根据用户定义的过程分别同步每个文件,因为每个文件可以有自己的业务规则。

[当您说“查找外部缓存,并且如果当前文件的状态为SUCCESS时,将跳过该文件”,则表示您对交付者的责任太大了。我这么说,但是你怎么知道?在制造业中,没有任何交付者会承担更多的工作。消费者负责分配该空间。如果消费者确实需要该文件,则让其做出订购和处理该文件的决定,而不是由交付者来处理这样的决定。

© www.soinside.com 2019 - 2024. All rights reserved.