您的位置:首页 > 其它

Cassandra 处理客户端请求

2012-05-17 10:23 246 查看
Cassandra集群中所有节点都是对等的,所以读/写操作可以发生在集群中的任意节点上,也许这个节点并没有需要读/写的数据,所以这个和用户交互的节点就成了coordinator节点。

单数据中心的写请求:

当客户端发送到coordinator节点上,则这个coordinator节点会吧这个写请求发送到集群内所有拥有目标行副本的节点上(target节点),比如:





这个例子中,客户端发送请求到N10,但N10并没有目标行,所以N10就是coordinator节点,它知道目标行有3个副本R1,R2,R3,依次在N1,N2,N7上,于是它吧写请求发给这3个节点。如果有i个成功响应返回给N10(i取决于consistency level配置的值),则N10认为写操作成功完成,从而返回响应消息给客户端。

多数据中心的写请求:

在多数据中心中,为了优化性能,Cassandra集群会在每一个数据中心找一个coordinator,然后由coordinator负责自己所在的数据中心的多个副本节点的写操作。





比如这个例子中,DC1的coordinator是N10,DC2的coordinator也是N10,则客户端只要发送写请求给这2个coordinator就可以了。

读请求:

还是找coordinator,coordinator会发送给consistency level数量的节点“直接读”请求,用于返回结果给客户端,而发送给其他副本所在的节点“读修复”请求,用于同步数据。





比如这个例子中,如果有3个副本,但是consistency level被设置为2,则coordinator会吧“直接读”请求发送给其中两个节点(比如R1和R3),而在后台,会吧“读修复”请求发送给第三个节点(比如R2)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Read Write Cassandra
相关文章推荐