在之前的內(nèi)容當(dāng)中,我們?yōu)榇蠹医榻B過 ChengYing 的安裝原理、產(chǎn)品包制作等內(nèi)容,本篇就延續(xù)之前的內(nèi)容,和大家展開聊聊 ChengYing 產(chǎn)品線部署相關(guān)的設(shè)計(jì)。幫助對(duì)「一站式全自動(dòng)化全生命周期大數(shù)據(jù)平臺(tái)運(yùn)維管家 ChengYing」感興趣的開發(fā)者更好地了解和使用 ChengYing。
產(chǎn)品線部署簡(jiǎn)介
首先對(duì) ChengYing 的產(chǎn)品線部署進(jìn)行一個(gè)“自我介紹”,共分為三個(gè)部分:
● 支持用戶自定義的產(chǎn)品線
在 ChengYing 中,是以組件包的維度部署服務(wù),比如一個(gè) zookeeper 的產(chǎn)品包,會(huì)預(yù)先定義好 ZK 的包上傳到 ChengYing 的系統(tǒng)當(dāng)中,再去選擇要部署的服務(wù)以及給 ZK 編排部署機(jī)器,以此完成部署。
對(duì)于初學(xué)者來說,當(dāng)需要部署多個(gè)服務(wù),這些服務(wù)又有順序依賴關(guān)系時(shí),會(huì)不清楚部署的先后順序,從而導(dǎo)致部署非常吃力。因此 ChengYing 支持使用 DAG(有向無環(huán)圖)進(jìn)行定義靈活可配的組件包部署順序。目的是為了讓熟悉和不熟悉的人都能夠通過預(yù)定義產(chǎn)品線的形式同時(shí)部署多個(gè)組件包,從而大大提高部署效率。
● 支持服務(wù)的親和性配置
根據(jù)組件包中不同服務(wù)的類型,結(jié)合主機(jī)角色信息自動(dòng)進(jìn)行服務(wù)主機(jī)編排。在接入主機(jī)到 ChengYing 系統(tǒng)中時(shí),支持給主機(jī)打上對(duì)應(yīng)的標(biāo)簽即角色,相應(yīng)角色的組件會(huì)部署到相應(yīng)角色的機(jī)器上。
● 一鍵自動(dòng)部署組件包
基于組件包手動(dòng)部署,同樣的入口,選擇不同的產(chǎn)品線部署方式之后,可一鍵按需迅速完成所需要的多個(gè)組件包的同時(shí)部署,提高部署效率。
產(chǎn)品線部署設(shè)計(jì)
接下來,通過代碼設(shè)計(jì)的角度看看 ChengYing 對(duì)產(chǎn)品線部署是如何進(jìn)行技術(shù)設(shè)計(jì)的。
什么是 DAG
DAG (有向無環(huán)圖,Directed Acyclic Graph)是一種常用數(shù)據(jù)結(jié)構(gòu),僅就 DAG 而言,它已經(jīng)在我們?nèi)粘5母鞣N工具中存在,如依賴系統(tǒng)、數(shù)據(jù)流系統(tǒng)、數(shù)據(jù)可視化等。當(dāng)我們從任務(wù)編排的角度來看,DAG 面向普通人術(shù)語叫作工作流(Workflow)。
在圖論中, 如果一個(gè)有向圖無法從任意頂點(diǎn)出發(fā)經(jīng)過若干條邊回到該點(diǎn), 則這個(gè)圖就是一個(gè)有向無環(huán)圖 (DAG 圖)。
ChengYing 產(chǎn)品線部署設(shè)計(jì)的核心就是給定一組任務(wù),按照自定義的方式安排它們的執(zhí)行順序,即 DAG。
產(chǎn)品線 DAG 定義
預(yù)先定義某一條產(chǎn)品線中每一個(gè)組件包的部署順序,將其關(guān)系使用 DAG 的方式定義為 json 文件,平臺(tái)自動(dòng)解析 json 得到部署順序從而實(shí)現(xiàn)自動(dòng)部署的效果。
· product_line_name: 產(chǎn)品線名稱(可預(yù)定義)
· product_line_version: 產(chǎn)品線版本(可預(yù)定義)
· product_serial: 組件包部署順序(上圖說明 DTBase 的 dependee 為0,表示沒有依賴;DTFront 的 dependee 為1,表示依賴 id 為1的組件包)
產(chǎn)品線 DAG 源碼分析
如果要對(duì)復(fù)雜對(duì)象排序的話,該排序必須包含 Len,Swap,Less 這三個(gè)方法。
下面這段源碼是 DAG 執(zhí)行的核心邏輯,對(duì)于源碼的具體解析可以前往視頻進(jìn)行觀看:
https://www.bilibili.com/video/BV1KV4y1Q7KP/?spm_id_from=333.999.0.0
源碼本身已經(jīng)全部開源,可以前往 ChengYing 的 Github 進(jìn)行學(xué)習(xí):
https://github.com/DTStack/chengying
服務(wù)親和性配置
服務(wù)親和性的定義指以預(yù)選、優(yōu)選、選定的機(jī)制完成將每個(gè)新的服務(wù)綁定至為其選出的目標(biāo)節(jié)點(diǎn)上。
在 k8s 中,支持節(jié)點(diǎn)和 Pod 兩個(gè)層級(jí)的親和性、反親和性調(diào)度,通過配置親和與反親和的規(guī)則,允許指定硬性限制和軟性限制,即偏好。
比如將前端的 Pod 和后端的 Pod 部署在一起,這樣可以減少網(wǎng)絡(luò)延遲。或是某一類型的服務(wù)部署在某一類型的節(jié)點(diǎn)上,不同的應(yīng)用部署在不同的節(jié)點(diǎn)上等。
定義節(jié)點(diǎn)親和性規(guī)則時(shí)有兩種類型的節(jié)點(diǎn)親和性規(guī)則 :硬親和性 required 和軟親和性 preferred。硬親和性實(shí)現(xiàn)的是強(qiáng)制性規(guī)則,它是 Pod 調(diào)度時(shí)必須要滿足的規(guī)則,而在不存在滿足規(guī)則的節(jié)點(diǎn)時(shí) , Pod 對(duì)象會(huì)被置為 Pending 狀態(tài)。
而軟親和性規(guī)則實(shí)現(xiàn)的是一種柔性調(diào)度限制,它傾向于將 Pod 對(duì)象運(yùn)行于某類特定的節(jié)點(diǎn)之上,而調(diào)度器也將盡量滿足此需求,但在無法滿足調(diào)度需求時(shí)它將退而求其次地選擇一個(gè)不匹配規(guī)則的節(jié)點(diǎn)。
類似于 k8s,ChengYing 中的服務(wù)親和性和反親和性也進(jìn)行了相應(yīng)的字段設(shè)置:
· orchestration.affinity:數(shù)組,自動(dòng)編排角色親和性【可選】, 但是沒有該字段的話,該服務(wù)將無法參與自動(dòng)編排
· orchestration.anti_affinity:數(shù)組,自動(dòng)編排角色反親和性 【可選】
使用場(chǎng)景
下面來為大家介紹如何在 ChengYing 中使用產(chǎn)品線的部署。
設(shè)置主機(jī)角色
在【部署中心】-【集群管理】-【集群詳情】中,可以給節(jié)點(diǎn)編輯對(duì)應(yīng)角色。
上傳產(chǎn)品線
角色完成定義之后,就可以在【部署中心】進(jìn)行部署。支持自動(dòng)部署(基于產(chǎn)品線順序部署多個(gè)組件包,支持主機(jī)角色自動(dòng)編排),手動(dòng)部署(基于單個(gè)組件包部署,支持自定義主機(jī)編排)。
只要把產(chǎn)品線和產(chǎn)品包的親和性與反親和性全部定義好之后,開發(fā)者進(jìn)入這個(gè)頁面會(huì)非常一目了然,每一個(gè)節(jié)點(diǎn)上分配了哪些服務(wù),先后進(jìn)行怎樣的部署等,一鍵就可以完成這些繁瑣的工作,極大提升部署效率。
視頻課程&PPT獲取
視頻課程:
https://www.bilibili.com/video/BV1KV4y1Q7KP/?spm_id_from=333.999.0.0
課件獲?。?/p>
https://www.dtstack.com/resources/1037
《數(shù)棧產(chǎn)品白皮書》:https://www.dtstack.com/resources/1004?src=szsm
《數(shù)據(jù)治理行業(yè)實(shí)踐白皮書》下載地址:https://www.dtstack.com/resources/1001?src=szsm
想了解或咨詢更多有關(guān)袋鼠云大數(shù)據(jù)產(chǎn)品、行業(yè)解決方案、客戶案例的朋友,瀏覽袋鼠云官網(wǎng):https://www.dtstack.com/?src=szbky文章來源:http://www.zghlxwxcb.cn/news/detail-434862.html
同時(shí),歡迎對(duì)大數(shù)據(jù)開源項(xiàng)目有興趣的同學(xué)加入「袋鼠云開源框架釘釘技術(shù)qun」,交流最新開源技術(shù)信息,qun號(hào)碼:30537511,項(xiàng)目地址:https://github.com/DTStack文章來源地址http://www.zghlxwxcb.cn/news/detail-434862.html
到了這里,關(guān)于一文詳解如何在 ChengYing 中通過產(chǎn)品線部署一鍵提升效率的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!