数据分区设计(1)-分区与避免热点

举报
JavaEdge 发表于 2022/08/31 23:44:43 2022/08/31
【摘要】 分区一般和复制协作:每个分区的多个节点都有副本,即某条记录属于特定分区,而同样内容会存储在不同节点,以提高系统容错性。一个节点可存储多个分区。如图-1,主从复制模型和分区组合时数据的分布情况。每个分区都有自己的主副本,如被分配给某节点,从库副本被分配给其他节点。所以,一个节点可能是某些分区的主副本,同时也是其他分区的从副本。上一篇文中讨论的复制内容都适用于分区数据的复制。分区方案选择通常独立...

分区一般和复制协作:每个分区的多个节点都有副本,即某条记录属于特定分区,而同样内容会存储在不同节点,以提高系统容错性。

一个节点可存储多个分区。如图-1,主从复制模型和分区组合时数据的分布情况。每个分区都有自己的主副本,如被分配给某节点,从库副本被分配给其他节点。所以,一个节点可能是某些分区的主副本,同时也是其他分区的从副本。

上一篇文中讨论的复制内容都适用于分区数据的复制。分区方案选择通常独立于复制,因此本文不再讨论复制。

图-1 组合使用复制和分区:每个节点充当某些分区的主库,其他分区充当从库

2 KV数据分区

海量数据想切分,如何决定在哪些节点存储哪些记录?

分区的目标:将数据和查询负载均匀分布在各节点。若每个节点平均分担数据和负载,则理论上10个节点能处理10 倍的数据量和10 倍于单节点的读写吞吐量(暂忽略复制)。

但若分区不均,则会导致某些分区节点比其他分区有更多数据量或查询负载,即倾斜,导致分区效率大幅下降。极端的,所有负载压在一个分区节点,其余9个节点空闲,系统瓶颈就是这最忙节点。这时的高负载分区即是系统热点。

2.1 避免热点

最简单的,将记录随机分配给所有节点:

  • 这能在所有节点比较均匀分布数据
  • 但缺点:试图读取特定数据时,不知保存在哪个节点,必须并行查询所有节点

可优化该方案。假设数据是KV,即总能通过K访问记录。如在一本百科全书,可通过标题查找一个条目;而所有条目按字母序排序,因此能快速找到目标条目。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。