开发神器:DebugInOut 插件与调用统计
## 开发阶段最大的痛点是什么?
不是写代码慢,而是**不知道发生了什么**。
- 客户端说"请求没有响应",你不知道请求有没有到达服务器
- 某个 Action 明明写好了,但不确定它有没有被正确注册
- 多人协作的项目,你不知道别人写的业务方法在哪个类的第几行
ionet 内置了一套插件系统,专门解决开发阶段的"信息黑洞"问题。
---
## DebugInOut 插件:看见每一个请求
当你启用 DebugInOut 插件后,服务器控制台会实时打印每个请求的完整信息:
```
┌──── [DebugInOut] ────────────────────────────
│ cmd: 1-0
│ action: DemoAction.here(HelloMessage)
│ class: DemoAction.java:12
│ userId: 100001
│
│ request: HelloMessage{name='Jack'}
│ response: HelloMessage{name='Jack, I'm here'}
│ time: 0.3ms
└──────────────────────────────────────────────
```
从这段输出中你可以得到:
- **路由**:1-0(知道客户端调用的是哪个接口)
- **Action 信息**:类名、方法名、参数类型
- **代码位置**:`DemoAction.java:12`(点击直接跳转到 IDE)
- **用户 ID**:知道是谁在操作
- **请求和响应数据**:完整的业务数据
- **耗时**:一眼看出性能是否正常
**点击代码位置可以直接跳转到 IDE 对应的代码行**——在大型项目中,这个特性可以节省大量的"找代码"时间。
---
## Action 调用统计插件
除了实时调试,ionet 还提供了统计插件来监控 Action 的调用情况:
### 调用计数统计
记录每个 Action 的调用次数,帮助你了解哪些接口被频繁调用:
```
┌──── Action 调用统计 ────────────────────
│ 1-0 DemoAction.here : 1,523 次
│ 1-1 DemoAction.jackson : 892 次
│ 1-2 DemoAction.list : 2,341 次
│ 2-0 ShopAction.buyItem : 456 次
└──────────────────────────────────────────
```
### 各时间段调用统计
按时间段统计调用情况,发现流量高峰和潜在问题:
```
┌──── 时间段调用统计 ────────────────────
│ 10:00-11:00 total: 12,345
│ 11:00-12:00 total: 8,721
│ 12:00-13:00 total: 15,234 ← 午休高峰
│ 13:00-14:00 total: 9,876
└──────────────────────────────────────────
```
### 业务线程监控插件
监控线程执行器的负载情况,及时发现线程倾斜或阻塞:
```
┌──── 线程监控 ────────────────────────
│ UserThread-0: queue=3, busy=true
│ UserThread-1: queue=0, busy=false
│ UserThread-2: queue=12, busy=true ← 可能有阻塞
│ UserThread-3: queue=1, busy=false
└──────────────────────────────────────────
```
---
## 插件的价值
这些插件的真正价值在于:**让你在开发阶段就知道是否存在性能问题。**
传统做法是:写完代码 → 部署到测试环境 → 压测 → 发现性能问题 → 回来改代码。
ionet 的做法是:写完代码 → 在开发环境就能看到每个 Action 的耗时、调用频率、线程负载,**在提交代码之前就发现问题**。
---
## 插件机制:可插拔、可扩展
ionet 的插件是可插拔的。你可以根据开发阶段选择启用不同的插件:
- **开发环境**:全开(DebugInOut + 调用统计 + 线程监控)
- **测试环境**:调用统计 + 线程监控
- **生产环境**:按需选择
插件机制也是可扩展的——你可以编写自定义插件,在请求处理链路中插入自己的逻辑。
---
## 小结
ionet 的插件系统让"调试"和"监控"不再是事后的事情:
| 插件 | 功能 | 使用场景 |
|------|------|---------|
| DebugInOut | 实时请求日志 + 代码导航 | 开发调试 |
| Action 调用统计 | 接口调用次数统计 | 性能分析 |
| 时间段调用统计 | 按时间段的流量分析 | 容量规划 |
| 业务线程监控 | 线程负载可视化 | 性能瓶颈排查 |
---
**更多资源**
- 📖 [DebugInOut 插件](https://iohao.github.io/ionet/docs/core_plugin/action_debug)
- 📖 [Action 调用统计](https://iohao.github.io/ionet/docs/core_plugin/action_stat)
- 📖 [业务线程监控](https://iohao.github.io/ionet/docs/core_plugin/action_thread_monitor)
- 📖 [时间段调用统计](https://iohao.github.io/ionet/docs/core_plugin/action_time_range)
- 📖 [插件机制](https://iohao.github.io/ionet/docs/manual/plugin_intro)
> **下一篇预告**:[分布式系统的排障利器 —— ionet 全链路调用日志跟踪]
浙公网安备 33010602011771号