-
Notifications
You must be signed in to change notification settings - Fork 808
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
同库短路设计 #23
Comments
同库短路是指当 最终一致的 主事务 跟 从事务 都在同一个服务,可以合并成同一个单库事务,主要用于优化性能,不用走RPC分两个事务完成。 同库短路在我的设想里,以TCC为例,如果发起方跟TCC服务提供方是同一个服务,那么可以直接在同一个事务里执行完TRY和CONFIRM的操作,这样能提高效率。这是同库短路的一种提供优化的形式。 另外一种,如果有客户有进一步优化性能的需求,可以提供一个TRY和CONFIRM的合并优化的方法(即无需调用CONFIRM,TRY里已经把CONFIRM做了) 不知道我有没有说清楚,期待你的参与 |
基本上理解了。这个 就像dubbo服务的本地暴露相似,如果消费端发现要消费的服务本地存在,就不用走rpc分支,直接进行本地调用了。 |
还要花时间研究一下,easytrans的源码。 |
这个是个很棒的议题。 有了透明调用,又有了业务注册类型,那么就不需要手动代码调用,自然就达到了同库短路设计。根据业务类型框架判断走remote还是直接跳过(执行本地事务)。 个人理解,不对的地方一起讨论,学习下 |
关键有几个问题:
|
|
第三个TCC可能没说清楚,因为TCC有3个方法, 在执行B,假如为A1的TCC, 已经知道这个属于A1,是本地角色,后面的调用,都反射本地的impl的class执行(缓存)。 |
恩,大思路都差不多,就看如何具体整合代码到现有框架了 |
期待1.0.1支持 |
看了一下源码,原本打算添加一个EasyTransExecutorFilter之类的过滤器来执行短路逻辑判断,如果不短路的话,就记录执行日志,调用rpc服务。否则直接调用本地服务。但是通过消息来完成rpc调用的话,就不太好进行判断了。 |
先确定一下我的理解是否正确, 这里 “通过消息来完成RPC调用”,指代的是通过消息队列发送异步消息,业务主流程上不等待对方回应的的调用 基于上述的理解,我觉得这里可以分两块来看:
对于RemoteServiceCaller这个没确切看懂啥意思,是否指代希望 RemoteServiceCaller 不区分 publish和call两个方法的调用形式?但是实际上外部调用者是需要区分这两个的,因为发布消息会有个消息ID等额外的元信息,所以是不能合并的 如果不是的话,能不能直接单独提一个PR,代码应该不多,看代码比较具体,更容易看出意图 |
我改下试试 |
你好,最近把EasyTransaction的源码仔细看了一遍,感觉框架写的很棒。接口设计清晰,能够把编码的复杂度分离到各个模块中(各种不同的listener来处理消息),看了之后很有启发。
看了问题列表中同库短路设计还未开始,想问一下同库短路是什么意思,应用业务场景是啥?我对这个问题蛮有兴趣的,期待能够有幸参与开发。
The text was updated successfully, but these errors were encountered: