在部署期間需要實現零停機時間。情景是我有共6個生產箱,我的代碼將被部署。第一個代碼將被部署在3個框中。在這個時候,我將使我的新代碼和新代碼都能正常運行。我在我的DB表中的一個表中應用加密邏輯,這將僅由我的新代碼處理。當用戶點擊我的舊代碼庫時,我的應用程序將失敗。什麼是可能的解決方案。我的應用程序是Java應用程序和我用戶Oracle 10g。在代碼部署期間實現零停機時間
1
A
回答
3
的解決方案是有版本的序列,其允許這一點。假設代碼在更新之前使用名爲A的純文本列。
- 將另一列A_ENCRYPTED添加到數據庫。舊的代碼仍然採用了和忽略A_ENCRYPTED,所以一切都很好
- 發佈上三盒第一更新從A讀取,寫入A和也加密值和A_ENCRYPTED結果寫入。舊的代碼和新的代碼讀取和一個寫,所以一切都很好
- 發行這首更新到其他三盒。現在每個人都寫入A和A_ENCRYPTED
- 執行,在一個加密的一切,將結果存儲在A_ENCRYPTED的腳本。現在A和A_ENCRYPTED對於所有行都是一致的,並且由於所有的框都寫入兩列,所以繼續保持一致。
- 現在發佈第二次更新,以三盒從A_ENCRYPTED讀取和寫入仍然對A和A_ENCRYPTED。由於A始終與A_ENCRYPTED保持一致,所以其他3個框仍然正常工作。
- 在其他3個盒子上做同樣的發佈。現在所有的盒子都是從A_ENCRYPTED讀取和寫入的。
- 現在發佈第三次更新到3個盒子,只讀/從A_ENCRYPTED
- 在其他3個盒子上做同樣的發佈。現在沒有人再使用A列了。
- 執行一個腳本用於刪除列A.
0
的故障狀態是舊代碼+新的數據,以便在過渡階段需要是新的代碼+舊數據。您的新代碼需要能夠分辨舊數據和新數據之間的差異,並與兩者一起工作。然後,一旦所有舊代碼都不存在,您可以轉換爲新的數據格式。
- 舊代碼+舊數據
- 新代碼+舊數據
- 新代碼+新數據
相關問題
- 1. 如何在Node.js中實現零停機時間重新部署
- 2. 如何使用廚師實現零停機時間部署?
- 3. tcServer上的零停機時間部署?
- 4. 使用Puma零宕機時間部署
- 5. AWS ELB零宕機時間部署
- 6. Azure網站和部署期間的停機時間
- 7. 從VS2015將WebApp部署到Azure,零停機時間
- 8. 牧場主:我們可以部署零停機時間嗎
- 9. 如何部署ASP.NET應用程序以零停機時間
- 10. 針對Java應用程序的零停機時間部署
- 11. Kubernetes部署導致停機時間
- 12. 定製/構建AWS ELB以實現零停機時間
- 13. 如何使用OSGI實現零停機時間?
- 14. 如何通過數據庫模式更改實現零宕機時間部署
- 15. 如何在羣集環境中進行零停機時間部署?
- 16. dust.js使熱部署時nodejs零停機時間的可能性如何?
- 17. Slack機器零停機部署
- 18. Kubernetes零停機時間滾動更新
- 19. 重建索引零停機時間
- 20. NoSuchMethodException部署期間
- 21. Azure部署期間的脫機頁面
- 22. 如何在部署期間在Seed方法中運行代碼?
- 23. 零前端資源宕機時間部署
- 24. 零宕機時間部署Nodejs應用程序
- 25. 在使用Web Deploy部署期間沒有錯誤代碼3.5
- 26. .lib和.dll在將C++代碼部署到Github期間
- 27. 部署到生產,建立和停機時間最短?
- 28. Glassfish部署時間
- 29. 驗證日期時間現在時間現在時間
- 30. 部署期間更改web.config
我們基於這種方法我們改變工作謝謝。 – Kannappan