Ceph 客户端和服务器端的消息通信框架有三种:SimpleMessenger、AsyncMessenger XIOMessenger;
SimpleMessenger,使用 TCP Socket 实现。每个 Socket 有两个线程:一个线程用于接收,另一个线程用于发送。但是,这种通信机制在集群规模较大的情况下会创建大量连接,对集群的性能有一定挑战。这种框架比较稳定、成熟;
AsyncMessenger,使用带有固定大小线程池的 TCPSocket 进行连接。该 Socket 数应等于最大副本数或者纠删码块数。这种框架兼容不同的网络传输类型,如 posix、rdma、dpdk。当前,Ceph 默认的消息框架和传输类型为 async+posix。对于 rdma 和 dpdk,其在很多时候技术还不够成熟,商业化过程中的很多问题还没有发现。因此对于追求集群稳定的场景,建议慎重选用该框架;
XIOMessenger,基于开源网络通信库 Accelio 实现。Accelio xio 是与传输相独立的消息抽象,当前在 RDMA(Infiniband 或 Ethernet)上运行,处于试验阶段;