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