-
Notifications
You must be signed in to change notification settings - Fork 8.8k
ctl report
jimin edited this page Dec 21, 2023
·
1 revision
社区名称:Seata 项目名称:实现 Seata 运维 ctl 工具 导师:季敏 学生:董峻铎
- 命令行支持集群节点健康检查状态返回
- 命令行支持配置中心、注册中心配置
- 命令行支持配置项的打印和动态修改
- 命令行支持事务的模拟,用以检查服务是否可用
- 搭建命令行工具 seata-ctl,对接 Seata 集群接口
- 实现 Seata 服务的 Admin API 接口,以支持状态和配置管理
- seata-ctl 支持集群节点的健康状态检查
- seata-ctl 支持配置中心、注册中心配置
- seata-ctl 支持事务模拟,用以检查服务是否可用
| | 内存持久化 | 存储持久化 | 动态修改 | | --- | --- | --- | --- | | 注册中心配置 |
- [x]
| × |
- [x]
| | 配置中心配置 |
- [x]
| × |
- [x]
| | 其他配置项配置 |
- [ ]
|
- [x]
|
- [x]
|
seata.server.max-commit-retry-timeout |
---|
seata.server.max-rollback-retry-timeout |
seata.server.rollback-retry-timeout-unlock-enable |
seata.server.enable-check-auth |
seata.server.retry-dead-threshold |
seata.server.xaer-nota-retry-timeout |
seata.server.undo.log-save-days |
设计:复用 7091
端口服务,每个 seata-server 实现针对各基础组件的增删改查的 HTTP 接口
安全性:由 **7091**
端口服务的身份认证提供 (用户名&密码,JWT 做 auth)
针对 Seata 服务状态、注册中心、配置中心、存储的相关修改,广义上均为“CRUD”语义,因此 Action 进行了对应(get/set/delete),并增加了 reload 用于热加载/更新相关配置。
HTTP 接口形式为:
curl http://host:port/api/v1/admin/{type} -X GET/POST/DELETE
-
seata-server (a.k.a TC)
:扩展7091
端口服务,除了提供 Seata Console 功能之外增加上述 admin 功能 -
seatactl
:新 repo/project,通过7091
端口的认证方式,调用 admin HTTP 接口实现节点管理
- seata-server admin 接口 增强:原有 Java SpringBoot 服务增加 HTTP 接口
- seatactl: 建立新的 repo,采用 Golang 开发,可以跟随 server 节点部署,也可以独立在其他环境使用
- 第三方依赖引入:无
提示单机/集群部署状态。除展示 Server 相关硬件信息外,还包含 UP / DOWN 两种节点状态。
$ seata-ctl -h
seata-ctl is a CLI tool for Seata
Usage:
seata-ctl [flags]
seata-ctl [command]
Available Commands:
version Print the version number of seata-ctl
Flags:
-h, --help help for seata-ctl
--ip string Seata Server IP (default "127.0.0.1")
--password string Password (default "seata")
--port int Seata Server Admin Port (default 7091)
--username string Username (default "seata")
Use "seata-ctl [command] --help" for more information about a command.
$ seata-ctl --ip 127.0.0.1 --port 7091 --username seata --password seata
127.0.0.1:7091 > # input command here
127.0.0.1:7091 > help
Usage:
[command] [flag]
Available Commands:
get Get the resource
help Help about any command
quit Quit the session
reload Reload the configuration
set Set the resource
try Try if this node is ready
127.0.0.1:7091 > get -h
Get the resource
Usage:
get [flags]
get [command]
Available Commands:
config Get the configuration
status Get the status
Flags:
-h, --help help for get
Use "get [command] --help" for more information about a command.
样例1:获取集群状态
127.0.0.1:7091 > get status
+-------+--------------------+--------+
| TYPE | ADDRESS | STATUS |
+-------+--------------------+--------+
| nacos | 192.168.163.1:7091 | ok |
+-------+--------------------+--------+
| nacos | 192.168.163.2:7091 | ok |
+-------+--------------------+--------+
样例2:获取配置 server.servicePort
127.0.0.1:7091 > get config --key server.servicePort
+--------------------+-------+
| KEY | VALUE |
+--------------------+-------+
| server.servicePort | 8091 |
+--------------------+-------+
127.0.0.1:7091 > set -h
Set the resource
Usage:
set [flags]
set [command]
Available Commands:
config Set the configuration
Flags:
-h, --help help for set
Use "set [command] --help" for more information about a command.
样例1:修改注册中心类型
127.0.0.1:7091 > set config --key registry.type --value eureka
+---------------+--------+
| KEY | VALUE |
+---------------+--------+
| registry.type | eureka |
+---------------+--------+
样例2:修改配置中心类型
127.0.0.1:7091 > set config --key config.type --value nacos
+-------------+-------+
| KEY | VALUE |
+-------------+-------+
| config.type | nacos |
+-------------+-------+
样例3:修改配置项 server.undo.logSaveDay
set config --key server.undo.logSaveDays --value 5
+-------------------------+-------+
| KEY | VALUE |
+-------------------------+-------+
| server.undo.logSaveDays | 5 |
+-------------------------+-------+
提交一个样例事务,用以测试服务是否可用:
127.0.0.1:7091 > try begin
Try an example txn successfully, xid=192.168.163.1:8091:522856277732237313
Commit it? (`yes` or `no`, default is `yes`) yes
Commit successfully!
127.0.0.1:7091 > try begin
Try an example txn successfully, xid=192.168.163.1:8091:522856277732237313
Commit it? (`yes` or `no`, default is `yes`) no
Rollback successfully!
退出连接:
127.0.0.1:7091 > quit
Quit the session
- 持续完善 Seata 配置项动态修改,支持更多的配置项可动态配置
- 推进 seata-ctl 支持 Seata 存储的配置运维
- 整合已有的 Seata 脚本(例如 自定义配置上传配置中心 的相关脚本)统一能力至 seata-ctl
在导师季敏的帮助下,项目阶段性通过组织会议对齐进度,可以适时地发现潜在的问题和风险。参与本项目的过程中,我在 CLI 工具的编写上也积累了宝贵的经验,同时对 Seata 分布式事务的一些关键配置运维有了更好的理解。感谢 OSPP 的这次活动,也感谢导师季敏和 Seata 社区的支持和鼓励!