Skip to content

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

@zchuango

Description

@zchuango

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions