2012-04-07 83 views
1

我有一個簡單的基於Web的應用程序場景,發送請求並從Database.Response獲取響應的行數非常大,一次記錄大約10,000到20,000條記錄。從響應時間分離審計和日誌記錄 - 設計

我爲審計記錄設計了所有的transaction.i.e。插入到所有這些響應的數據庫中。一次有10,000到20,000行。

由於插入到表中僅用於審計目的。我可以通過某種方式將審計和日誌記錄與正常響應分開嗎?一些方法來區分它們?

任何設計上的幫助將是非常可觀的。

在此先感謝。

回答

1

在一般情況下,它是一個Web應用程序做太多工作在同步Web請求一個壞主意。 Web服務器(和Web應用程序服務器)旨在爲大量併發請求提供服務,但假設每個請求只需要幾毫秒即可執行。不同的服務器有不同的線程策略,但只要有長時間運行的請求,由於線程管理,您可能會遇到開銷,然後您可以很快發現您的Web服務器正在放慢速度,直至出現故障。

在單個Web請求中讀取或寫入數千行數十行幾乎肯定是一個糟糕的主意。您可能希望將您的應用程序設計爲使用異步工作隊列。有幾種解決方案;在Java生態系統中,您可以檢出vert.x

在這些異步模型中,審計非常簡單 - 您的審計程序與「寫入數據庫」偵聽器訂閱相同的消息隊列。