Improvement plan for obdiag 3.0 framework - obdiag 3.0框架改进方案 #510
wayyoungboy
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
obdiag 3.0框架改进方案
本方案主要涉及在3.0版本上对于整体架构的改进方案。
3.0的改造代码,统一合并到3.0.0-dev分支,在2.6.0版本稳定后再合入master。
obdiag整体架构设计
obdiag架构设计,架构本身以分层架构触发,但是由于后期逐步壮大的功能设计,因此需要对2.x版本中引入的兼容性设计进行规范,主要分为如下部分:
obdiag整体代码结构设计
2.1 总体代码架构设计
调用obdiag指令时,环境限制
往期版本使用时未限制obdiag的指令调用的环境,因此导致~/.obdiag目录文件庞大
部分关键节点的返回值以及异常处理规范
对于异常处理目前有多个实现风格,为了实现准确的异常定位以及统一返回值处理,设定本规范。
handler
plugins
P.S. 此大类存在争议,按程序框架设计上,理论上应该直接使用handle的方式来实现功能调用,但是本身obdiag是内核+外挂实现的方式,因此可能存在循环依赖的场景。特引入plugins结构。
plugins是对于handler的抽象实现,用于obdiag其他功能对于各个handler的调用,方便开发者进行调用。同时在后期可能引入非主功能的常用插件。目前已有样式参考rca中的gather插件。
外挂脚本管理问题
obdiag上部分不同的功能使用了同样的外挂方案,如python脚本的调用,yaml的流程编排设计。
python脚本的调用统一
yaml脚本公用字段统一
yaml脚本由于各个功能的方向不同,统一所有的字段并不合理,但是对于同一含义的字段,理论上不适合使用多种代称进行命名,因此需要进行规范。
外挂文件路径(待定)
目前外挂文件源码位置为{源代码根目录}/handler/{功能名}/xxx
这对obdiag的外挂文件同步策略来说是不友好的,需要每次进行同步时都需要匹配对应的文件夹名
context引用不完全
从2.x上obdiag引入了context方案,但是部分方法出于兼容性考虑未使用context进行引入,这导致部分场景的配置无法深入实现。
配置文件加载统一
目前obdiag的配置文件数据分为内核配置>文件配置>可选指令配置三份。三者初始化按优先级覆盖。
集群配置生成分为obdiag config 指令生成,自行编写,可选指令配置(一次性)三种。载入会预载入内核模板。计划取消内核模板。
计划将按统一方法进行规整,优化调度的方式,压入context(已有)
check优化改造
analyze log&gather log效率过低
oms组件支持
ssh_client治理
SQL诊断对接operator
Beta Was this translation helpful? Give feedback.
All reactions