• Cassandra 处理客户端请求


     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)

    转载于:https://blog.51cto.com/supercharles888/865657

  • 相关阅读:
    2017-2018-1 20155225 《信息安全系统设计基础》第三周学习总结
    2017-2018-1 20155225 《信息安全系统设计基础》第2周课堂实验
    20155225 2017-2018-1 《信息安全系统设计基础》第一周学习总结
    课堂实践——数据库
    20155225 2016-2017-2《Java程序设计》课程总结
    20155225 实验五《网络编程与设计》实验报告
    20155225 实验四《Android程序设计》实验报告
    转载
    HDU
    SCU
  • 原文地址:https://www.cnblogs.com/it-deepinmind/p/14549746.html
Copyright © 2020-2023  润新知