提升自己
VMware 提供培訓和認證,助力您的職業發展。
瞭解更多(2009年10月15日更新) 從里程碑 M5 開始,dm Server 2.0 採用 區域 來將核心與使用者應用程式隔離開來。這意味著核心實現對應用程式和應用程式管理來說幾乎完全不可見。
同樣在里程碑 M5 中,對克隆的支援被完全移除。區域隔離及其之間的範圍計劃為克隆旨在解決的最常見問題提供了大大簡化且更易於管理的解決方案。
在接下來的兩節中,我將概述這些變更以及我們進行這些變更的原因。
dm Kernel 建立了一個單一的 使用者區域 用於執行應用程式,並且所有應用程式(包括 dm Server 提供的——Splash、Admin、Web 和 Hosted Repository)都部署到 使用者區域 中。
Kernel bundles 未安裝在使用者區域中(除了少數區域管理所需的)。支援核心的必要功能在 OSGi 框架中執行,但使用者區域的應用程式無法看到它,除非是正常提供的服務。應用程式與核心實現是隔離的。
這種隔離有很多好處:例如,核心和使用者應用程式不再需要使用相同版本的 Spring Framework。(事實上,核心沒有安裝全部的 Spring Framework——它也不需要。)如果核心更新,應用程式需要升級或調整來適應它的可能性會大大降低。因此,核心實現更加穩定和有彈性,並且應用程式更有可能在版本之間的核心升級中存活下來。
例如,共享帶有靜態狀態的 bundles 可能不是理想的,而能夠擁有這樣一個 bundle 的副本(克隆)意味著不同的應用程式可以使用不同的克隆(應用程式作用域機制允許我們在框架中以不同的名稱安裝多個副本)。在另一種情況下,當下層 bundle 透過一個共同的中介軟體(通常是 Spring Framework 的一部分)被依賴鎖定(pinned)時,克隆這個中介軟體允許克隆依賴於不同的下層 bundle,從而使克隆能夠滿足原始中介軟體無法滿足的傳遞性約束。
在 dm Server 2.0 的里程碑版本(直到 M4)中,克隆支援(包括手動和自動)一直可用。我們從這個實現中收到了很多反饋和經驗,並且作為一項實驗,它證明是富有成效的。然而,時間和經驗表明,這還沒有準備好用於生產環境,因此克隆已從 M5 中移除,並且不會是最終 2.0 版本的一部分。區域隔離結合範圍計劃,可以用來管理克隆旨在解決的最常見問題。這些解決方案更容易理解,並且在生產環境中大大更容易支援。
手動克隆相對穩定,但即使是手動克隆也存在問題。
最後,克隆實現必須將 Spring 依賴作為特例包含進來才能高效工作。Spring DM extender 也引入了特例:這些對於其他 extender 和其他庫完全沒有通用性。它太過於特定於 Spring 了。
總的來說,儘管克隆和自動克隆的一些成果令人印象深刻,但這項功能在現場根本不夠穩定,因此為了整體質量和穩定性而被移除。
最重要的問題可以透過區域隔離和顯式作用域來解決。
鎖定(pinning)問題幾乎都產生於 Spring Framework,因此使用者區域的隔離為解決這些問題提供瞭解決方案。
其他常見情況可以透過適當使用範圍應用程式來解決,這實際上是管理伺服器中安裝構件的一種更可控、更易於支援的方式。範圍計劃使得建立所需的作用域變得容易,並且在框架上下文更改時,解析佈線在生產過程中保持穩定。