2016-12-17 31 views
1

我有一個相當簡單的微服務,它從MongoDB集羣讀取數據,進行一些數據轉換,並通過REST API公開數據。我需要使用cron作業更新獨立持久性數據存儲。我可以創建一個單獨的應用程序來更新數據集,但僅部署AWS自動擴展組中存在的一個應用程序(這適用於發佈新應用程序時有大量繁文tape節的大型企業),並且只有一個的實例通過後臺作業更新數據集。只有一個微服務在自動擴展組中執行後臺任務

鎖定通過DB中的字段寫入數據庫是一個可行的解決方案,但看起來像一個反模式。有沒有更好的方式來做到這一點,而無需創建一個單獨的應用程序來執行數據庫寫入?

回答

1

有沒有更好的方法來做到這一點,而不創建一個單獨的 應用程序來做數據庫寫入?

我認爲在這裏創建或不是新應用程序是一個小問題。這隻取決於你的架構。如果你開發一個微服務,你可能想要隔離並從中刪除一切可能使它不再製造一個monolythic的東西。至少我會那樣做。現在將所有內容全部保存在一個應用程序中似乎更容易,但是一旦代碼庫和功能顯着增加,我就不那麼容易了。

在這種情況下更困擾我的問題是獨家數據庫鎖定。避免所有成本的獨佔DB鎖。忘掉一切,放下所有任務,找到一種方法來計算您的統計數據而不鎖定數據庫。相信我,無論您現在花什麼時間開發解決方案,都將在未來獲得回報。

如果您選擇在Stack上提出這個問題,我很樂意提供幫助,但是爲了提出建議,我們需要更多地瞭解您存儲/聚合的邏輯和數據。

+0

感謝您的回覆。除了一些可配置的屬性被注入到應用程序中之外,有沒有選項(如果是這樣,什麼?)來「計算你的統計數據而不鎖定數據庫」?將有數十個應用程序實例,只有其中一個應該執行數據庫(哪個並不重要,但該作業只對每個實例每小時執行一次)。 – newToScala

+0

@newToScala我無法回答這個問題,直到我對您的信息的性質,使用的查詢,收集的統計數據,聚合,數據流速等信息更加了解。 –