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的效果。




