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)
单数据中心的写请求:
当客户端发送到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)
相关文章推荐
- Lunix网络编程之socket(客户端发送请求,服务器处理例如:排序,两人联机五子棋)
- 封装好的客户端请求xmlhttp处理
- MVC 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。
- SuperSocket入门(一)-Telnet服务器和客户端请求处理
- socket服务端处理多个客户端的请求学习理解
- IIS处理客户端请求步骤
- 课程 Java Web程序设计02: 处理客户端请求: 表单数据
- Ril分析三——客户端请求和响应处理与modem交互
- tomcat解析(十六)对客户端请求的处理
- 利用accept函数来处理客户端请求的连接
- 自己封装的Socket组件,实现服务端多进程共享Socket对象,协同处理客户端请求
- 浅析Servle类及其处理客户端请求
- Url请求长度HTTP协议不对URI的长度作事先的限制,服务器必须能够处理任何他们提供资源的URI,并且应该能够处理无限长度的URIs,这种无效长度的URL可能会在客户端以基于GET方式的请求时产生。
- 服务器处理客户端请求线程只升不降问题分析总结
- tomcat javaweb(实验二 使用JSP处理客户端请求)
- Tuxedo不能全部处理并发的客户端,请求是什么原因?
- WebService客户端引用 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例
- django处理客户端请求过程
- 课程 Java Web程序设计03: 处理客户端请求: HTTP请求头
- 自己封装的Socket组件,实现服务端多进程共享Socket对象,协同处理客户端请求