大数据存储的秘密之分区

本文探讨了大数据存储中的分区概念,包括键值分区的两种方式——范围分区和散列分区,以及如何通过一致性哈希减少热点问题。此外,文章讲解了分区再平衡的必要性和策略,以及请求路由处理的三种方式,强调了服务发现的重要性。最后,以Elasticsearch为例,阐述了查询处理的query和fetch阶段,展示了如何在分布式环境中高效处理查询请求。
摘要由CSDN通过智能技术生成

分区,又称为分片,是解决大数据存储的常见解决方案,大数据存储量超过了单节点的存储上限,因此需要进行分区操作将数据分散存储在不同节点上,通常每个单个分区可以理解成一个小型的数据库,尽管数据库能同时支持多个分区操作;分区引入多分区概念,可以同时对外服务提高性能。

常常和分区一并提及的概念是复制,分区通常与复制结合使⽤,使得每个分区的副本存储在多个节点上。 这意味着,即使每条记录属于⼀个分区,它仍然可以存储在多个不同的节点上以获得容错能⼒。分区在许多技术或框架中都有体现,例如MQ中topic下的分区消息实现,如kafka中的partion、rocketmq中的queue等;例如SQL/NoSQL中分区数据储存实现,如ElascticSearch中的Shards分片、MySQL中的分表等。

关于分区,本文主要讨论下键值分区的几种方式、分区再平衡策略和请求路由处理机制等,最后以ES(ElascticSearch)的查询请求处理为例,分析分区下查询的请求处理流程。话不多说,Let's Go~

键值分区的几种方式

如果有大量数据需要分散存储,应该如何进行分区呢?分区的目前就是将数据均衡的分散在各节点,这样同时也能分散对数据的处理请求,如果分区不均衡,那么会造成某些分区有大量的数据或查询请求,这就是常说的倾斜。数据倾斜会造成高负载节点形成热点,避免热点可以使用随机路由方式将数据散列到各分区中。对数据进行分区操作,不能仅仅是随机数据存储,因为存储之后肯定还是要进行查询的,所以要按照固定键值来进行散列分区操作,方便后续查询请求的路由。常见的键值分区方式有按照范围分区、按照键的散列分区:

按照范围分区

按照范围分区就是每个分区存储指定一段连续的数据,比如按照时间戳来存储数据,最简单常见的日志按照时间分割为不同的文件;按照编号id来存储数据,如图书馆书籍陈列,编号连续数据存放在同一个书架上。按照范围分区有时候会造成分区数据不均衡,比如按照时间戳,可能某段时间内数据比较少而某些时间段数据较多而造成分区不均衡。

键值散列分区

由于按照范围分区容易造成数据负载不均衡问题,所以一般应用场景下(非顺序类

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值