我想爲我的生產服務器使用servicemix,不知我是否使用OSGI servlet,這是否意味着我可以在不停機的情況下部署新版本的應用程序?如果沒有,是否有辦法實現零停機服務器?謝謝。如何使用OSGI實現零停機時間?
2
A
回答
4
OSGi動態服務可能會幫助您升級服務器而不重新啓動服務器。但是,這表明您的應用程序位於OSGi階梯的頂部。動態獲取服務是不夠的。應用程序應該保持其狀態,同時實現活力。格雷厄姆章程請參閱OSGi成熟度模型。 [1]
在現實世界中,通過複製/集羣實現零停機時間。示例設置就像兩個serviceMix服務器,由負載平衡器提供。當我們升級一臺服務器時,您將負載平衡器指向另一臺服務器,反之亦然。只是一個例子。
1
無論您使用什麼,零停機時間都是不可能的。現實世界中存在太多的外部因素。 OSGi通過允許不同版本的服務同時運行,允許連接使用較新的服務,並在最後一次活動連接斷開時關閉舊的servlet,從而幫助緩解升級場景中的停機時間。
1
的OSGi可以減少或甚至消除在單個服務器上的計劃停機時間。如果您能夠在部署舊版本之前部署新版本,則該值可以爲零(或接近於零而沒有區別)。
然而,其他評論者暗示的問題是無計劃的停機時間:OSGi無法將您從服務器中的硬件故障中解救出來。
爲了保持韌性,您需要必須有多個服務器,例如,一個集羣。一旦你有了這個,在一臺特定的服務器上升級軟件需要多長時間(只要它不是小時或天 ...),它確實沒有多大區別。
1
雖然您可以在同一個容器中部署多個版本的OSGi包,但這確實沒有幫助,因爲您的servlet需要綁定到不同的URL以避免端口衝突。然後,客戶需要知道切換到這個新的URL。這可以通過在代理服務器中動態更新路由配置來抽象出來。無論哪種方式,它都會使部署變得複雜,而且您的架構在其他方面(HA等)仍然受到限制。
相反,更好的選擇是在不同的機器上使用Servicemix集羣(和負載平衡器)。然後在每臺服務器上執行標準停止/重新部署/啓動以執行升級。這也解決了高可用性和水平可擴展性需求等。
相關問題
- 1. 如何使用廚師實現零停機時間部署?
- 2. 如何在Node.js中實現零停機時間重新部署
- 3. 在代碼部署期間實現零停機時間
- 4. 定製/構建AWS ELB以實現零停機時間
- 5. 如何部署ASP.NET應用程序以零停機時間
- 6. Kubernetes零停機時間滾動更新
- 7. tcServer上的零停機時間部署?
- 8. 重建索引零停機時間
- 9. 如何pyplot暫停()零時間?
- 10. dust.js使熱部署時nodejs零停機時間的可能性如何?
- 11. 如何通過數據庫模式更改實現零宕機時間部署
- 12. 使用Puma零宕機時間部署
- 13. ElasticSearch - 零停機
- 14. 用於C的OSGi實現?
- 15. 在Eclipse中使用OSGi實現SOAP
- 16. 使用OSGi實現自動更新
- 17. 針對Java應用程序的零停機時間部署
- 18. 以零停機時間升級nodejs websocket網絡應用程序
- 19. AWS RDS實例升級停機時間
- 20. 重啓零停機
- 21. 如何使用django實現實時?
- 22. 如何在羣集環境中進行零停機時間部署?
- 23. 從VS2015將WebApp部署到Azure,零停機時間
- 24. 牧場主:我們可以部署零停機時間嗎
- 25. 平面文件緩存,零停機時間
- 26. 零停機時間(或接近於零)的數據庫模式更改
- 27. Python使用時間戳計算Internet停機時間
- 28. 如何在CLISP中實現時間有限的執行機制?
- 29. 如何使用/實現暫停()暫停SKAudioNode?
- 30. 如何在POSIX中實現零拷貝機制?