cassandra自带测试工具cassandra-stress.nodetool proxyhistograms可以在多个节点运行,发现最慢的协调节点.nodetool tablehistograms可以查看特定表的性能. 利用tracing去跟踪某个特定表和相关查询.可以知道每个查询涉及的客户端和节点之间的通信和每一步的时间.设置tracing,可以使用cqlsh设置 TRACING ON,然后查询,再TRACING OFF.也可以通过驱动去查询tracing的结果.nodetool setr…
DataStax驱动最成熟.默认,驱动程序会使用第一个连接的节点作为支持的版本协议.如果集群存在高低版本的节点(比如升级场景),如果驱动先连接不同不同版本的节点,可能会出现不兼容.驱动支持压缩客户端和cassandra节点之间的消息.目前支持2种压缩算法:LZ4和SNAPPY.默认为NONE,即不压缩.可以调用Cluster.Bilduer.withCompression()操作来覆盖这个设置.认证和加密驱动可插拔实现com.datastax.driver.core.AuthProvider.比…
分阶段事件驱动架构 SEDASEDA(Staged Event-Driven Architecture)的核心思想是把一个请求处理过程分成几个Stage,不同资源消耗的Stage使用不同数量的线程来处理,Stage间使用事件驱动的异步通信模式.更进一步,在每个Stage中可以动态配置自己的线程数,在超载时降级运行(如输出纯文字页面)或拒绝服务.(参考百度百科)一般一些工作单元会在一个线程池中完成.不过cassandra使用SEDA,所以一个操作可能在一个线程池开始,然后把工作移交给别的线程池.移…
没有join操作.有轻量级事务和批处理,但是没有外键等.反规范化.3.0支持物化视图,允许在一个表上创建数据的多个物化视图.使用cassandra要从查询入手,而不是先从数据模型开始.先对查询建模,然后根据查询来组织数据,然后再构建表结构.cassandra建表要考虑磁盘怎么存储数据,也就是要求要保证相关的列定义在同一个表中,不像RDBMS去关联查询.尽可能搜索最小的分区去满足一个给定的查询.搜索单个分区往往会得到最优的性能.排序需要提前设计,根据集群键排序.只能是和设计排序一样,或者完全相反.…
cassandra SLF4J API记录日志,具体采用Logback实现.在终端启动cassandra时,可以向程序输入-f,就能在终端看到这个输出.Java Mangement Extensions,JMX.JMX是java API,主要采用两种方式管理.首先利用JMX可以从内存,线程池和CPU等java应用通用的一些方面了解健康状况.其次,利用JMX可以分析应用中的监测的特定方面.监测是指在应用代码外加一个包装器,从应用向JVM提供hook(钩子),使JVM能够收集数据供外部工具使用.包括…
写cassandra除了轻量级事务,不支持别的事务.cassandra是追加写,写的速度非常快.cassandra还有hint日志,这个数据库总是可写的,而且单个列的写操作是原子的.hint并不是一定写在协调节点,一般是写在下线节点的某个非副本的邻居节点.写一致性ANY:写hint也算成功ONE:写hint和memtable才算成功. 协调节点会根据keyspace的副本数确定哪些是副本节点,如果副本节点不够满足一致性级别,直接报错.多DC时,客户端发请求到协调节点,协调节点同时会转发请求到所有…
配置集群时,要求所有节点的集群名,分区器,snitch必须相同.种子节点最好相同. 种子节点:最好每个DC,配置2个,这样即使一个DC中一个种子节点挂了,仍然有一个中子节点可用.种子节点被认为是最先加入集群的,不会做数据迁移.其他节点都会优先连接种子节点加入集群.允许指定种子节点的实现,默认:org.apache.cassandra.locator.SeedProvider,这会从yaml文件中加载种子节点.分区器:指定分区键如何排序.Murmur3Partitioner,默认分区器,org.a…
环和令牌cassandra的数据管理是用一个环来表示.为环中的每个节点分配一or多个数据范围,用token描述.token由64位整数ID表示,范围-2^(63)~2^(63)-1.使用对分区键进行一个hash来计算分区键落到哪个token中,进而决定分配到哪个节点.org.apache.cassandra.dht.Range类.虚拟节点(vnode),1.2版本引入,2.0默认开启.一个token就是对应一个vnode.将环分解为虚拟节点数的分段,可以让数据分布更均匀,在扩容,缩容,修复都会更…
结构 集群-->数据中心-->机架-->节点. cassandra尽可能将数据副本存在多个数据中心,然后读取(查询路由到)尽可能在本地数据中心. 为了去中心化和分区容错性,使用gossip协议.允许各个节点跟踪其他节点的状态信息. cassandra gossip详情可以参考: https://blog.csdn.net/weixin_38916872/article/details/81334014 https://zhaoyanblog.com/archives/1017.html…
cassandra是一个开源的.分布式.去中心化.弹性可扩展.高可用.容错.可调一致性.面向行数据库,分布式设计基于Amazon Dynamo,数据模型基于Google BigTable.cassandra由facebook创建.AP数据库去中心化,P2P(peer to peer,对等网络)协议,使用Gossip来维护和同步一个存活或者死亡列表.弹性可扩展,水平扩展简单,自动数据迁移,几乎不影响现有访问.高可用.容错:不存在单点故障问题.扩容缩容更简单.防灾,天然支持多AZ(area zone…