知识卡片

Message与Messenger的四层职责分离

专业/工作 · 512.a

内容

Ceph 网络框架用四个抽象把”发什么”“怎么连”“谁处理”“整体收发入口”拆开:Message 是所有消息的基类,只负责承载 header(元数据)/payload/data 等内容;Connection 封装一条对端 socket 连接,只暴露 send_message 这样的收发接口;Dispatcher 是纯粹的处理回调接口,调用方实现它来定义”收到消息后做什么”;Messenger 是整个模块对外的统一入口,负责创建连接、注册 Dispatcher。四者各自只对一件事负责,使得 [[三种网络实现的稳定性与性能权衡|Simple/Async/XIO 三套实现]]可以在保持同一套上层接口的前提下自由替换底层传输机制。

参考来源

《Ceph源码分析》第3章《Ceph网络通信》