You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cassandra节点间执行读写操作时使用的通信协议是什么?

Cassandra集群节点间读写请求通信规则说明

节点间读写交互使用的核心协议

Cassandra处理协调节点到副本节点的读写请求转发时,采用内部自定义异步二进制协议,通常称为Internode Protocol(节点间协议),底层基于TCP传输,默认监听7000端口,开启节点间加密时会改用7001端口。
该协议和客户端连接使用的CQL协议完全独立,除了读写请求转发外,hinted handoff、数据修复、集群流传输等所有节点间业务数据交互,都走这套协议。

协议核心规则

  • 采用请求-响应模型,每条消息附带唯一标识,支持异步并发发送,不会阻塞线程,适配Cassandra高吞吐设计需求。
  • 消息按功能做类型划分,写请求对应Mutation类型消息,读请求对应ReadCommand类型消息,每种消息类型都有固定的序列化、反序列化规则,支持跨版本节点兼容,可满足集群滚动升级时的通信需求。
  • 协议内置流量控制逻辑,避免节点间消息发送过多导致接收端OOM,保障集群稳定性。

对应源码参考

相关逻辑全部在Cassandra源码的org.apache.cassandra.net包下实现:

  • 核心入口是MessagingService类,负责管理节点间长连接、消息发送接收的路由,你可以重点查看send()方法的实现,这是协调节点转发读写请求到目标副本节点的核心逻辑。
  • 所有节点间消息的定义、编解码规则都在Message类中实现,不同类型的读写请求对应不同的消息子类。
  • 写请求的完整转发流程可以参考org.apache.cassandra.service.StorageProxy类的mutate()方法,这里完成副本定位后,会调用MessagingService将Mutation请求发送到对应归属节点。

注意:该协议和用于传播节点状态的Gossip协议完全隔离,端口、处理逻辑、适用场景都不重叠。


内容的提问来源于stack exchange,提问作者Rafel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 07:45:00