GoldenDB是国产的分布式数据库。它彻底解决了事务一致性,数据实时一致性的问题。采用的是Shared Nothing(分片式存储)的分布式架构。就是不共享数据,各自节点持有各自的数据。对比不共享的,还有其他两种分布式架构,分别是Share disk,共享磁盘,例如NFS,网络文件系统,采用的就是这种架构。 NFS是一种基于客户端-服务器架构的文件系统。它通过网络,特别是局域网,让多台计算机可以共享文件和目录。还有一种就是Share Storage,共享存储,HDFS就是采用的该种架构。hdfs底层文件存储通过在不同节点存储相同副本保证可用性。
分片式存储中,每个节点持有各自的分片数据,节点采用主备架构。由管理节点控制,如果主节点挂了,备用节点转为主节点继续工作。GoldenDB采用了一致性哈希算法来保证数据的一致性。一致性哈希算法将数据映射到一个哈希环上,相邻节点负责存储相邻数据片的数据。这种方式可以保证当节点加入或离开系统时,只有少量的数据需要重新分配。
提到分布式事务,先说一下GoldenDB事务隔离级别,分为读语句隔离级别和写语句隔离级别。
读语句级别分为两种,第一个中是非一致性读,不加锁,可以读到事务未提交的数据。强一致性读,先查询活跃GTID,后查询数据,严重保证事务已经提交才能读取到。。
写语句级别:单事务写,不判断写写冲突,存在写冲突。强一致性写,判断是否数据是否被其他事务在写。
goldendb引入GTM,保证全局事务的一致性。分布式事务采用一阶段提交方案,提升系统处理的性能。简单说一下事务失败之后的回滚流程:
事务开始的时候DBProxy从GTM申请GTID,然后各节点开始执行对应事务。某个节点出现异常,
这个时候,DBProxy将GTID发送给DB节点上部署的事务回滚组件DBagen,
然后,DBAgent解析该事务的Binlog,然后对数据进行回滚
最后,当所有DB分片回滚完成后,再释放GTID。
分布式处理能力也很强,它可部署多个计算节点,各个计算节点都是无状态的,可以横向增加计算节点数量。