簡體   English   中英

如何使用 nodejs cron 作業制作計划報告功能? (aws 自動縮放的問題)

[英]How to make a schedule report feature using nodejs cron job ? (problem with aws autoscaling)

我正在研究“計划報告”功能,但由於 AWS 自動縮放功能而面臨問題。

這就是我執行此功能的方式:

第 1 步:用戶將提供“小時”、“分鍾”和“是否每天報告標志”作為后端的輸入。

步驟 2 :后端將創建一個 cron 作業,將“cron 作業 id”存儲在數據庫中,並根據 cron 作業計划通過郵件將報告發送給用戶。

問題:如果服務器關閉然后重新啟動; 然后根據啟動腳本將啟動所有 cron 作業......現在,如果我的服務器負載很重,那么 AWS 自動縮放將啟動,並且在每個 EC2 實例上執行啟動腳本,並且將執行相同的 cron-job在不同的實例上運行。

因此,相同的 cron 作業將在不同的 EC2 實例上運行,因此用戶將多次收到相同的電子郵件(這是我面臨的錯誤,如何解決此問題)

到目前為止我的想法是:我們可以在數據庫中存儲一個標志,如果標志為真,則 cron 作業將啟動,否則將不會啟動。 因此,如果一個 ec2 實例正在運行 cron 作業,它會將 flag 設置為 true,然后其他實例將不會啟動它。 但問題是如果發球突然關閉或其他情況如何取消設置標志。

我無法在網上找到此類基於架構設計的問題的答案。 上述方法是否實用; 如果那么如何正確地做到這一點? 實現這類架構的最佳方式是什么? 任何幫助都會很棒,謝謝!

我遇到了同樣的問題。 您可以遵循 2 種方式:

  1. 您可以運行專用於 cron 作業的單獨 ec2 實例(具有垂直擴展功能)。
  2. 您可以存儲實例 ID 和 cron 作業狀態以匹配正在運行的 cron 作業實例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM