一文詳解如何在 ChengYing 中透過產品線部署一鍵提升效率
在之前的內容當中,我們為大家介紹過 的安裝原理、產品包製作等內容,本篇就延續之前的內容,和大家展開聊聊 ChengYing 產品線部署相關的設計。幫助對 感興趣的開發者更好地瞭解和使用 ChengYing。
產品線部署簡介
首先對 ChengYing 的產品線部署進行一個“自我介紹”,共分為三個部分:
● 支援使用者自定義的產品線
在 ChengYing 中,是以元件包的維度部署服務,比如一個 zookeeper 的產品包,會預先定義好 ZK 的包上傳到 ChengYing 的系統當中,再去選擇要部署的服務以及給 ZK 編排部署機器,以此完成部署。
對於初學者來說,當需要部署多個服務,這些服務又有順序依賴關係時,會不清楚部署的先後順序,從而導致部署非常吃力。因此 ChengYing 支援使用 DAG(有向無環圖)進行定義靈活可配的元件包部署順序。目的是為了讓熟悉和不熟悉的人都能夠透過預定義產品線的形式同時部署多個元件包,從而大大提高部署效率。
● 支援服務的親和性配置
根據元件包中不同服務的型別,結合主機角色資訊自動進行服務主機編排。在接入主機到 ChengYing 系統中時,支援給主機打上對應的標籤即角色,相應角色的元件會部署到相應角色的機器上。
● 一鍵自動部署元件包
基於元件包手動部署,同樣的入口,選擇不同的產品線部署方式之後,可一鍵按需迅速完成所需要的多個元件包的同時部署,提高部署效率。
產品線部署設計
接下來,透過程式碼設計的角度看看 ChengYing 對產品線部署是如何進行技術設計的。
什麼是 DAG
DAG (有向無環圖,Directed Acyclic Graph)是一種常用資料結構,僅就 DAG 而言,它已經在我們日常的各種工具中存在,如依賴系統、資料流系統、資料視覺化等。當我們從任務編排的角度來看,DAG 面向普通人術語叫作工作流(Workflow)。
在圖論中, 如果一個有向圖無法從任意頂點出發經過若干條邊回到該點, 則這個圖就是一個有向無環圖 (DAG 圖)。
ChengYing 產品線部署設計的核心就是給定一組任務,按照自定義的方式安排它們的執行順序,即 DAG。
產品線 DAG 定義
預先定義某一條產品線中每一個元件包的部署順序,將其關係使用 DAG 的方式定義為 json 檔案,平臺自動解析 json 得到部署順序從而實現自動部署的效果。
· product_line_name: 產品線名稱(可預定義)
· product_line_version: 產品線版本(可預定義)
· product_serial: 元件包部署順序(上圖說明 DTBase 的 dependee 為0,表示沒有依賴;DTFront 的 dependee 為1,表示依賴 id 為1的元件包)
產品線 DAG 原始碼分析
如果要對複雜物件排序的話,該排序必須包含 Len,Swap,Less 這三個方法。
下面這段原始碼是 DAG 執行的核心邏輯,對於原始碼的具體解析可以前往影片進行觀看:
原始碼本身已經全部開源,可以前往 ChengYing 的 Github 進行學習:
服務親和性配置
服務親和性的定義指以預選、優選、選定的機制完成將每個新的服務繫結至為其選出的目標節點上。
在 k8s 中,支援節點和 Pod 兩個層級的親和性、反親和性排程,透過配置親和與反親和的規則,允許指定硬性限制和軟性限制,即偏好。
比如將前端的 Pod 和後端的 Pod 部署在一起,這樣可以減少網路延遲。或是某一型別的服務部署在某一型別的節點上,不同的應用部署在不同的節點上等。
定義節點親和性規則時有兩種型別的節點親和性規則 :硬親和性 required 和軟親和性 preferred。硬親和性實現的是強制性規則,它是 Pod 排程時必須要滿足的規則,而在不存在滿足規則的節點時 , Pod 物件會被置為 Pending 狀態。
而軟親和性規則實現的是一種柔性排程限制,它傾向於將 Pod 物件執行於某類特定的節點之上,而排程器也將盡量滿足此需求,但在無法滿足排程需求時它將退而求其次地選擇一個不匹配規則的節點。
類似於 k8s,ChengYing 中的服務親和性和反親和性也進行了相應的欄位設定:
· orchestration.affinity:陣列,自動編排角色親和性【可選】, 但是沒有該欄位的話,該服務將無法參與自動編排
· orchestration.anti_affinity:陣列,自動編排角色反親和性 【可選】
使用場景
下面來為大家介紹如何在 ChengYing 中使用產品線的部署。
設定主機角色
在【部署中心】-【叢集管理】-【叢集詳情】中,可以給節點編輯對應角色。
上傳產品線
角色完成定義之後,就可以在【部署中心】進行部署。支援自動部署(基於產品線順序部署多個元件包,支援主機角色自動編排),手動部署(基於單個元件包部署,支援自定義主機編排)。
只要把產品線和產品包的親和性與反親和性全部定義好之後,開發者進入這個頁面會非常一目瞭然,每一個節點上分配了哪些服務,先後進行怎樣的部署等,一鍵就可以完成這些繁瑣的工作,極大提升部署效率。
影片課程&PPT獲取
影片課程:
課件獲取:
《資料治理行業實踐白皮書》下載地址:
《數棧V6.0產品白皮書》下載地址:
想了解更多有關袋鼠雲大資料產品、行業解決方案、客戶案例的朋友,瀏覽袋鼠雲官網:https://www.dtstack.com/?src=szitpub
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995740/viewspace-2950353/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何透過華為分析提升產品留存率?
- 一文詳解AI模型部署策略AI模型
- 一文講透產品經理如何用好ChatGPTChatGPT
- 一文詳解千載·全棧信創主機安全產品全棧
- 透過WHQL的產品如何在微軟官網進行查詢微軟
- 透過打包 Flash Attention 來提升 Hugging Face 訓練效率Hugging Face
- 如何透過個性化功能提升專案管理效率?專案管理
- 鐳速Outlook產品:解除附件限制,提升專案效率
- 看板管理解析:如何透過看板提升專案管理效率?專案管理
- 詳解Dart中如何透過註解生成程式碼Dart
- 通用模板解決方案,提升影片生產效率
- 一文詳解|影響成長的關鍵思考
- 如何在 12.2.0.1 透過 dblink 線上複製 PDB
- 如何運用DMAIC提升空調組裝線生產效率?AI
- 如何透過線上CRM提升企業競爭力?
- 一文詳解 OpenGL ES 3.x 渲染管線
- 【Python】透過Cython提升效能Python
- 一文詳解Kafka APIKafkaAPI
- 一文詳解 Netty 元件Netty元件
- 怎樣透過實驗設計(DOE)最佳化生產效率?
- 產品經理如何用專案管理技能提升交付質量與效率?專案管理
- 見證創新精進 綠盟科技SIEM/SOC類產品透過中國信通院產品評測
- 一文讀透HTTP的長連線和短連線HTTP
- 透過Docker Compose部署GitLab和GitLab Runner(一)DockerGitlab
- 提高企業產品交付效率系列(1)—— 企業應用一鍵安裝和升級
- 一文詳解分散式 ID分散式
- 一文詳解 ARP 協議協議
- 透過 Helm Chart 部署 Easysearch
- 提升專案執行效率的關鍵利器
- 要想讓955≥996≥007,提升效率是關鍵!996
- Java開發提升十倍生產力:Idea遠端一鍵部署springboot到DockerJavaIdeaSpring BootDocker
- 三分鐘帶你瞭解一站式大資料平臺運維管家 ChengYing 產品包製作大資料運維
- 一文詳解如何在基於webpack5的react專案中使用svgWebReactSVG
- Excel表格裡滑鼠雙擊的用法技巧,透過滑鼠雙擊提升Excel表格使用效率Excel
- Slack如何透過產品思維打造內部Devops平臺?dev
- 蘋果電腦上神奇的Option鍵,巧用option鍵提升效率蘋果
- CRM透過四點提高辦公效率
- 一文詳解微服務架構微服務架構