使用 Trantor 进行本地调试
本地调试可编排服务
功能概述
Trantor 提供了 逻辑流 和 可编排服务 等新的资源, 一定程度上解决了业务逻辑的二开问题. 但是随着业务模块的拆分, 以及业务复杂度的增加, 以及很难在本地运行起一套完整的服务.。
但是线上模块本身难以被直接调试, RemoteDebug 会造成阻塞, 本地一些修改也不太可能频繁的发布到环境上进行调试。
因此在 Trantor 内, 考虑提供本地调试的支持, 基本要求是本地只需要启动需要调试的模块, 而线上的服务则可以使用线上的实例。
下面是一次本地调试的使用路径活动图:

模块环境变量介绍
Debug Key 解释:在统一工作台界面上填写的本次 debug 惟一 key,该值存储在浏览器本地,仅用于区分线上真实调用和其他开发的 debug 流量,新版本本地服务的Debug Key为当前电脑的MAC地址,不建议手工配置。
本地Debug环境变量配置
Debug 相关配置变量主要是以下几个:
| key | value | desc |
|---|---|---|
| LOCAL_DEBUG_ENABLED | boolean | 是否开启 debug 功能,如果开启则填写为 true |
| LOCAL_DEBUG_CLIENT | boolean | 是否为本地调试,如果需要调试且是本地启动的业务模块,则填写为 true |
| LOCAL_DEBUG_CLIENT_TIMEOUT | int | 0.18之后新增配置,调试服务间调用的超时时间,默认20秒超时 |
| LOCAL_DEBUG_SERVER_HOST | String | 线上 debug server host,一般为 ms host |
| LOCAL_DEBUG_SERVER_PORT | int | 线上 debug server port,一般为 7000,可以查看 meta server 环境变量获取 |
| LOCAL_DEBUG_KEY | String | debug 惟一 key,0.18之后,这个变量无需配置,默认使用本机MAC地址 |
其中本地环境变量的入口在这里, 如下配置了 DebugKey 为 my_trade_debug 本地模块

本地其他环境变量配置
本地除了配置Debug相关变量外,还需要配置如下变量,另外本地用的是线上的ms和ds,所以不需要启动底座。
| key | value |
|---|---|
| DUBBO_ENABLED | false |
| DS_PROJECT_ID | 从线上业务模块配置中获取 |
| USER_MOCK | true |
| ACL_MOCK | true |
| DS_HOST | 从线上业务模块配置中获取,0.18之后,当线上DS无法直接访问,可以选择通过MS做为中间代理,去除该配置 |
| DS_PORT | 从线上业务模块配置中获取,0.18之后,当线上DS无法直接访问,可以选择通过MS做为中间代理,去除该配置 |
| META_STORE_HOST | 从线上业务模块配置中获取 |
| META_STORE_PORT | 从线上业务模块配置中获取 |
| REDIS_HOST | 从线上业务模块配置中获取 |
| REDIS_PORT | 从线上业务模块配置中获取 |
| REDIS_PASSWORD | 从线上业务模块配置中获取 |
线上环境配置
一般推荐在开发环境开启该功能;
在部署该环境时,所有业务模块都加上 LOCAL_DEBUG_ENABLED = true ,才会开启 debug server 功能;0.18之后,如果部分服务处理较慢,可以配置 LOCAL_DEBUG_CLIENT_TIMEOUT 调整超时时间;
MS也要加上 LOCAL_DEBUG_ENABLED = true,才会开启 debug server 功能;
线上环境的配置入口在这里

使用步骤
1. 前置配置
线上服务及本地服务需先做好相关配置, 如前文所述。
0.18之后,如果本地服务没有配置LOCAL_DEBUG_KEY,让系统自动生成的话,假设本地服务端口为8080,可以等本地服务启动后可以通过浏览器访问: http://127.0.0.1:8080/api/internal/trantor/debug/getKey (只有配置LOCAL_DEBUG_ENABLED=true,页面才能正常访问)

这里的Key就是我们需要的debug key,这个Key跟我们的MAC一致,正常情况下是不会变更的,只要不换电脑,用这个debug key与本地启动的服务进行联调;
2. 统一工作台触发
如果通过统一工作台触发请求,可以参考这种方式。
在统一工作台左下找到小瓢虫按钮(如果没有,统一工作台需要加开debug模式, 对应环境变量 FRONT_DEBUG=true)

打开 debug 开关并填写你自己的 debug key, 值为本地业务应用配置的 LOCAL_DEBUG_KEY,如这里配置的值为local_debug_key。

按该方式配置完成后, 统一工作台的所有请求, 都会带上一个 http header, 如 trantor-debug-key=local_debug_key
另外该值是存储在本地浏览器中,不会对其他人造成影响。
3. postman 方式触发
如果直接通过 postman 接口触发请求, 可以参考这种方式。
在请求 function/flow 时在 http herader 上加上 trantor-debug-key ,值为本地业务应用配置的 LOCAL_DEBUG_KEY。
效果等同于上面介绍的统一工作台配置的 debug key。
4. 触发断点
- 启动本地业务模块,在需要 debug 的逻辑处设置断点;
- 通过统一工作台或者postman触发线上环境的flow或func,记得查看 http header 是否 加上了 trantor-debug-key;
- 线上在需要调用本地对应的服务时,会路由到本地来;
- 0.18之后,请注意调用默认超时时间为20秒,本地断点调试有可能导致请求报错,有必要可以按前文调整线上服务与本地服务配置,延长超时时间;
本地调试视图/Controller
Trantor提供了Chrome插件,用户可以不经过发布资源流程,直接在浏览器调试视图。
相见: Chrome调试工具

本地调试自定义容器和控件
自定义组件的开发需要使用T-tools工具包进行开发,Tools工具在开发时实时更新打包代码,提供本地url。
详见: 自定义组件开发
Chrome插件也可以用于自定义组件本地调试,只需要将本地url在插件中注册到对应的xml tag,就可以在Trantor页面上预览自定义组件的效果。
相见: Chrome调试工具
