共计 2558 个字符,预计需要花费 7 分钟才能阅读完成。
在之前的内容当中,咱们为大家介绍过 ChengYing 的装置原理、产品包制作等内容,本篇就连续之前的内容,和大家开展聊聊 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 执行的外围逻辑,对于源码的具体解析能够返回视频进行观看:
https://www.bilibili.com/video/BV1KV4y1Q7KP/?spm_id_from=333….
源码自身曾经全副开源,能够返回 ChengYing 的 Github 进行学习:
https://github.com/DTStack/chengying
服务亲和性配置
服务亲和性的定义指以预选、优选、选定的机制实现将每个新的服务绑定至为其选出的指标节点上。
在 k8s 中,反对节点和 Pod 两个层级的亲和性、反亲和性调度,通过配置亲和与反亲和的规定,容许指定硬性限度和软性限度,即偏好。
比方将前端的 Pod 和后端的 Pod 部署在一起,这样能够缩小网络提早。或是某一类型的服务部署在某一类型的节点上,不同的利用部署在不同的节点上等。
定义节点亲和性规定时有两种类型的节点亲和性规定:硬亲和性 required 和软亲和性 preferred。硬亲和性实现的是强制性规定,它是 Pod 调度时必须要满足的规定,而在不存在满足规定的节点时,Pod 对象会被置为 Pending 状态。
而软亲和性规定实现的是一种柔性调度限度,它偏向于将 Pod 对象运行于某类特定的节点之上,而调度器也将尽量满足此需要,但在无奈满足调度需要时它将退而求其次地抉择一个不匹配规定的节点。
相似于 k8s,ChengYing 中的服务亲和性和反亲和性也进行了相应的字段设置:
· orchestration.affinity:数组,主动编排角色亲和性【可选】,然而没有该字段的话,该服务将无奈参加主动编排
· orchestration.anti_affinity:数组,主动编排角色反亲和性【可选】
应用场景
上面来为大家介绍如何在 ChengYing 中应用产品线的部署。
设置主机角色
在【部署核心】-【集群治理】-【集群详情】中,能够给节点编辑对应角色。
上传产品线
角色实现定义之后,就能够在【部署核心】进行部署。反对主动部署(基于产品线程序部署多个组件包,反对主机角色主动编排),手动部署(基于单个组件包部署,反对自定义主机编排)。
只有把产品线和产品包的亲和性与反亲和性全副定义好之后,开发者进入这个页面会十分高深莫测,每一个节点上调配了哪些服务,先后进行怎么的部署等,一键就能够实现这些繁琐的工作,极大晋升部署效率。
视频课程 &PPT 获取
视频课程:
https://www.bilibili.com/video/BV1KV4y1Q7KP/?spm_id_from=333….
课件获取:
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=szsf
同时,欢送对大数据开源我的项目有趣味的同学退出「袋鼠云开源框架钉钉技术 qun」,交换最新开源技术信息,qun 号码:30537511,我的项目地址:https://github.com/DTStack