cassandra读路径工作流程图

在这里插入图片描述
重要概念理解:

1、分区器

分区器是一个哈希函数,用来计算一个分区的令牌,每个数据行通过分区键令牌值分布在集群中。因此,分区器确定如何在集群中的各个节点(包括副本)之间分配数据。。

2、snitch

通过snitch可以获取到集群的拓扑结构,snitch的作用是帮助识别能快速返回的副本(性能最好的副本),从而向该副本查询完整的数据。

动态snitch实现使用Gossip所用的Phi故障检测机制的一个修改版本,可以把请求路由到性能最好的副本上。

3、协调器

协调器使用分区器来确定副本并检查是否有足够的副本能够满足请求的consistency level,假如协调器本身不是该请求的副本,此时协调器会把读请求发送到最快的副本上(最快的副本是由snitch确定),协调节点还会向其他副本发送一个摘要请求,副本会返回所请求的摘要或者哈希。

4、提交日志

5、memtable

memtable是没存中的一个特定的数据结构,写入提交日志后,值会写入memtable,每个memtable包含一个特定的表的数据。memtable的数据在达到设定的阈值时,将数据刷新到磁盘上的SSTable文件,然后在创建一个新的memtable。

在读操作时,同时对memtable和sstable进行发起查询。

6、键缓存

存储分区键到行索引条目的一个映射,以便更快的读取存储在SSTable中的数据。使用的是jvm堆内内存。

键缓存实现一个映射结构,其中键是SSTable文件描述符和分区键的组合,值是SSTable文件中的偏移位置。利用键缓存可以避免在SSTable文件中查询频繁的数据。

7、行缓存

缓存所有行。使用的是堆外内存,默认关闭。

8、布隆过滤器

布隆过滤器是检查一个元素是否属于一个集合的一种非确定性算法,使用一个哈希函数将一个数据集中的值映射到一个位数组,并将一个较大的数据集简缩为一个摘要字符串。

布隆过滤器可以误报结果,但不会漏报结果。

9、读修复

协调器向所有副本发出一个完全读请求,协调器为所请求到的各个列选择的值来合并数据,比较副本返回的值

并返回最新时间戳的值。、

读修复可以在返回客户端之前完成,也可以在返回客户端之后完成,这取决于consistency level。强一致性级别的:quorum、all,是发生在数据返回客户端之前;弱一致性级别:one、two等,是发生在数据返回客户端之后。

cassandra提供了一个读修复概率的特性,有参数read_repair_chance(默认关闭)和dc_local_read_repair_chance(默认开启值:0.1或10%)可配,默认关闭。如果开启此功能,会造成集群内存大约20%的读负载的成本,建议不开启。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值