簡體   English   中英

在特定時間更改配置值

[英]Change config values on a specific time

我剛收到一封郵件說我必須在2009-09-01(新稅)更改配置值。 我們的正常方法是在2009-08-31 23:59醒來,然后手動更改值。 這不是一個大問題,因為這不經常發生。 但它讓我想知道其他人如何處理這樣的問題。

所以! 如何處理特定於日期的配置更改?

(我們在asp.net工作,但我不認為這必須是語言特定的)

BR
Carl Bergquist

我通常將這種數據存儲在這樣的數據庫表中

Key,  Value,  EffectiveFrom,  EffectiveTo
-----------------------------------------
VAT,    15.0,      20081201,     20091231
VAT,    17.5,      20100101,         NULL

然后,我將使用EffectiveFromEffectiveTo日期來選擇在給定時間有效的值。 如果利率是開放的,則有效可以通過NULL或99991231。

這也允許您返回而無需更改配置。 例如,如果有人要求您重新計算費率變化前一個月的稅額。

在linux中,有一個命令“ at ”用於批處理執行。
有關詳細信息,請參閱“ man at ”。

說實話,近乎醒來並改變它似乎是最簡單和最便宜的方法。 所有技術解決方案都很好,但這取決於您的工作地點。

在我們的環境中,讓某人醒來並做出改變比重新開發已經運行的軟件的功能更便宜,更簡單。 它肯定涉及較少的測試,開發開銷和成本,這意味着我們傾向於像您一樣手動解決問題。

這完全取決於形勢和技術。

pjp的想法很好,如果從數據庫獲取配置,或者作為元數據來定義整個配置集/文件的有效時間。

另一個可能是:只需准備一個包含新條目的新配置文件,並在午夜(可能重啟服務/程序)交換它們。 交換它們是可能的(如給予bei Neeraj)...

如果計時是一個問題,您應該處理更改,或者至少是正在運行的服務器上的更改時間(以避免時間不同步問題)。

我們在一段時間之前遇到了同樣的問題,並使用以下方法處理。 如果您熟悉配置更改,那么這是合適的。

在我們的案例中,源代碼公開了一個webservice(實際上是第三方),它將返回修改后的配置詳細信息。 並且我們的服務器上運行了一個Windows服務,它繼續輪詢Web服務,如果有任何更改,將更新配置文件。

這在我們的案例中完美地運作..

您可以通過將輪詢Web服務部分更改為配置更改源(例如,從某個磁盤路徑讀取更改)來使用此方法。 但我不確定如何從電子郵件中讀取配置更改。

為什么不只是創建一個shell腳本來交換文件。 在cron中運行它並在一分鍾之前切換文件,如果不成功則發送警報文本,如果成功則發送電子郵件。

這是Linux機器上的一個例子,但我認為你明白了,可以在Windows機器上執行此操作。

腳本:

cp /path/to/old/config /path/to/backup/dir/config.timestamp
cp /path/to/new/config

if(/path/to/new/config exsits) {
 sendSuccessEmail();
} else {
 sendPanicTextAlert();
}

cron的:

59 23 31 8 *  /path/to/script.sh

您可以在手前測試這個,只需指向一些虛擬目錄和文件

我見過混合方法。 而不是實際更改數據模型以包括EffectiveDate / EndDate或自己手動更改值,而是安排腳本自動更改值。 此外,請確保有一個可靠的測試計划來驗證所有更改。

但是,此類手動更改會對報告產生巨大影響。 如果以前的事務直接連接到要更改的表,則歷史報告中的數字可能會以非常糟糕的方式更改。 真的沒有“正確”的答案。

如果我無法執行pjp的解決方案,我會使用計划任務或服務器作業在適當的時候自動更新它。 但是......我可能仍然清醒地檢查它是否有效。

看看最好的解決方案是參數化你的配置文件並添加一些東西,比如應該使用某個條目。 這樣就無需復制或交換文件,您的應用程序只會處理它。 (這適用於配置文件方法或數據庫)

如果您無法更改當前系統而必須更換配置文件,那么您還有兩個選擇:

  1. 使用計划任務啟動批處理作業甚至是VBScript或PowerShell腳本(您感覺很舒服)確保設置正確的憑據以便能夠在半夜執行此操作並且您還可以添加一些檢查和緩解這種方法。
  2. 寫一個為您執行此操作的Windows服務。 在這里,您可以獲得所需的所有靈活性。 編碼它做任何它需要做的事情,做你需要的所有檢查(這樣你可以保持睡眠,而不是確保它實際工作)等等。你服務甚至會照顧調度方面,所有的意志好。 在這里,您可以使用xml DOM對象和xPath而不是替換文件,只需根據需要更新特定條目。

請記住,對配置文件的任何更改都會導致您的站點重新啟動,因此請確保您負責處理可能導致的所有其他內務處理事務。 (雖然如果你坐在那里半夜復制文件的話,這將完全一樣)

暫無
暫無

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

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