大資料/部署專用建模的實用DevOps
DIA 和這些 DIA 操作的大資料資產是工業創新的關鍵。然而,要實現資料密集型需要付出很多努力,不僅在設計方面,還在系統/基礎設施配置和部署方面 - 這些仍然透過大量的手動微調和試錯來完成。我們概述了支援資料密集型部署和操作的抽象和自動化,以自動化的 DevOps 方式進行,包括基礎設施即程式碼和 TOSCA。
關於基礎設施即程式碼和 TOSCA,它們反映了 DevOps 的策略,即在基礎設施設計中採用原始碼實踐。更具體地說,基礎設施即程式碼設想基礎設施設計的原始碼的定義、版本控制、評估、測試等,就像應用程式程式碼的定義、版本控制、評估和測試一樣。TOSCA 是 OASIS 針對基礎設施即程式碼的標準定義語言,代表“雲應用程式的拓撲和編排規範”。
DDSM 允許使用 UML 表達 DIA 在雲上的部署。
一方面,IasC 是一種典型的 DevOps 策略,它提供了標準方式來指定部署基礎設施,並使用人類可讀的符號來支援運營問題。IasC 正規化具有以下特點:(a)用於雲應用程式規範的特定領域語言(DSL),例如 TOSCA,即“雲應用程式的拓撲和編排規範”標準,用於對雲應用程式的部署方式進行程式設計;(b)特定執行器,稱為編排器,它使用 IasC 藍圖,並根據這些 IasC 藍圖自動執行部署。
另一方面,DDSM 框架是一個基於 UML 的建模框架,它基於 MODAClouds4DICER 元模型,該元模型是 MODACloudsML 元模型的轉置和擴充套件,它適應了資料密集型部署的目標和目的。MODACloudsML 是一種語言,它允許對利用基於元件的方法的多雲應用程式的配置和部署進行建模。在 TOSCA 之上採用這種語言的主要動機是,我們希望使設計方法獨立於 TOSCA,這樣設計者不必成為 TOSCA 專家,甚至不必瞭解 TOSCA,而只需要遵循建議的方法。此外,MODACloudsML 語言基本上與 TOSCA 標準具有相同的目的,但它具有更高的抽象級別,因此使用起來更加友好。下圖顯示了 MODAClouds4DICER 元模型的摘錄。主要概念直接繼承自 MODACloudsML。MODACloudsML 模型是一組元件,這些元件可以由雲提供商 ExternalComponents 或應用程式提供商 InternalComponents 擁有。元件可以是應用程式、平臺或物理主機。雖然 ExternalComponent 只提供 Ports 和 ExecutionPlatforms,但 InternalComponent 也可以要求它們,因為它受應用程式提供商控制。Ports 和 ExecutionPlatforms 充當將元件連線到一起的方式。ProvidedPorts 和 RequiredPorts 可以透過 Relationship 概念進行連結,而 ProvidedExecutionPlatforms 和 RequiredExecutionPlatforms 可以透過 ExecutionBinding 概念進行連結。後者可以看作是兩個元件之間的一種特定型別的關係,它表明其中一個元件正在執行另一個元件。

