(6)数据分区

2021-01-13  本文已影响0人  hedgehog1112

概要:1分区方式:关键字、哈希值、解决负载倾斜

           2分区与二级索引:基于文档(读慢)、基于词条(读快,写慢)

           3分区再平衡:固定数量分区(调与节点关系)、动态分区(阈值)、按节点比例分区

           4请求路由:任意节点(有则处理,没有转发)、发路由层(转发)、感知分区和节点关系

一、分区方式

目标均匀分布。最繁忙几个为热点。知道数据在哪,避免向所有查

1、基于关键字分区

为每个分区分配一段连续关键字区间。根据关键字所在区间上下限,直接请求节点

缺点:数据倾斜,如单词表,x,i,o等开头单词少

解决:调整分区边界、选合适关键字

2、基于关键字的哈希值分区

优点:更均匀:并不能均匀分配负载,需一致性哈希。

缺点:失去良好区间查询特性,相邻关键字可能在不同分区

3、解决负载倾斜

同一个关键字的大量读写,所有请求都到同一个分区。如明星分手

应用层解决:关键字后面添加两位数序号,分配到100个不同的分区上。但合并开销大

二、分区与二级索引

二级索引:不能唯一标识一条记录,不能规整映射到分区

1、基于文档

分区完全独立,各自维护自己二级索引。查时向所有分区发读请求,合并结果,代价高

2、基于词条

构建全局索引,也分区。

优点:读高效,索引中包含的词条为关键字,向包含该词条的分区查询

缺点:写慢,因为更新数涉及多个二级索引写放大(可能在不同节点上)。都是异步更新,刚不即查到

三、分区再平衡

增加cpu、磁盘、内存后,或者节点故障后,负载再平衡过程中保持可用性。避免不必要迁移,减少网络和磁盘I/O。动态再平衡策略:

1、固定数量分区

分区总数分区和关键字映射关系不变节点数变调整分区和节点映射关系

2、动态分区

自动调整分区边界。到一个阈值时,分裂,转移到其他节点平衡负载,类似b树

优点:自动适配,少量数据开销小,大量数据可配置最大值

3、按节点比例分区

前两种策略,分区数节点数无关。

此策略,节点分区数固定。节点数不变时,分区数据量和数据集大小正比。新节点加入,随机选固定数分区进行分裂。ps:随机选前提是基于哈希分区(可一致性哈希),如Cassandra和Ketama

五、请求路由

客户端如何知道连哪个节点:

1、允许连接任意节点,如节点有请求的分区,则处理,否则转发给别的节点。

2、发送给路由层,转发给对应节点

3、感知分区和节点关系,连接到目标节点

Zk:每个节点向zk中注册自己,zk维护分区到节点关系。客户端向zk订阅,分区和节点变时,zk主动通知路由层

上一篇 下一篇

猜你喜欢

热点阅读