-
Notifications
You must be signed in to change notification settings - Fork 35
BIP 2: Optimize Notebook scripts
hellozepp edited this page Apr 23, 2022
·
2 revisions
Status: MERGED
Author: @AdmondGuo
Contributor: @AdmondGuo
Date: 2022.03.29
Issue: #115
Pull Requests: N/A
目前 notebook 脚本不够完善,用户在使用时存在以下问题:
- 没有进行环境检查,包括 jvm、mysql、Byzer-lang 和可能存在的 redis
- 程序运行参数写死,如果需要改动必须更改脚本,引入了额外的问题
- 用户在 notebook 运行前必须手动创建数据库
- 日志信息不够清晰
优化 notebook 脚本,达成如下结果:
- 启动时进行环境检查
- 读取配置文件中的启动参数
- 自动创建数据库
- 输出不同级别的日志
-
./build
目录下的脚本 -
./conf
目录下的配置文件
打包后,项目目录结构如下:
Byzer-Notebook-{version}
├── CHANGELOG.md
├── VERSION
├── bin
│ ├── bootstrap.sh
│ ├── check-1000-java.sh
│ ├── check-1100-mysql.sh
│ ├── check-1200-engine.sh
│ ├── check-1300-redis.sh
│ ├── check-1400-ports.sh
│ ├── check-env.sh ## 检测环境
│ ├── get-properties.sh ## 获取配置参数
│ ├── header.sh ## 常用配置
│ ├── kill-process-tree.sh
│ ├── log-rotate-cron.sh
│ ├── notebook.sh
│ ├── rotate-logs.sh ## 日志滚动
│ └── setenv.sh ## 设置 jvm 参数
├── commit_SHA1
├── commit_SHA1.frontend
├── conf
│ ├── notebook-log4j.properties
│ ├── notebook-tools-log4j.properties
│ └── notebook.properties
├── logs
│ ├── access_log.log
│ ├── notebook.error
│ ├── notebook.log
│ └── notebook.out
├── notebook-console.jar
├── pid
└── sample
所有 shell 脚本都在 ./bin
目录下。
命令入口,在这里产生 err 和 out 日志。
notebook.sh
调用 bootstrap.sh
实现具体的启动逻辑。
可以如下使用它:
- 启动:notebook.sh start
- 停止:notebook.sh stop
- 重启:notebook.sh restart
bootstrap.sh
包含实际的 start/stop 逻辑。
- start 在启动应用前会根据配置检测环境,并开启日志归档
- stop 停止应用并去除日志定时归档
- restart 先 stop 后 start
在 notebook.sh
start 方法中,调用了 check-env.sh
进行环境检查。
主要进行如下检查:
- mysql 检查
- java 检查
- byzer engine 检查
- 当前是否存在已有进程
任何一步检测出环境问题都会有错误提示。
参考 Apache Kylin 的启动脚本设计,通过 shell 脚本实现。
- 测试是否能检测出环境问题
- 测试是否能正确创建数据库,无法创建时给出合理的提示
- 测试是否能正确 启动/停止/重启 应用
- 测试是否能生成多份不同级别日志