我在集羣環境中使用石英+彈簧運行的作業很少。這些作業未設置爲在集羣環境中運行,因此每個作業將根據我們所擁有的實例的數量運行多次。這些作業在AWS環境中運行。所以我們不確定會運行多少個實例,因爲我們可以動態增加或減少。所以我們正在重構代碼。石英彈簧設計建議
問題,讓我們根據一定的活動以用戶發送郵件給用戶爲例。我們每天可能會有1000個用戶需要發送電子郵件。
當前,因爲未將其設置爲在羣集環境中運行,所以每個實例都會運行作業並向用戶發送有關其活動的電子郵件。所以如果我有3個實例在運行,工作將運行3次,同樣的電子郵件發送給用戶3次。
我們決定使用石英jdbc來確保作業只運行一次。
我在尋找關於如何做下面部分的建議。
讓我說我必須發送電子郵件給300個用戶,而不是運行1個實例挑選用戶和發送電子郵件給300個用戶,我想在任何實例上獲得300個用戶從DB和後來相同的工作其他實例也參與處理這300個用戶。什麼是最好的方式來做到這一點。我不想將這300名用戶存儲在臨時表中,並且從數據庫中挑選用戶。有沒有一種方法可以將這些300個用戶存儲在全局內存中,例如memcached和job,以便從不同的實例中挑選數據(處理用戶時的負載平衡類型)。我不想使用memcache,所以可用的其他選項或最佳方式我可以繼續設計。
它是在DB中插入記錄的應用程序嗎?或者您的應用程序僅從數據庫中選擇記錄併發送電子郵件? –
這個應用程序將得到用戶使用休息服務的列表,併爲每個用戶調用其他休息服務發送電子郵件 – prred