应用管理
1. 微应用管理规范
1.1. 微应用安装
需要指定安装路径,这个安装路径可能包括配置文件放哪里,可执行程序放哪里,也可能还有些文件夹需要提前创建,也有些需要提前做的工作,不是简单的几个字段可以描述清楚的。所以我们需要微应用的开发者提供安装脚本: install.sh
1.2. 微应用启动
一般程序启动可能需要带些参数,比如指定配置文件路径,或者其他,加入是个jar包,那可能就需要用java虚拟机启动了。也是个比较复杂的操作,所以,我们需要微应用的开发者提供启动脚本,start.sh
1.3. 微应用停止
在一个微应用需要停止的时候,我们直接将微应用的进程kill 掉是非常不文明的做法。因为他可能有一些收尾工作需要做。所以由微应用的开发者提供一个停止脚本stop.sh
是非常合理的
1.4. 微应用卸载
由于不知道微应用在安装的时候到底在什么地方放了些什么文件,那么我们还是需要开发者提供一个 uninstall.sh
的脚本,便于将微应用清理干净。
1.5. 微应用升级
如果只是stop -> uninstall -> install -> start
,那么就没什么问题了。如果不是的话,最好能给个升级脚本。
另外,因为我们想要监控微应用是否正常工作的话,由微应用的开发者提供一个 check_state.sh
的脚本来判断运行状态是最好的解决方案,否则,我们只能去判断相关的进程是否存活了。
最后,能再给个获取当前微应用版本的脚本get_version.sh
那就更完美了。
嗯,把这些脚本,以及微应用的可执行文件,以及相关的配置文件打包压缩,微应用的管理才能够跑的更加丝滑。
为了保证我们能够成功解压,那么请参考接下来的打包说明:
1.6. 微应用安装包格式规定
自定义安装包,自定义安装包只支持tar 打包,不支持zip以及其他打包工具,打包应用的命令统一为:
统一使用gzip的compress方式,暂不支持xz的compress
应用目录树结构示例:
1.7 脚本说明及示例:
start.sh,stop.sh,install.sh, uninstall.sh, check_state.sh
为必不可少脚本,由应用开发人员自己封装。
脚本权限需更改为rwx(可读可写可执行),若无特殊限定在应用打包前可使用chmod 777 start.sh
将 start.sh的权限设定为-rwxrwxrwx。
现以openwrt ssh服务的dropbear进行相关脚本示例:
start.sh 示例
stop.sh 示例
check_state.sh 示例
1.8 补充说明:
上述示例只为一个example, 如何获取本应用运行的pid由应用开发人员自己来定。
如果使用kill -9来停止应用时,请确保APPNAME唯一性,不会kill其他应用进程,如APPNAME 不可以单纯为python,这样会杀掉所有python相关进程。应用开发人员若用kill来停掉进程时,请确保grep $filter 中$filter为该应用唯一的过滤条件。
check_state.sh用来检测app是否正常运行,由开发人员提供本应用运行状态检测。若为运行状态,将"running"输出到标准输出(stdout)。如果为未运行状态,将"stopped"输出到标准输出。网关远程运维管理程序将获取标准输出,以判断该应用运行状态。
2. 微应用管理错误码
公共错误码
400
请求消息错误,例如消息格式错误等
404
不支持该操作
429
请求太多
500
服务端内部错误,由应用定义
业务错误码
50x – 51x
为App相关指令执行失败的错误码
501
为App文件下载失败状态码
下载链接错误或者网络故障导致文件未下载完成
502
为App文件校验失败状态码
文件下载完成,但执行校验时不匹配,导致校验不通过
503
为App文件解压缩失败,文件未安装规定进行压缩发布
504
为App 安装失败状态码
505
为App 启动失败状态码
506
为App 停止失败状态码
507
为App 重启失败状态码
508
为获取App运行状态失败状态码
一般发生在app应用提供的状态检测脚本不正确
509
为App卸载失败状态码
最后更新于