2014-02-20 32 views
0

我們正在創建一個金融交易系統。有一個外部系統暴露的黑名單服務(soap)。我們必須在每次交易中調用此服務來檢查發件人或收件人是否存在於黑名單中。如果他們這樣做,我們不應該讓交易通過。 黑名單大小是幾千。通過在本地數據庫中保存數據來優化性能

爲了優化系統,我們正在考慮在我們的數據庫中保存一份該列表的副本,並從那裏檢查並在黑名單中有更新時通過外部系統通知我們。

從架構的角度來看,這是一個很好的方法嗎?我們應該使用緩存庫而不是手動執行此操作嗎?

應用程序正在使用Oracle數據庫在Java中開發。

回答

0

從我的角度來看,你不應該發明輪子,總是使用已知的庫代替編寫自己的代碼,因爲它可能更加優化和維護。 如果您能夠將數據保存在本地數據庫中,並以某種方式告知外部系統的變化,這可能是一種更好的方法。 請確保同步您的操作,因爲您可能希望檢查是否有人被列入黑名單的操作,以等待同步黑名單系統中的數據的操作,以獲得最新的數據。

0

我認爲它可以(或不)是一個好方法。

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

2)該列表可能不會快速改變?意味着將它保存在「緩存」中並不是傷害。您可以調整系統檢查的週期並更新緩存。

3)SOAP也意味着一個異步調用(一般情況下),您可以在更新「緩存」時讓系統繼續運行。

如果你的系統很熱處理很多,需要每隔多次檢查一次該列表,並且該列表每天不會改變0.1%,那麼你生病就沒有問題。

另一方面,如果系統每天只運行一次批次,並且該列表每秒都在改變很多,那麼生病並不是最好的方法。