节点和客户端cassandra之间的数据传输

Data transmission between nodes and client cassandra

我是 Cassandra 的新手,正在学习它。 所以问题是 Cassandra 中的节点之间如何进行通信

  1. 基本通信-故障检测及其他
  2. 节点到节点和客户端的数据传输
  3. 任何其他类型的通信

第一个答案是 Gossip 协议 http://www.datastax.com/resources/faq
但是我对 Cassandra 用来将数据从一个节点传输到另一个节点或客户端的协议和方法不太感兴趣。

正如您所说,节点之间的通信是通过 Gossip。

再次通过 Gossip 进行故障检测,每个节点检查来自其他节点的 Gossip 消息。如果它没有收到 'n'(可在 cassandra.yaml 文件中配置)数量的八卦消息,它认为该节点已死。查找标签 phi-convict threshold。

我不确定 cassandra 使用什么进行数据传输,大部分可能是在 TCP 上构建的简单层。 cassandra的一大特点就是你不用担心Cassandra是如何处理复制的,你只需要考虑策略

Cassandra 节点间通信独立于节点和客户端之间的通信。

  1. 八卦 - 用于使节点知道故障(客户端不 涉及)
  2. 这需要拆分:节点 communicate/send 数据 storage_port(参见 cassandra.yaml - 默认端口 7000),客户端连接到端口 9042(或旧节俭客户端的 9160)并与此处指定的专有二进制协议通信:https://github.com/apache/cassandra/blob/trunk/doc/native_protocol_v3.spec
  3. 您可能关心的其他通信是 JMX,它是节点工具使用的

此处有更多详细信息:http://www.datastax.com/documentation/cassandra/2.1/cassandra/security/secureFireWall_r.html