图数据库设计实践 | 存储服务的负载均衡和数据迁移
Posted Nebula Graph Community
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图数据库设计实践 | 存储服务的负载均衡和数据迁移相关的知识,希望对你有一定的参考价值。
摘要
在文章《》中,我们提过分布式图存储的管理由 Meta Service 来统一调度,它记录了所有 partition 的分布情况,以及当前机器的状态。当 DBA 增减机器时,只需要通过 console 输入相应的指令,Meta Service 便能够生成整个 Balance 计划并执行。而之所以没有采用完全自动 Balance 的方式,主要是为了减少数据搬迁对于线上服务的影响,Balance 的时机由用户自己控制。
在本文中我们将着重讲解在存储层如何实现数据和服务的负载平衡。
1
本文目录
• Balance 机制浅析
2
Balance 机制浅析
在图数据库 Nebula Graph 中, Balance 主要用来 balance leader 和 partition,只涉及 leader 和 partition 在机器之间转移,不会增加或者减少 leader 和 partition 的数量。
3
集群数据迁移
以下举例说明 BALANCE DATA 的使用方式。本例将从 3 个实例(进程)扩展到 8 个实例(进程):
Step 1:准备工作
IP,Port 表示当前的 storage 实例。这个集群启动了 3 个 storaged 服务,并且还没有任何数据。(192.168.8.210:34600,192.168.8.210:34700,192.168.8.210:34500)
Status 表示当前实例的状态,目前有 online/offline 两种。当机器下线以后(metad 在一段间隔内收不到其心跳),将把其更改为 offline。这个时间间隔可以在启动 metad 的时候通过设置 expired_threshold_sec 来修改,当前默认值是 10 分钟。
Leader count:表示当前实例 Raft leader 数目。
Leader distribution:表示当前 leader 在每个 space 上的分布,目前尚未创建任何 space。( space 可以理解为一个独立的数据空间,类似 mysql 的 Database)
Partition distribution:不同 space 中 partition 的数目。
Step 1.2 创建图空间
Step 2 加入新实例
第一列 balanceId,spaceId:partId,src->dst 表示一个具体的 balance task。以 1570761786, 1:88, 192.168.8.210:34700->192.168.8.210:35940 为例:
1570761786 为 balanceId
1:88,1 表示当前的 spaceId(也就是 space test 的 ID),88 表示迁移的 partitionId
192.168.8.210:34700->192.168.8.210:35940,表示数据从 192.168.8.210:34700 搬迁至 192.168.8.210:35940。而原先 192.168.8.210:34700 中的数据将会在迁移完成后再 GC 删除
第二列表示当前 task 的运行状态,有 4 种状态
Succeeded:运行成功
Failed:运行失败
In progress:运行中
Invalid:无效的 task
BALANCE DATA STOP 命令用于停止已经开始执行的 balance data 计划。如果没有正在运行的 balance 计划,则会返回错误提示。如果有正在运行的 balance 计划,则会返回计划对应的 ID。
由于每个 balance 计划对应若干个 balance task,BALANCE DATA STOP 不会停止已经开始执行的 balance task,只会取消后续的 task,已经开始的 task 将继续执行直至完成。
用户可以在 BALANCE DATA STOP 之后输入 BALANCE DATA $id 来查看已经停止的 balance 计划状态。
所有已经开始执行的 task 完成后,可以再次执行 BALANCE DATA,重新开始 balance。如果之前停止的计划中有失败的 task,则会继续执行之前的计划,如果之前停止的计划中所有 task 都成功了,则会新建一个 balance 计划并开始执行。
4
批量缩容
如果移除指定机器后,不满足副本数要求(例如剩余机器数小于副本数),Nebula Graph 将拒绝本次 balance 请求,并返回相关错误码。
5
示例数据迁移
以上是关于图数据库设计实践 | 存储服务的负载均衡和数据迁移的主要内容,如果未能解决你的问题,请参考以下文章