暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GoldenDB极致的单机副本可提供读写服务,高效强一致性的分组管理

原创 分布式数据库 2025-05-28
130


1. 高低水位

在分布式数据库中,数据节点可能部署在各个机房里,各个业务对业务的高可用要求也不一致,GoldenDB通过提供gSync同步复制的高低水位配置,来满足不同用户在数据高一致和业务高可用之间的权衡需求。同时通过灵活的配置手段,可实现异常接管时RPO为0:

数据库提供高水位和低水位两个配置项,其中的水位对应的是最新的数据同步到的备机节点数目。控制参数具备多粒度能力,可以在配置文件和语句中进行设置。系统级可以通过在配置文件中设置;语句级可以通过set命令使用SQL进行设置。

2. 极端场景下单机副本也需要提供读写服务

同时考虑在满足一致性的前提,最大化系统可用性,提供单机可读写配置。当安全组内出现极端时,可用设备只有单机副本时,此时可支持系统继续提供读写服务。为保证数据一致性,如果此时可用备机数据没有追平主机的情况下,系统无法切换主备,防止主备不一致时,切换导致数据丢失。只有等到主备完全一致才会切换,否则该安全组停止服务。

在高水位以上时,表明数据库运行在最大保护模式;

在高低水位之间,表明在超时之前数据并未复制到足够多的备机上,会产生告警,但此时数据仍然安全;

在低水位以下时,数据库存在丢数据的风险,只会提供读服务。

通过选主策略以及水位控制可以防止分片内部脑裂,提高数据安全性。

l以1主4备为例,不同需求的用户可以做如下配置用户配置的影响:

3. gTank分组管理

在数据库主备复制过程中,我们通过高水位配置,来让数据库的数据同步运行在一个安全的状态。

但是在一个2N+1个节点的网络中,仍然需要保证N+1个节点完成提交,才能对外服务。对于一个大的分布式网络系统来说,保障N+1个节点完成提交,成本仍然太高,系统吞吐效率降低。

为此,我们采用了gTank分组管理来进行优化,对于图中1主4备共5个副本的复制网络,分组前高水位设置成3个节点;分组后,以组来进行高低水位的计数,对应高水位只需要设置成2个节点,达到了精简响应并保证RPO=0的效果。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论