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

来源:https://www.cnblogs.com/DTinsight/archive/2023/05/06/17376680.html
-Advertisement-
Play Games

在之前的內容當中,我們為大家介紹過 ChengYing 的安裝原理、產品包製作等內容,本篇就延續之前的內容,和大家展開聊聊 ChengYing 產品線部署相關的設計。幫助對「一站式全自動化全生命周期大數據平臺運維管家 ChengYing」感興趣的開發者更好地瞭解和使用 ChengYing。 產品線部 ...


在之前的內容當中,我們為大家介紹過 ChengYing 的安裝原理、產品包製作等內容,本篇就延續之前的內容,和大家展開聊聊 ChengYing 產品線部署相關的設計。幫助對「一站式全自動化全生命周期大數據平臺運維管家 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 執行的核心邏輯,對於源碼的具體解析可以前往視頻進行觀看:

https://www.bilibili.com/video/BV1KV4y1Q7KP/?spm_id_from=333.999.0.0

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

https://github.com/DTStack/chengying

file

服務親和性配置

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

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

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

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

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

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

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

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

使用場景

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

設置主機角色

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

file

上傳產品線

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

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

file
file

視頻課程&PPT獲取

視頻課程:

https://www.bilibili.com/video/BV1KV4y1Q7KP/?spm_id_from=333.999.0.0

課件獲取:

https://www.dtstack.com/resources/1037

《數棧產品白皮書》:https://www.dtstack.com/resources/1004?src=szsm

《數據治理行業實踐白皮書》下載地址:https://www.dtstack.com/resources/1001?src=szsm

想瞭解或咨詢更多有關袋鼠雲大數據產品、行業解決方案、客戶案例的朋友,瀏覽袋鼠雲官網:https://www.dtstack.com/?src=szbky

同時,歡迎對大數據開源項目有興趣的同學加入「袋鼠雲開源框架釘釘技術qun」,交流最新開源技術信息,qun號碼:30537511,項目地址:https://github.com/DTStack


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 0、由於M系列晶元是arm架構,在使用brew安裝node時都是arm的node,但是[email protected]版本中不支持arm架構的出現如下報錯: Error: Node Sass does not yet support your current environment: OS X Un ...
  • 上一章我們認識了etcd,簡單的介紹了 etcd 的基礎概念,但是理解起來還是比較抽象的。這一章我們就一起來部署下 etcd 。這樣可以讓我們對 etcd 有更加確切的認識。 1、etcd單實例部署 對於平常的學習,其實搭建一個單機節點是夠了的。接下來就講講怎麼搭建單機節點。 本次部署是在 cent ...
  • 常用的sql語句彙總 1、獲取所有表名、表信息 裡面有表註釋 | 資料庫種類 | sql | 備註 | | | | | | mysql | -- 獲取所有表名、視圖名show tables-- 獲取 dev_test_data資料庫 所有表、視圖信息select * from information ...
  • 說明:本文的所有步驟不適用於生產環境,僅用於個人測試環境的快速部署和學習,下述操作過程在Oracle Linux 7.9上安裝Oracle 11.2.0.4單實例為例。 1 安裝環境檢查 安裝環境的檢查可以參考官方文檔Oracle Database Quick Installation Guide ...
  • MySQL資料庫恢復到指定時間點時,我們必須通過MySQL全備+MySQL增量備份(可選)+MySQL的二進位日誌(binlog)進行重放來恢復到指定時間點,實際的生產環境中,可能一段時間內生成了多個二進位日誌文件(binlog), MySQL本身不會存儲二進位日誌文件(binlog)的開始時間和結 ...
  • 摘要:在使用字元串處理函數時,有時會出現非預期結果的場景。在排除使用問題後,應該從encoding和數據本身開始排查。 本文分享自華為雲社區《GaussDB(DWS)字元串處理函數返回錯誤結果集排查》,作者: -CHEN111- 。 在使用字元串處理函數時,有時會出現非預期結果的場景。在排除使用問題 ...
  • 藉助於 mysqldump 命令可以進行資料庫的備份。 用法: mysqldump [OPTIONS] database [tables] 或:mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] 或:mysqldump [OPTION ...
  • 本文分享自天翼雲開發者社區《如何計算真實的資料庫成本》 作者:王****乾 在雲計算占主導地位之前,計算資料庫的成本是一個非常簡單的等式:軟體成本+硬體成本=資料庫成本。如果你選擇了一個開源產品,軟體成本可能會消失。雖然雲計算已經從根本上改變了我們使用和部署軟體的方式,但仍有太多人在使用這種過時的計 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...