Cassandra基础2
=========================================================
gossip协议
1、点对点(peer to perr)的网络通信协议,节点间地位相同。
2、两个节点间断性地交换自身信息及其知道的信息,每秒最多和群集中三个节点交换信息。
3、每条交换信息中包含版本信息,新版本的信息会覆盖掉就版本的信息。
4、通过多次交换各节点能获取到整个群集其他节点的信息。
=========================================================
seed nodes配置建议:
1、为避免gossip通信出现问题,建议群集中所有节点都有相同的seed nodes列表,seed nodes列表仅用于节点加入到群集时bootstrap过程使用。
2、在多数据中心集群环境,确保每个数据中心至少有一个节点在seed nodes列表中,为提高容错性,建议为每个数据中心指派多个seed node。
3、为避免影响gossip性能,建议为每个数据中心最多配置3个节点到seed nodes列表中。
=========================================================
失败检测和恢复
1、通过信息交换,系统能自动判断出群集中某个节点发生故障或存在性能问题,并避免将请求路由到该节点。
2、可以通过配置phi_convict_threshold属性来调节失败检查的敏感性,当网络较差时,可以适当调高该阈值。
3、对于故障节点,系统仍会定期进行检查,确定该节点是否恢复正常。
4、对于长期失效节点,建议将其移除节点
5、对于重新回归的节点,需要对进行repair修复数据。hintedhandoff有时间限制,默认三小时,超过此时间前面的数据会不断的被覆盖掉,需要手动repair。
=========================================================
分区器(partitioners):
分区器用来决定数据在群集的那些节点进行存储(包含副本数据),Cassandra提供三种partitioners:
1、Murmur3Partitioner(默认): 基于MurmurHash hash值将数据均匀的分布在集群
2、RandomPartitioner: 基于MD5 hash值将数据均匀的分布在集群中
3、ByteOrderedPartitioner: 通过键的字节来保持数据词汇的有序分布
Murmur3Partitioner使用MurmurHash hash算法,而RandomPartitioner使用加密hash算法,因此Murmur3Partitioner比RandomPartitioner有3至5倍的性能提升。
ByteOrderedPartitioner使得数据按照主键有序排列,运行通过主键进行有序扫描,该功能可以通过index来实现,而ByteOrderedPartitioner分区器很难实现负载均衡和数据热点问题,因此不建议使用。
=========================================================
Cassandra数据维护
当数据发生修改(增删改)操作时,Cassandra将先将修改日志写到Commit Log,然后在把数据写到Memtable,再将Memtable中数据顺序Flush到磁盘保存在SSTable中,
当Memtable中数据超过配置阈值或Commitlog的空间超过commitlog_total_space_in_mb的值时,便会触发Flush操作。
Cassandra将数据刷新到SSTable,会将带有新时间戳的数据写入到新的SSTable中,不会覆盖会追加到旧的SSTable,因此不同的SSTable可能保存同一行数据的多个版本,为保证数据库的健康性,Cassandra周期性的合并SSTables,并将老数据废弃掉,该行为被称为合并压缩。
Cassandra提供以下压缩策略:
1、SizeTieredCompactionStrategy(STCS)
2、LeveledCompactionStrategy(LCS)
3、TimeWindowCompactionStrategy(TWCS)
4、DateTieredCompactionStrategy(DTCS)
=========================================================
SizeTieredCompactionStrategy(STCS)
当Cassandra 相同大小的SSTables数目达到一个固定的数目(默认是4),STCS开始将多个SSTable压缩成一个更大的SSTable。
优势:写占比高的情况压缩很好
劣势: 可能将过期的数据保存的很久,随着时间推移,需要的内存大小随之增加。
适用场景:写占比高的场景。
=========================================================
LeveledCompactionStrategy(LCS)
LCS会将数据合并压缩成多个层级,每一层是上一层的10倍。LCS压缩过程确保了从L1层开始的SSTables不会有重复的数据。
优势: 磁盘空间的要求容易预测。读操作的延迟更容易预测。过时的数据回收的更及时。
劣势: 更高的I/O使用影响操作延迟。
适用场景:读占比高的场景
=========================================================
TimeWindowCompactionStrategy(TWCS)
TWCS基于时间窗口将SSTable进行分组,
优势: 用作时间序列数据,为表中所有数据使用默认的TTL。比DTCS配置更简单。
劣势: 不适用于时间乱序的数据,因为SSTables不会继续做压缩,存储会没有边界的增长,所以也不适用于没有设置TTL的数据。相比较DTCS,需要更少的调优配置。
适用场景:时间序列且设置了TTL的场景
DateTieredCompactionStrategy(DTCS)
DTCS类似于TWCS,已弃用。
摘抄自:https://blog.csdn.net/FS1360472174/column/info/14229
Cassandra基础2的更多相关文章
- Cassandra基础3
cassandra读性能优化:1.禁用read repair每次读操作,无论读请求设置读一个节点还是多个节点,cassandra返回给客户端最新的数据后,都会后台对比所有副本的数据并对差异数据进行修复 ...
- Cassandra基础
Apache Cassandra特性 Apache Cassandra由Facebook基于Amazon的Dynamo及其在Google的Bigtable上的数据模型设计开发的面相列的数据库,实现没有 ...
- 使用DataStax Java驱动程序的最佳实践
引言 如果您想开始建立自己的基于Cassandra的Java程序,欢迎! 也许您已经参加过我们精彩的DataStax Academy课程或开发者大会,又或者仔细阅读过Cassandra Java驱动的 ...
- 技术基础 | 监测Apache Cassandra的简明方式——MCAC
点击这里在GitHub上访问我们,以便深入了解DataStax的开源项目--Apache Cassandra指标收集器(Metric Collector for Apache Cassandra, o ...
- 技术基础 | Cassandra RBAC助你打击“虚拟海盗”,让他们对数据“战利品”望而不得
现如今,我们称虚拟世界里的海盗们为"黑客",他们所追寻的战利品就是在你数据库某处的数据. 而我们能够保证你的数据安全的工具之一,就是"Cassandra基于角色的访问 ...
- 技术基础 | Apache Cassandra 4.0基准测试
Apache Cassandra 4.0已经发布了Beta版,这是第一个支持JDK 11及更高JDK版本的Cassandra版本. 时延对于Apache Cassandra用户来说是个显而易见的关 ...
- 技术基础 | 在Apache Cassandra中改变VNodes数量的影响
Apache Cassandra中num_tokens的默认值在4.0版本中将会有变化!这看起来好像只是在CHANGES.txt文件中做了个小小的改动,但实际上这个改动将会对集群的日常运维有着深远的影 ...
- sstable, bigtable,leveldb,cassandra,hbase的lsm基础
先看懂文献1和2 1. 先了解sstable.SSTable: Sorted String Table [2] [10] WiscKey: 类似myisam, key value分离, 根据ssd优 ...
- 技术基础 | 改进版的Apache Cassandra客户端请求路由
最近我们在客户端的驱动程序中引入了一些变更,这些变更会影响传入的请求在Apache Cassandra集群内的分发方式. 新的默认负载均衡算法即将随驱动程序推出,这些算法将有助于缩短长尾延迟,并提 ...
随机推荐
- 每天CSS学习之line-height
line-height是CSS的一个属性,其作用是设置行高.其有以下几种值: 1.normal:自动设置合理的行间距.该值是默认值.如下示例: p{ line-height:normal; } 结果: ...
- MAC开发配置--Node和Npm
前往Node官网下载最新的长期支持版本Node https://nodejs.org/zh-cn/download/ 默认安装目录为: • Node.js v10.14.2 to / ...
- mybatis-generator没有自动生成代码和Junit测试controller
本来mybatis的generator想要自动生成增删改的,但是到后来语句就两个select,原因是数据中没有给字段加primary,就不会有删改增. 以及Controller的Junit测试 先导入 ...
- 预期结果 参数化parametrize
1.pytest.mark.parametrize装饰器可以实现测试用例参数化. 2.实例: import pytest @pytest.mark.parametrize("req,expe ...
- PAT 乙级 1066. 图像过滤(15)
图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来.现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换. 输入格式: 输入在第一行给出一幅图像的分辨 ...
- 【Python】socket编程-1
一.什么是socket编程:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket,编程传输层,socket本质是编程接口(API) 二.网络七层协议:物里层 数据链 ...
- 获取Map的key和value的两种方法
//使用迭代器,获取key; /*Iterator<String> iter = map.keySet().iterator(); while(iter.hasNext()){ Strin ...
- 【letcode】5-LongestPalindromicSubstring
回文串 回文串(palindromic string)是指这个字符串无论从左读还是从右读,所读的顺序是一样的:简而言之,回文串是左右对称的.一般求解一个字符串的最长回文子串问题. problem:Lo ...
- Excel导入CSV文件中文乱码
参考: iconv -f UTF8 -t GB18030 a.csv >b.csv 或iconv -f UTF-8 -t GB18030 a.csv >b.csv
- 归并排序merge_sort
将区间递归分解,直到区间只有2个元素,然后比较大小,排序,等递归回来的时候就将排序好的子区间再排序合并....一直排序合并,最后就排序完成了. (可以做范围大的逆序数的题) #include < ...