Cassandra数据库如何处理客户端请求

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

单数据中心的写请求:

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

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/extra/

这个例子中,客户端发送请求到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)

本文出自 “平行线的凝聚” 博客,请务必保留此出处http://supercharles888.blog.51cto.com/609344/865657

时间: 2024-12-31 23:39:38

Cassandra数据库如何处理客户端请求的相关文章

java-使用socket通信服务端如何处理客户端请求

问题描述 使用socket通信服务端如何处理客户端请求 场景如下: 一个服务端,一个客户端通过socket连接服务端,假如客户端要请求服务端做一件事(如调用服务端A类的a方法), 因为socket传输的是字符串,所以我现在的做法是让客户端传一个标识符a到服务端,然后服务端 通过判断传过来的是a则调用A类的a方法, 如果我要执行A类的b方法,则传b过去再判断 我想问的是有没有更好的解决方案,或现成的框架可用 解决方案 如果你这样的需求,我觉得更适合HTTP.也许玩C++的更习惯于socket.之前

Cassandra数据库的数据类型

数据类型是用来约束插入到字段中的值的. 在关系数据库中,数据类型是在定义表的时候就指定的. 在Cassandra中,字段类型由校验器(validator)和比较器(comparator)来给出,其中validator用来约束字段值的类型,而comparator用来约束字段名的类型. 注:关系数据库和Cassandra中数据类型的定义时间不同.关系数据库中,数据类型必须在定义表结构时候就指定,但是Cassandra不用,因为总是以BytesType的类型存储,可以根据客户端请求来指定用什么类型来对

服务器-oracel 数据库和客户端的问题,请大神帮忙看看

问题描述 oracel 数据库和客户端的问题,请大神帮忙看看 数据库安装的是oracle 10g,公司服务器的一个应用程序以前通过oracle10的客户端(ODBC的形式)去访问,但因为某种原因需要将客户端升级为11,不过服务器上现在有两个11的客户端,一个没有卸载工具的,一个是正常的完整版,但是现在能够连通数据库,就是时不时进入网站后,网页只显示一部分,但无法登陆进入网站的这个应用程序,可能是访问不到数据库,需要重启服务器上的IIS才能恢复.代码什么的都没动过,和之前相比只是升级了oracle

使用ExtJs开发MIS系统(3):使用数据库保存客户端状态

我们都知道,Vs.Net这样的工具每次打开时都会记住我们上次关闭时的状态:各个窗口的位置.大小:工具栏状态:自定义菜单项等.这无疑是一个使用的功能.ExtJs也包含提供了状态保存机制,其主要的控件:GirdPanel,FormPanel等,都提供了状态保存的功能.我们需要的仅仅是为其提供适当的Provider. 1,客户端状态的保存 我们先来看一下当一个ExtJs中的控件状态改变时,持久化该控件状态的流程: 开发MIS系统(3):使用数据库保存客户端状态-"> 流程中的前两步(红色)是控件

Cassandra数据库中为集群中的节点手动分配token

token 是Cassandra 集群中十分重要的概念,因为他影响着每个节点所管辖的数据的范围:我们就利用程序来生成token然后分配给每个节点: 我们用下面的代码来生成token: #! /usr/bin/python import sys if (len(sys.argv) > 1): num=int(sys.argv[1]) else: num=int(raw_input("How many nodes are in your cluster? ")) for i in r

游戏-如何加密客户端请求,防止别人模拟请求

问题描述 如何加密客户端请求,防止别人模拟请求 我要做一个网页的小游戏.游戏完成之后,向后台提交分数.但是提交分数的这次请求,别人可以通过浏览器的调试工具看到,然后模拟请求达到作弊的目的.有什么好的方法解决这个问题吗? 解决方案 用https,或者自己把参数加密 解决方案二: https也能被浏览器调试工具看到 你应该把数据加密,然后提交. 解决方案三: 可逆加密解密,,,,,, 解决方案四: RSA加密,这样子很难解密的 解决方案五: https+token(随机生成,唯一),这样应该就可以实

ASP.NET Core管道深度剖析(3):管道是如何处理HTTP请求的?

我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但是就具体的实现来说,由于其中涉及很多对象的交互,我想很少人能够地把它弄清楚.为了让读者朋友们能够更加容易地理解管道处理HTTP请求的总体流程,我们根据真实管道的实现原理再造了一个"模拟管道"并在此管道上开发了一个发布图片的应用,这篇文章旨在为你讲述管道是如何处理HTTP请求的 目录 一.HttpApplication     FeatureCollection     Ho

elasticsearch 如何与cassandra 数据库结合

问题描述 elasticsearch 如何与cassandra 数据库结合 elasticsearch 和 cassandra 本人都是初学者, 现在这两块都能够单独运行, 但是不知道如果结合起来. 我在网上有查到elasticsearch 有river插件可以连接数据源, 但是并没有发现river 有支持cassandra 啊,. 所以提问求助, 望高手解囊赐教. 解决方案 https://github.com/srecon/elasticsearch-cassandra-river

解决方案-服务端(C++)处理大量数据时客户端请求会阻塞问题

问题描述 服务端(C++)处理大量数据时客户端请求会阻塞问题 客户端发送大量数据给服务端,服务端是一次性接收1M的数据处理,在处理这些大量数据时,客户端请求获取队列长度,服务端无法及时响应请求.请问各位大神,如何做到客户端请求,服务端立即响应?有没有好的解决方案?谢谢! 解决方案 提高服务器处理努力 加机器 负载均衡