brpc icon indicating copy to clipboard operation
brpc copied to clipboard

brpc支持传输层多协议改进建议

Open zchuango opened this issue 3 weeks ago • 17 comments

Is your feature request related to a problem? 业界涌现出多种新型互联技术和协议,如RDMA、CXL、Nvlink、UB(UnifiedBus)等,结合当前项目代码来看Socket类融合了rdma和tcp协议已显的过于臃肿,后期如果计划扩展支持更多的新协议和技术将会带来很大维护成本,为了保证brpc的核心竞争力持续性,brpc需要考虑支持互联技术和新的协议演进发展,针对于此情况,目前提出一种多通信协议易扩展和兼容的Socket-Transport通信架构,该架构向上承接socket的调用,向下串联传输层协议栈方法,目前有以下方案和思路,还望一起讨论交流下。

Describe the solution you'd like

Image
  • Socket为brpc的通信基础类,针对该类进行传输层公共方法下推到Transport层,比如DoConnect、DoRead、DoWrite、WaitEpoll等。
  • TransportWrapper为Transport代理包装类,根据协议类型代理调用不同协议栈的Transport子类方法。
  • Trasnport为协议栈接口基类,接口定义了传输层需要泛化的协议栈公共方法,向上承接Socket调用。
  • RDMA、TCP、CXL、UB分别是传输层的不同通信协议的实现子类部分,方法调用通过TransportWrapper完成具体方法的调用。

Describe alternatives you've considered 架构改造计划: 第一步,基于Socket类进行架构改造和升级,同时将rdma和tcp协议的传输层公共部分下推到对应的子类上。 第二步,在已改造好的Socket-Transport架构上,引导导入多种新通信协议,例如CXL、UB等。

Additional context/screenshots

zchuango avatar Dec 08 '25 08:12 zchuango