MODACloudsML 已透過擴充套件元素進行調整,以捕獲資料密集型特定概念,例如資料密集型應用程式通常利用的系統,例如 NoSQLStorage 解決方案和 ParallelProcessingPlatforms,它們通常由一個 MasterNode 和一個或多個 SlaveNodes 組成。
從之前的技術概述來看,在下面我們將詳細說明必要的 DDSM 原型,這些原型在下面的表格中進行了介紹。
| # | 原型 | 含義 |
|---|---|---|
| 1. | InternalNode | 由應用程式所有者管理和部署的服務 |
| 2. | ExternalNode | 由第三方提供商管理和部署的服務 |
| 3. | VMsCluster | 虛擬機器叢集 |
| 4. | PeerToPeerPlatform | 以點對點方式執行的資料密集型平臺 |
| 5. | MasterSlavePlatform | 以主從方式執行的資料密集型平臺 |
| 6. | StormCluster | Storm 叢集的一個例項 |
| 7. | CassandraCluster | Cassandra 叢集的一個例項 |
| 8. | BigDataJob | 要執行的實際 DIA |
| 9. | JobSubmission | BigDataJob 與其相應的執行環境之間的部署關聯 |
- DDSM 區分
InternalNode(應用程式所有者管理和部署的服務)和ExternalNode(第三方提供商擁有和管理的服務,請參見ExternalNode原型的providerType屬性)。InternalNode和ExternalNode原型都擴充套件了 UML 元類Node。
VMsCluster原型被定義為ExternalNode的特殊化,因為租賃計算資源(如虛擬機器)是雲提供商提供的最主要服務之一(也稱為基礎設施即服務)。VMsCluster還擴充套件了 Device UML 元類,因為虛擬機器叢集在邏輯上代表單個具有處理能力的計算資源,應用程式和服務可以在其上部署以執行。VMsCluster具有一個instances屬性,表示其複製因子,即組成叢集的虛擬機器數量。叢集中的虛擬機器大小相同(就記憶體量、核心數量、時鐘頻率而言),這可以透過VMSize列舉來定義。
- 或者,使用者可以為虛擬機器的特性指定上下限(例如,
minCore/maxCore、minRam/maxRam),假設所使用的雲編排器能夠根據某些標準確定最佳雲產品,以匹配指定的界限。VMsCluster原型對於為 DDSM 使用者提供正確的抽象級別至關重要,這樣他們就可以對 DIA 的部署進行建模,而無需處理底層分散式計算基礎設施所帶來的複雜性。事實上,使用者只需要將他們的虛擬機器叢集建模為原型化的裝置,這些裝置可以包含表示託管的分散式平臺的巢狀InternalNodes。此外,一個特定的 OCL 約束規定,每個InternalNode必須包含在一個具有VMsCluster原型的裝置中,因為根據定義,InternalNode必須由應用程式提供商部署和管理,因此必須擁有必要的託管資源。
- 然後我們定義 DIA 特定的部署抽象,即
PeerToPeerPlatform、MasterSlavePlatform原型,作為InternalNode的進一步特殊化。這兩種原型基本上允許建模語言捕獲兩種通用型別分散式體系結構之間的關鍵差異。例如,MasterSlavePlatform原型允許指定一個專用的主機作為主節點,因為它可能需要更多的計算資源。透過擴充套件我們的部署抽象,我們實現了一組技術建模元素(StormCluster、CassandraCluster等),每個元素對應於我們支援的技術。DIA 執行引擎(例如 Spark 或 Storm)也擴充套件了 UMLExecutionEnvironment,以便區分 DIA 作業可以提交到的這些平臺。每個技術元素允許對特定於給定技術的部署方面進行建模,例如平臺特定的配置引數或對其他技術的依賴關係,如果這些依賴關係是強制性的,則透過 OCL 約束來強制執行。
BigDataJob原型表示可以提交到任何可用執行引擎以執行的實際應用程式。它被定義為 UML Artefact 的特殊化,因為它實際上對應於 DIA 可執行工件。它允許指定特定於作業的資訊,例如可以從其中檢索應用程式可執行檔案的 artifactUrl。
JobSubmission原型(擴充套件了 UML Deployment)用於指定 DIA 的其他部署選項。例如,它允許指定作業排程選項,例如它必須提交多少次以及兩次後續提交之間的時間間隔。這樣,可以使用不同的部署選項將相同的 DIA 作業部署在多個例項中。一個額外的 OCL 約束要求每個BigDataJob透過JobSubmission連線到一個 UMLExecutionEnvironment,該ExecutionEnvironment包含一個擴充套件MasterSlavePlatform或PeerToPeerPlatform原型之間的原型的原型。
我們透過將定義的配置檔案應用於對一個名為 Wikistats 的簡單 DIA 的部署進行建模,來展示該配置檔案,Wikistats 是一個流式應用程式,它處理維基媒體文章以提取有關其內容和結構的統計資料。該應用程式以 Apache Storm 作為流處理引擎,並使用 Apache Cassandra 作為儲存技術。Wikistats 是一個簡單示例,它展示了 DIA 需要多個異構的分散式平臺,例如 Storm 和 Cassandra。此外,Storm 還依賴於 Apache Zookeeper。Wikistats 應用程式本身是一個 Storm 應用程式(一個流式作業),打包在可部署的工件中。下圖顯示了 Wikistats 示例的 DDSM。

在這個特定的示例場景中,所有必要的平臺都部署在來自 OpenStack 安裝的相同 2 個大型 VM 叢集中。每個所需的平臺元素都被建模為一個Node,並用相應的技術特定構造型進行註釋。特別是 Storm 被建模為一個ExecutionEnvironment,因為它是執行實際 Wikistats 應用程式程式碼的應用程式引擎。此時,DDSM 支援的關鍵方面是對雲基礎設施和各種平臺進行微調。技術構造型允許以一種易於快速測試不同配置的方式對每個平臺進行配置,從而在多次部署中進行測試,並使 DIA 的持續架構成為可能。Storm 對 Zookeeper 的依賴透過先前討論的 OCL 約束庫強制執行,該庫自動安裝在 DDSM 配置檔案中。Wikistats 應用程式的部署被建模為一個Artefact,用BigDataJob 構造型進行註釋,並使用一個Deployment 依賴關係與StormCluster 元素連結,該依賴關係被構造型為JobSubmission。最後,BigDataJob 和JobSubmission 可用於詳細說明 Wikistats 作業以及如何排程該作業。
DICE 基於 UML 的部署建模在很大程度上圍繞 DDSM 展開,DDSM 是一個經過改進的 UML 配置檔案,用於使用帶有適當資料密集型增強構造型的簡單 UML 部署圖來指定基礎設施即程式碼。