全面讲解分布式数据库架构设计特点
2019/11/19 17:33:19
 
 
数据库作为基础软件中的重要一环有着很深的技术含量,在这样的大背景下国产数据库厂商开始发力,这其中分布式数据库如雨后春笋般出现,良性的竞争环境使它们都得到了长足的发展,其中不乏优秀的产品,本文主要挑选目前几个相对成熟数据库进行架构特点介绍。
作者:张小海来源:51CTO
【51CTO.com原创稿件】行业背景
随着全球经济下行压力增大,中美贸易摩擦愈演愈烈,美国一系列的经济制裁和技术封锁使得我们有种被扼住咽喉的感觉,数据库作为基础软件中的重要一环有着很深的技术含量,在这样的大背景下国产数据库厂商开始发力,这其中分布式数据库如雨后春笋般出现,良性的竞争环境使它们都得到了长足的发展,其中不乏优秀的产品,本文主要挑选目前几个相对成熟数据库进行架构特点介绍。
分布式数据库总体架构
分布式数据库总体设计有两个思路和方向,一个是基于共享存储的架构(share everything),另一个是基于数据分片的架构(share nothing)。
共享存储的架构特点是底层存储共用一份数据池子,上层数据库server层可以弹性扩展,典型的案例像DB2 pureScale,Oracle RAC,阿里云PolarDB等,这种架构的好处是天然适合做云数据库,比如阿里云,上层的SQL引擎可以是MySQL也可以是PG,而且可以无限扩展,底层的存储其实是一起的,用户申请只是申请几个上层的MySQL或者PG server同时在底层存储开辟一块空间给用户,这样的话可以做到资源的弹性伸缩。这种架构的数据库严格意义上不能称之为分布式数据库。
数据分片架构的特点是底层数据通过一定的规则比如hash或者range让数据打散分别分布到不同的数据节点上,计算时底层多个节点共同参与计算,可以算是一种mpp并行计算的架构,同时数据节点可以扩展,上层由协调节点进行SQL解析和转发,这是目前典型的分布式数据库架构,也是本文讨论的重点。
目前分布式数据库的总体架构设计基本都和下图相差不大,每种产品在不同组件的实现上存在差异,但大体架构上类似。 
 
从图中可以看到分布式数据库三大组件:协调节点、数据节点、全局事务管理器。协调节点负责SQL解析转发,充当的是类似proxy的角色,数据节点负责计算和数据存储,全局事务管理器负责全局事务读一致性的保证。
下面分别介绍一下目前主流的分布式数据库的架构以及设计差异。
1.TiDB
TiDB是目前在互联网界风靡的一款分布式数据库,由PingCAP公司研发,由三大组件构成,底层TiKV Server是Github开源组件,是一个分布式的kv存储引擎,做数据存储,对应数据节点;上层TiDB Server由PingCAP公司研发,用作SQL解析和转发,对应协调节点;PD Server复制全局时间戳分配,对应全局事务管理器。下面列举了它的架构特点:
①轻量化,深受互联网公司喜爱,适合与容器进行集成,当前PingCAP公司也在做TiDB operator,将TiDB容器化。
②部署简便,基于Ansible Playbook实现自动化部署。
③实现了基于Region级别的raft复制,将数据表拆分成一个个的Region,Region一主两备基于raft协议做复制,同时Region还会根据负载情况进行合并和分裂,由PD Server进行负载均衡调度。
④使用隐藏列作为分布列,分布列不占用真实列,这样在进行数据修改时数据不需要进行重分布,大致原理是使用表名和主键前面加上前缀信息作为隐藏列,再使用该列进行hash分布。
⑤TiDB Server总体兼容MySQL语法,这个兼容并不是将MySQL Server直接拿过来使用,因为TiKV底层是kv的存储模型,所以TiDB在执行sql的时候需要做sql到kv的映射。
⑥TiKV可以看成一个大的数据池子,在物理机层面不存在哪个机器是主,哪个是备,所有机器都是主节点,热点数据会自动进行动态负载均衡,数据是动态移动的。
⑦总体借鉴了Google spanner f1和bigtable的论文,

下一页
返回列表
返回首页
©2024 人工智能世界_专注人工智能领域,汇集人工智能技术资料 电脑版
Powered by iwms