数据分区设计(1)-分区与避免热点
【摘要】 分区一般和复制协作:每个分区的多个节点都有副本,即某条记录属于特定分区,而同样内容会存储在不同节点,以提高系统容错性。一个节点可存储多个分区。如图-1,主从复制模型和分区组合时数据的分布情况。每个分区都有自己的主副本,如被分配给某节点,从库副本被分配给其他节点。所以,一个节点可能是某些分区的主副本,同时也是其他分区的从副本。上一篇文中讨论的复制内容都适用于分区数据的复制。分区方案选择通常独立...
分区一般和复制协作:每个分区的多个节点都有副本,即某条记录属于特定分区,而同样内容会存储在不同节点,以提高系统容错性。
一个节点可存储多个分区。如图-1,主从复制模型和分区组合时数据的分布情况。每个分区都有自己的主副本,如被分配给某节点,从库副本被分配给其他节点。所以,一个节点可能是某些分区的主副本,同时也是其他分区的从副本。
上一篇文中讨论的复制内容都适用于分区数据的复制。分区方案选择通常独立于复制,因此本文不再讨论复制。
2 KV数据分区
海量数据想切分,如何决定在哪些节点存储哪些记录?
分区的目标:将数据和查询负载均匀分布在各节点。若每个节点平均分担数据和负载,则理论上10个节点能处理10 倍的数据量和10 倍于单节点的读写吞吐量(暂忽略复制)。
但若分区不均,则会导致某些分区节点比其他分区有更多数据量或查询负载,即倾斜,导致分区效率大幅下降。极端的,所有负载压在一个分区节点,其余9个节点空闲,系统瓶颈就是这最忙节点。这时的高负载分区即是系统热点。
2.1 避免热点
最简单的,将记录随机分配给所有节点:
- 这能在所有节点比较均匀分布数据
- 但缺点:试图读取特定数据时,不知保存在哪个节点,必须并行查询所有节点
可优化该方案。假设数据是KV,即总能通过K访问记录。如在一本百科全书,可通过标题查找一个条目;而所有条目按字母序排序,因此能快速找到目标条目。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)