业务框架插件
介绍
业务框架提供了插件机制,插件用于拦截 action 请求。
通过插件,你可以扩展很多有趣的事,这主要取决于你的想象力。比如你可以
- 记录执行时间比较长的 action 业务
- 哪个业务方法执行的次数最多
- 将 userId 保存到 ThreadLocal 中
框架已经提供了一些内置的插件,随着时间的推移,插件的数量会不断的增加。 开发者如有需要,可扩展一些符合自身业务的插件。
不同的插件提供了不同的关注点,比如我们可以使用调用、监控等插件相互配合,可以让我们在开发阶段就知道是否存在性能问题。 合理利用好各个插件,可以让我们在开发阶段就能知道问题所在,提前发现问题,提前预防问题。
框架内置提供的插件
PluginName | Description |
---|---|
DebugInOut | 业务执行时长、参数与返回值的观察、业务代码定位。 |
StatActionInOut | action 调用统计插件 开发者可以通过这些数据来分析出项目中的热点方法、耗时方法,从而做到精准优化。 |
ThreadMonitorInOut | 业务线程监控插件,主要的关注点 1. 各业务线程的执行 action 的次数 2. 执行时的平均耗时 3. 当前业务线程积压的任务数量 |
TimeRangeInOut | 各时间段调用统计插件;一天内每小时的 action 调用统计插件, 主要的关注点是每天各时间段的业务消费情况。 可统计全天 24 小时,也可指定统计某个时间段可统计每个小时内每分钟, 也可指定某些分钟时间段(如,只统计 0 ~ 30 分钟的,30 ~ 60 分钟的不做统计) |
TraceIdInOut | 全链路调用日志跟踪插件,用于追踪玩家的请求链路。 |
如何使用
将插件添加到业务框架中,先加入业务框架的插件,会在处理 action 的过程中会优先执行。
BarSkeletonBuilder builder = ...;
builder.addInOut(new TraceIdInOut())
.addInOut(new DebugInOut())
.addInOut(new StatActionInOut())
.addInOut(new ThreadMonitorInOut());
如何扩展
public final class MyInOut implements ActionMethodInOut {
@Override
public void fuckIn(final FlowContext flowContext) {
// your code
}
@Override
public void fuckOut(final FlowContext flowContext) {
// your code
}
}