mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-10-28 06:22:12 +08:00
47 lines
1.7 KiB
Markdown
47 lines
1.7 KiB
Markdown
# OpenIM CTL 模块
|
||
|
||
|
||
## 为什么设计这个模块
|
||
|
||
OpenIM 后期功能扩展,不能总依赖一些单独的模块,而是整合到 Imctl 中。
|
||
|
||
测试同学做自动化测试或者是 e2e 测试,接口测试等等,每一次调用 API 很麻烦,用 imctl 的方式为 api 的调用提供了方便
|
||
|
||
和 scripts 深度交互,同样减少了 IM 本身的耦合度,提高了 IM 的可扩展性。
|
||
|
||
|
||
## 功能设计
|
||
|
||
+ 用户管理:例如,添加、删除或禁用用户账户。
|
||
|
||
+ 系统监控:查看在线用户数量、消息传送速率等关键性能指标。
|
||
|
||
+ 调试:如查看日志、调整日志级别、查看系统状态等。
|
||
|
||
+ 配置管理:更新系统设置、管理插件或模块等。
|
||
|
||
+ 数据管理:备份和恢复数据、导入和导出数据等。
|
||
|
||
+ 系统维护:例如,执行更新、重启服务、进行维护模式等。
|
||
|
||
|
||
## 设计思路
|
||
|
||
参考 kubectl, 方便 开发、运维、测试同学使用系统功能,并且实现自动化功能。
|
||
|
||
**自动化设计思路:**
|
||
1. 为后面的扩展子模块或者子命令提供自动化的功能,提供子命令 `imctl new` 自动创建新的子命令
|
||
2. 以通过 imctl 对用户、密钥和策略进行CURD操作
|
||
3. 设置 imctl 自动补全脚本
|
||
4. 版本管理,问题:https://github.com/OpenIMSDK/Open-IM-Server/issues/574,做 IM 自动化的版本管理,查看 IM 系统版本
|
||
|
||
一些简单的 IM 解决方案可能不需要这样的工具,而复杂、高度定制的系统可能会从中受益。
|
||
|
||
所以暂时将这个模块放在 tools/imctl 中,后面迁移到 cmd/imctl 中
|
||
|
||
|
||
## 目录结构设计
|
||
|
||
为了方便迁移,将 imctl 工程化设计,命令工具放入到 tools/imctl/cmd 中,其他的模块放入到 tools/imctl/pkg 中
|
||
|
||
``` |