2014-02-20 28 views
0

我们正在创建一个金融交易系统。有一个外部系统暴露的黑名单服务(soap)。我们必须在每次交易中调用此服务来检查发件人或收件人是否存在于黑名单中。如果他们这样做,我们不应该让交易通过。 黑名单大小是几千。通过在本地数据库中保存数据来优化性能

为了优化系统,我们正在考虑在我们的数据库中保存一份该列表的副本,并从那里检查并在黑名单中有更新时通过外部系统通知我们。

从架构的角度来看,这是一个很好的方法吗?我们应该使用缓存库而不是手动执行此操作吗?

应用程序正在使用Oracle数据库在Java中开发。

回答

0

从我的角度来看,你不应该发明轮子,总是使用已知的库代替编写自己的代码,因为它可能更加优化和维护。 如果您能够将数据保存在本地数据库中,并以某种方式告知外部系统的变化,这可能是一种更好的方法。 请确保同步您的操作,因为您可能希望检查是否有人被列入黑名单的操作,以等待同步黑名单系统中的数据的操作,以获得最新的数据。

0

我认为它可以(或不)是一个好方法。

1)SOAP通常意味着Web服务,通​​常意味着延迟。您是否希望您的流程中的所有步骤都等待该呼叫返回?

2)该列表可能不会快速改变?意味着将它保存在“缓存”中并不是伤害。您可以调整系统检查的周期并更新缓存。

3)SOAP也意味着一个异步调用(一般情况下),您可以在更新“缓存”时让系统继续运行。

如果你的系统很热处理很多,需要每隔多次检查一次该列表,并且该列表每天不会改变0.1%,那么你生病就没有问题。

另一方面,如果系统每天只运行一次批次,并且该列表每秒都在改变很多,那么生病并不是最好的方法。