-
Notifications
You must be signed in to change notification settings - Fork 59
refactor: make clock decoupled from rdsn runtime #398
Conversation
咱们以后架构是这样的:
这个架构图应该很清楚了,模块之间应该相互隔离,dsn_utils 要和 rpc/task/aio 隔离开,你要以这个为目的来写。 clock 原来是放在 dsn_runtime 里面的,那么你要使用 clock,你就要依赖 rpc/task/aio + dsn_utils,但这样是不对的,clock 应该放在 dsn_utils 里面,这样能你用 clock,你只需要依赖 dsn_utils。 所以
|
1.我觉得我这个实现是不依赖native_run的,从依赖关系来看,其实是native_run依赖clock。这个nativerun里留了个new clock有一定迷惑性,我的意思是想表达各种不同的runtime可以根据自身需要创建自己需要的clock。这个实现有点c-style,就像上面我说的,因为我觉得写成单例那种方式,由于mock接口的存在导致clock就不是线程安全的。所以干脆没暴露这个接口,当然我这样确实有点tricky,大家可以帮忙再看看有没有比较好的方案 |
如果你允许各个模块都调用
你可以看 tool-api 下都有哪些代码,你就应该能分清楚 tool-api 和 utility 的关系。里面有 rpc/aio/task 的文件,例如 network.h,aio_provider.h,那么很显然 tool-api 对应是 dsn_runtime。那么你从代码读者的角度考虑,肯定就不能把 clock 放在 tool-api,那不然不是把鸡放在猪圈里了吗?
还是跟上面一样,看 service_api_c 里面有哪些代码,显然里面有 rpc 模块,还有 dsn_run 等等,显然是对应 runtime 的一个杂烩的文件。
上面说了,我们要把 rpc/aio/task 从 dsn_runtime 隔离出来,所以是的。 |
The clock API, is tightly coupled in rdsn runtime for historical issues. As a part of the long-term plan of rdsn (see #141 ) we decoupled it to make further refactoring possible.