我有一個「健康檢查程序」程序,每10秒調用一次「探測程序」來檢查服務是否正在運行。如果探測器以退回碼0退出,健康檢查員認爲被測試的服務正常。否則,它認爲它不起作用。用緩存退出代碼退出程序
我無法更改健康檢查程序(我無法使用更大的間隔進行檢查,或者使用比產生進程和檢查退出代碼更好的通信協議)。
也就是說,我不想每10秒就真正探測一次服務,因爲這太過分了。我只想每分鐘探究一次。
我的解決方案是讓探測器保持最後一個答案的「緩存」有效1分鐘,然後真正探測緩存何時到期。
這看起來很好,但考慮到程序必須退出(返回退出代碼),我在考慮使用體面的方法時遇到了麻煩。到目前爲止,我最好的選擇是將我的探測器轉換成一個守護進程(這會將緩存保存在內存中),並創建一個客戶端來查詢它並退出它的響應,但它似乎工作太多了(並且處理線程,等等)。
另一種方法是使用SQLite/memcached/redis。
還有其他想法嗎?
難道真的值得嗎?每10秒檢查一次是否使用相關數量的系統資源?有一個額外的進程(或整個數據庫系統)掛起來做緩存會真的更便宜嗎? – sth
你可以寫出數據到文件嗎? – TheSoundDefense
@sth不幸的是,這個探測器必須可擴展到1000多臺服務器,在這種情況下,這將成爲一個問題 – Lem0n