昆仑分布式数据库架构介绍

2022-01-06 00:00:00 数据 集群 数据库 分布式 节点
一、前言

昆仑分布式数据库集群(下文简称昆仑数据库)是一个分布式关系数据库管理系统,面向TB和PB级别海量数据处理,以高吞吐量和低延时处理海量数据高并发读写请求。

它提供健壮的事务ACID保障,高效易用的分布式查询处理,高可扩展性,高可用性和透明的分库分表数据处理功能,业务层和终端用户无感知的水平扩展能力,是典型的 NewSQL分布式数据库系统。应用软件开发者按照使用单节点关系数据库相同的方法使用昆仑数据库,就可以得到所有上述NewSQL数据库的优点,完全不需要考虑数据的分区方式等存储细节。


这样,应用开发者就可以非常快速的开发健壮可靠的,高可用和高可扩展的信息系统,来处理PB级海量数据。所有的海量数据管理的挑战和困难都由昆仑系统来解决,从而大大降低了开发分布式系统的时间成本和资金成本和技术难度,并且全面提升其产品质量,大大加快应用开发和变更过程中的上线进度。


二、架构

昆仑分布式数据库架构图解

一个昆仑数据库集群有3类组件构成:一个或者多个计算节点,一个或者多个存储shard以及一个元数据集群

2.1 计算节点

本软件是昆仑数据库的计算节点,基于PostgreSQL-11.5开发。为了实现自动的DDL同步及复制以及分布式事务,分布式查询处理等功能,我们大量地修改了PostgreSQL源代码,而不是直接使用其FDW接口。我们的代码保持了很好的模块化,方便将来可以继续跟随PostgreSQL版本更新。

kunlun-storage是昆仑数据库的存储节点,它是我们基于percona-server-8.0深度优化开发的MySQL分支。用户必须使用kunlun-storage软件组建昆仑数据库的存储集群和元数据集群,因为昆仑数据库集群需要的关键功能只存在于kunlun-storage中,并且它还包含了社区版MySQL-8.0 XA事务处理的所有容灾缺陷的修复;后,kunlun-storage在XA事务处理方面比社区版mysql有大幅性能优化。计算节点使用PostgreSQL协议(后续会支持MySQL客户端协议)接收和验证用户的连接请求,验证通过后,就接收和处理连接上发来的查询并返回结果给客户端。

2.2 存储shard

用户可以根据工作负载来增减计算节点,每个计算节点彼此平等和独立,没有依赖关系,都可以处理用户连接和读写请求。计算节点含有每个数据表以及其他数据库对象的元数据,但是用户数据存储在存储shard中。

执行一个SQL时,计算节点解析该语句,然后对它做分布式查询优化,然后通过与后端存储shard做交互来完成分布式查询执行。交互的方法就是根据SQL语句的需要和数据在后端shard的分布信息,为相关的后端存储shard生成SQL语句。

如果执行的SQL语句是 SELECT 或者 INSERT/DELETE/UPDATE...RETURNING 而不是简单的 INSERT/DELETE/UPDATE, 那么计算节点会并发地发送语句然后接收结果,后合并处理所有后端存储shard返回的结果,形成终的查询结果,返回给客户端。

每个存储shard 存储着一部分用户表或者表分区,每个shard的数据子集没有交集;每个存储shard是一个MySQL binlog复制集群,通过标准的MySQL MGR single master 模式或者基于传统的row based binlog复制的强同步机制来实现高可用性。

一个shard的主节点接受来自计算节点的读写请求,执行请求并返回结果给计算节点;启用了备机读功能时,shard的备节点可以接收和处理来自计算节点的只读请求。

用户可以根据数据量的增加和减少来增加和较少存储shard,数据会自动均匀分散到所有shard上面,从而达到自动和透明的高可扩展性。

2.3 元数据集群

元数据集群也是一个MySQL binlog复制集群,存储着一个昆仑数据库集群的元数据。多个数据库集群可以共用同一个元数据集群。

后,昆仑数据库还有一个cluster_mgr程序,它负责维护正确的集群和节点状态,占用资源极少。

点击阅读原文

推荐阅读

KunlunBase技术优势介绍
KunlunBase技术特点介绍
KunlunBase集群基本概念介绍

END

昆仑数据库是一个HTAP NewSQL分布式数据库管理系统,可以满足用户对海量关系数据的存储管理和利用的全方位需求。
应用开发者和DBA的使用昆仑数据库的体验与单机MySQL和单机PostgreSQL几乎完全相同,因为首先昆仑数据库支持PostgreSQL和MySQL双协议,支持标准SQL:2011的 DML 语法和功能以及PostgreSQL和MySQL对标准 SQL的扩展。同时,昆仑数据库集群支持水平弹性扩容,数据自动拆分,分布式事务处理和分布式查询处理,健壮的容错容灾能力,完善直观的监测分析告警能力,集群数据备份和恢复等 常用的DBA 数据管理和操作。所有这些功能无需任何应用系统侧的编码工作,也无需DBA人工介入,不停服不影响业务正常运行。
昆仑数据库具备全面的OLAP 数据分析能力,通过了TPC-H和TPC-DS标准测试集,可以实时分析新的业务数据,帮助用户发掘出数据的价值。昆仑数据库支持公有云和私有云环境的部署,可以与docker,k8s等云基础设施无缝协作,可以轻松搭建云数据库服务。
请访问 http://www.kunlunbase.com/ 获取更多信息并且下载昆仑数据库软件、文档和资料。
KunlunBase项目已开源
【GitHub:】
https://github.com/zettadb
【Gitee:】
https://gitee.com/zettadb

相关文章