一文詳解如何在 ChengYing 中透過產品線部署一鍵提升效率

數棧DTinsight發表於2023-05-06

在之前的內容當中,我們為大家介紹過 的安裝原理、產品包製作等內容,本篇就延續之前的內容,和大家展開聊聊 ChengYing 產品線部署相關的設計。幫助對 感興趣的開發者更好地瞭解和使用 ChengYing。

產品線部署簡介

首先對 ChengYing 的產品線部署進行一個“自我介紹”,共分為三個部分:

● 支援使用者自定義的產品線

在 ChengYing 中,是以元件包的維度部署服務,比如一個 zookeeper 的產品包,會預先定義好 ZK 的包上傳到 ChengYing 的系統當中,再去選擇要部署的服務以及給 ZK 編排部署機器,以此完成部署。

對於初學者來說,當需要部署多個服務,這些服務又有順序依賴關係時,會不清楚部署的先後順序,從而導致部署非常吃力。因此 ChengYing 支援使用 DAG(有向無環圖)進行定義靈活可配的元件包部署順序。目的是為了讓熟悉和不熟悉的人都能夠透過預定義產品線的形式同時部署多個元件包,從而大大提高部署效率。

● 支援服務的親和性配置

根據元件包中不同服務的型別,結合主機角色資訊自動進行服務主機編排。在接入主機到 ChengYing 系統中時,支援給主機打上對應的標籤即角色,相應角色的元件會部署到相應角色的機器上。

● 一鍵自動部署元件包

基於元件包手動部署,同樣的入口,選擇不同的產品線部署方式之後,可一鍵按需迅速完成所需要的多個元件包的同時部署,提高部署效率。

產品線部署設計

接下來,透過程式碼設計的角度看看 ChengYing 對產品線部署是如何進行技術設計的。

什麼是 DAG

DAG (有向無環圖,Directed Acyclic Graph)是一種常用資料結構,僅就 DAG 而言,它已經在我們日常的各種工具中存在,如依賴系統、資料流系統、資料視覺化等。當我們從任務編排的角度來看,DAG 面向普通人術語叫作工作流(Workflow)。

在圖論中, 如果一個有向圖無法從任意頂點出發經過若干條邊回到該點, 則這個圖就是一個有向無環圖 (DAG 圖)。

file

ChengYing 產品線部署設計的核心就是給定一組任務,按照自定義的方式安排它們的執行順序,即 DAG。

產品線 DAG 定義

預先定義某一條產品線中每一個元件包的部署順序,將其關係使用 DAG 的方式定義為 json 檔案,平臺自動解析 json 得到部署順序從而實現自動部署的效果。

file· product_line_name: 產品線名稱(可預定義)

· product_line_version: 產品線版本(可預定義)

· product_serial: 元件包部署順序(上圖說明 DTBase 的 dependee 為0,表示沒有依賴;DTFront 的 dependee 為1,表示依賴 id 為1的元件包)

產品線 DAG 原始碼分析

如果要對複雜物件排序的話,該排序必須包含 Len,Swap,Less 這三個方法。

file

下面這段原始碼是 DAG 執行的核心邏輯,對於原始碼的具體解析可以前往影片進行觀看:

原始碼本身已經全部開源,可以前往 ChengYing 的 Github 進行學習:

file

服務親和性配置

服務親和性的定義指以預選、優選、選定的機制完成將每個新的服務繫結至為其選出的目標節點上。

在 k8s 中,支援節點和 Pod 兩個層級的親和性、反親和性排程,透過配置親和與反親和的規則,允許指定硬性限制和軟性限制,即偏好。

比如將前端的 Pod 和後端的 Pod 部署在一起,這樣可以減少網路延遲。或是某一型別的服務部署在某一型別的節點上,不同的應用部署在不同的節點上等。

定義節點親和性規則時有兩種型別的節點親和性規則 :硬親和性 required 和軟親和性 preferred。硬親和性實現的是強制性規則,它是 Pod 排程時必須要滿足的規則,而在不存在滿足規則的節點時 , Pod 物件會被置為 Pending 狀態。

而軟親和性規則實現的是一種柔性排程限制,它傾向於將 Pod 物件執行於某類特定的節點之上,而排程器也將盡量滿足此需求,但在無法滿足排程需求時它將退而求其次地選擇一個不匹配規則的節點。

類似於 k8s,ChengYing 中的服務親和性和反親和性也進行了相應的欄位設定:

· orchestration.affinity:陣列,自動編排角色親和性【可選】, 但是沒有該欄位的話,該服務將無法參與自動編排

· orchestration.anti_affinity:陣列,自動編排角色反親和性 【可選】

使用場景

下面來為大家介紹如何在 ChengYing 中使用產品線的部署。

設定主機角色

在【部署中心】-【叢集管理】-【叢集詳情】中,可以給節點編輯對應角色。

file

上傳產品線

角色完成定義之後,就可以在【部署中心】進行部署。支援自動部署(基於產品線順序部署多個元件包,支援主機角色自動編排),手動部署(基於單個元件包部署,支援自定義主機編排)。

只要把產品線和產品包的親和性與反親和性全部定義好之後,開發者進入這個頁面會非常一目瞭然,每一個節點上分配了哪些服務,先後進行怎樣的部署等,一鍵就可以完成這些繁瑣的工作,極大提升部署效率。

file file

影片課程&PPT獲取

影片課程:

課件獲取:

《資料治理行業實踐白皮書》下載地址:


《數棧V6.0產品白皮書》下載地址:


想了解更多有關袋鼠雲大資料產品、行業解決方案、客戶案例的朋友,瀏覽袋鼠雲官網:https://www.dtstack.com/?src=szitpub


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995740/viewspace-2950353/,如需轉載,請註明出處,否則將追究法律責任。

相關文章