代码拉取完成,页面将自动刷新
如果b服调用a服的函数,b服要等待该函数返回才能继续往下执行,这种场景支持吗
逻辑服之间的调用是同步的
调用方不需要加锁。
修改时,建议加锁来处理。
或者通过 disruptor 并发框架来处理、或者通过其他的并发框架来处理。
框架内也提供了一个 disruptor 相关模块,可以按需选择
https://www.yuque.com/iohao/game/gmfy1k
是的,这种需要同时写的,加锁会简单一些;
不过理论上是可以做到无锁化的,逻辑服处理业务逻辑服的关键代码在 RequestMessageClientProcessor 中,下个版本开放一个接口,这样开发者就可以在这上面编排线程了。
// 得到逻辑服对应的业务框架
BarSkeleton barSkeleton = ...;
// 通过业务框架把请求派发给指定的业务类(action)来处理
barSkeleton.handle(flowContext);
这里是处理业务逻辑服关键部分;
之后开放一个接口,我们可以根据需求通过 cmd、subCmd 路由来编排需要加入队列的请求;
大概思路就是使用 JCTools 提供的并发包,把上面的关键代码放到无锁队列中。
大概的代码如下
public void processLogic(BarSkeleton barSkeleton, FlowContext flowContext) {
CmdInfo cmdInfo = flowContext.getActionCommand().getCmdInfo();
// 路由
int cmdMerge = cmdInfo.getCmdMerge();
if (cmdMerge == 你需要同步执行的路由) {
// 编排到队列中,或者在这里把 barSkeleton.handle(flowContext); 放到 disruptor 中执行
// 这样就可以无锁了。
} else {
barSkeleton.handle(flowContext);
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
现在已经新增 业务线程编排-钩子接口
相关使用文档
https://www.yuque.com/iohao/game/eixd6x
登录 后才可以发表评论