开发这个工具的初衷是为了解决一个问题,问题描述如下:
人工部署环境时,会由于不同的用户无意更改conf中的配置,导致最终结果diff追查时候的问题。
为了解决这个问题,有了这个工具的雏形,具体完成功能如下:
1,创建本地模块目录,包括备份现有目录,创建新目录,由传入conf文件中的配置参数决定。
2,去线上机器下载模块到本地,需要下载的模块目录由参数确定。
3,修改 ‘模块的conf文件’(一些配置参数,因为线上和线下的区别会有差异),根据传入的conf文件修改。
在写代码实现的过程中,跟预期中的架构会有出入,所以做到最后就更改为自己的思路了。后来又跟同事沟通后,还是要按照原思路进行;这个过程让我认识了一个工具架构的重要性,在做的过程中,要考虑可扩展,可升级;只有架构够行,才能在以后升级过程中只改动一小部分,而不影响现有功能。
具体架构如下,首先是存储结构:
工具目录------->模块目录 ------>子模块.. -----> new
------>old
------->old.bak
-------->conf目录 ----->总配置文件
------>模块配置文件 .....
-------->总控脚本
-------->父类脚本(所有模块的共性配置)
-------->子类脚本(继承父类脚本,并加入自己需要实现的功能)
然后代码架构:
总控脚本:传入两个参数,一个是模块名,令一个是模块的配置文件地址
接收参数,创建相应的子类对象
子类脚本:初始化过程中,将配置文件中的参数都解析出来存入对象变量中,并展 开操作
因为工具是为多个模块服务的,所以新添加模块的时候,只需要添加一个子类脚本,并且大部分common的功能都在父类中实现了,所以子类只需传入参数调用即可。
所以说每新增一个模块,只需要在总控脚本中加入一行if判断语句,并添加一个子类脚本即可。不会影响现有模块。
转载于:https://blog.51cto.com/xuxueliang/982789