我正在構建一個Web服務,它爲來自嵌入式數據庫的請求提供服務,該服務本質上是一個文件。該文件將被另一個進程定期替換。文件重新加載後臺線程vs基於請求
該服務必須檢測到此更改並更新文件參考。請求驅動是否更好?即每個請求是否檢查新版本是否可用或是否有後臺線程?
我正在構建一個Web服務,它爲來自嵌入式數據庫的請求提供服務,該服務本質上是一個文件。該文件將被另一個進程定期替換。文件重新加載後臺線程vs基於請求
該服務必須檢測到此更改並更新文件參考。請求驅動是否更好?即每個請求是否檢查新版本是否可用或是否有後臺線程?
我不會爲每個請求做任何IO相關的事情。事實上,我認爲服務本身不應該負責檢查數據的新鮮度。所有它應該關心的是從源頭上查找數據(執行一些不是CPU密集型的業務邏輯)並將其發出以便處於實時Web應用程序的SLA安全範圍之內(我假設?)。你可以考慮像可能性:
「我不會爲每個請求做任何與IO有關的事情。」你能否詳細說明一下? – user1956069
我認爲它應該像後臺進程它將通知用戶註冊事件。您可以使用文件偵聽器來實現此目的。下面的示例是基於輪詢的模型。
WatchService watcher = FileSystems.getDefault().newWatchService();
Path dir = Paths.get("Path/To/Watched/Directory");
dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
請求的數量是多少?你如何訪問該文件?平面文件? Json,Xml? – efekctive
5k/s;在文本文件 – user1956069
中管理分隔的鍵值對,因此您需要執行某種f if-modified-因爲每次請求都會執行,並在適當時緩存數據。或者servlet /控制器中的另一個線程提取更改。如果更新不是太頻繁,你可能會沒有線程。但每秒5k似乎要求強大的東西。異步響應會很好 – efekctive