Skip to main content

业务框架插件

介绍

业务框架提供了插件机制,插件用于拦截 action 请求。

通过插件,你可以扩展很多有趣的事,这主要取决于你的想象力。比如你可以

  • 记录执行时间比较长的 action 业务
  • 哪个业务方法执行的次数最多
  • 将 userId 保存到 ThreadLocal 中

框架已经提供了一些内置的插件,随着时间的推移,插件的数量会不断的增加。 开发者如有需要,可扩展一些符合自身业务的插件。

不同的插件提供了不同的关注点,比如我们可以使用调用、监控等插件相互配合,可以让我们在开发阶段就知道是否存在性能问题。 合理利用好各个插件,可以让我们在开发阶段就能知道问题所在,提前发现问题,提前预防问题。

框架内置提供的插件

PluginNameDescription
DebugInOut业务执行时长、参数与返回值的观察、业务代码定位。
StatActionInOutaction 调用统计插件

开发者可以通过这些数据来分析出项目中的热点方法、耗时方法,从而做到精准优化。
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());

如何扩展

see ActionMethodInOut

public final class MyInOut implements ActionMethodInOut {
@Override
public void fuckIn(final FlowContext flowContext) {
// your code
}

@Override
public void fuckOut(final FlowContext flowContext) {
// your code
}
}