You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Xinwei Xiong
b2ea4ce2a3
|
1 year ago | |
---|---|---|
.. | ||
cmd | 1 year ago | |
internal/imctl | 1 year ago | |
README.md | 1 year ago | |
go.mod | 1 year ago | |
go.sum | 1 year ago |
README.md
OpenIM CTL 模块
为什么设计这个模块
OpenIM 后期功能扩展,不能总依赖一些单独的模块,而是整合到 Imctl 中。
测试同学做自动化测试或者是 e2e 测试,接口测试等等,每一次调用 API 很麻烦,用 imctl 的方式为 api 的调用提供了方便
和 scripts 深度交互,同样减少了 IM 本身的耦合度,提高了 IM 的可扩展性。
功能设计
-
用户管理:例如,添加、删除或禁用用户账户。
-
系统监控:查看在线用户数量、消息传送速率等关键性能指标。
-
调试:如查看日志、调整日志级别、查看系统状态等。
-
配置管理:更新系统设置、管理插件或模块等。
-
数据管理:备份和恢复数据、导入和导出数据等。
-
系统维护:例如,执行更新、重启服务、进行维护模式等。
设计思路
参考 kubectl, 方便 开发、运维、测试同学使用系统功能,并且实现自动化功能。
自动化设计思路:
- 为后面的扩展子模块或者子命令提供自动化的功能,提供子命令
imctl new
自动创建新的子命令 - 以通过 imctl 对用户、密钥和策略进行CURD操作
- 设置 imctl 自动补全脚本
- 版本管理,问题:https://github.com/OpenIMSDK/Open-IM-Server/issues/574,做 IM 自动化的版本管理,查看 IM 系统版本
一些简单的 IM 解决方案可能不需要这样的工具,而复杂、高度定制的系统可能会从中受益。
所以暂时将这个模块放在 tools/imctl 中,后面迁移到 cmd/imctl 中
目录结构设计
为了方便迁移,将 imctl 工程化设计,命令工具放入到 tools/imctl/cmd 中,其他的模块放入到 tools/imctl/pkg 中