2019 年 7 月 19-20 日,以“运筹帷幄,数揽未来”为主题的 DAMS 中国数据智能管理峰会在上海青浦区成功举办。在 DAMS 峰会上,巨杉数据库为大家带来了题为“云架构下的分布式数据库设计与实践”的主题分享。
微服务下数据库架构的演进
应用开发从传统架构向分布式转型,最先面临改造的自然就是应用程序框架。如今的微服务框架已经非常成熟,其代表性架构往往包括协议处理、服务拼装、原子服务、以及底层持久化四层。业务逻辑从传统的单一中间件被拆解成众多微服务模块,每个微服务模块由完全对等的一系列容器构成,可以简单通过增加容器的方式实现对该服务吞吐处理能力的扩容。
但是微服务的拆分即意味着每个服务都拥有自己独立的执行逻辑与存储。从数据库的角度来看,微服务体系的拆分对数据库存储提出了极大的挑战。如果每个微服务依然将数据存放在传统的单点数据库中,其存储与处理能力均无法随着微服务容器数量的上升提供同样的扩展能力。在这种情况下,数据库将会成为微服务体系框架中性能与扩展性的最大制约瓶颈。
而如果每个微服务使用独立的数据库进行存放,整个企业 IT 的数据架构将会变得支离破碎。数据库的数量从过去的几百被拆分为上万个数据库,整个运维团队的管理成本与数据库采购成本面临几何级数的提升。
因此,分布式数据库的目标不仅仅作为传统 Oracle 或 DB2 的单一替代,将一个数据库存放不下的数据放到多个物理机存放。在实际环境中,大部分银行都有着较为完善的数据生命周期管理策略,一般不会在生产环境中堆积大量的历史数据,因此数据量一般来说不会是使用分布式数据库的最重要原因。
新一代分布式数据库技术特性
为了支撑未来 IT 微服务框架,分布式交易型数据库的引入需要从传统技术兼容性、以及新技术前瞻性两个维度进行评估。
“当应对微服务应用框架,原生分布式数据库架构优势在于两点。第一,是解决数据的弹性扩张,使每个微服务不受底层数据存储限制。第二,解决微服务应用架构中数据严重碎片化的问题。”
ACID 的支持与 SQL 完整性的支持是评估一款新型分布式数据库是否能够提供与传统数据库技术兼容的两大关键指标。
ACID 的支持
从安全性上来看,不论采用新技术或传统技术,数据不错不丢是所有数据库的必备基础。在分布式数据库业界中,一些针对互联网技术设计的产品以分布式(Partition Tolerance)加高可用(Availability)作为目标,在安全一致性(Consistence)上无法保证数据的正确,很难在金融业务中被广泛使用。因此,银行所关注的新型分布式数据库必须首先保证数据的安全和一致性,其中分布式事务、分布式锁、四种隔离级别的支持等都是该指标中的关键技术点。
SQL 完整性支持
SQL 完整性指的是新型分布式数据库与传统关系型数据库的开发友好性。越是成熟的分布式数据库,其 SQL 语法越能做到与传统关系型数据库兼容,同时其数据切分对应用程序则越发透明。如今大部分分布式数据库技术都号称支持 MySQL 语法,而主流新型应用程序也都将 MySQL 作为其默认支持的数据库选项。因此,对 MySQL 语法协议支持的强弱则成为分布式数据库 SQL 完整性支持的评判关键。
新技术前瞻性指的是分布式数据库与未来开发方式和 IT 架构是否吻合。
分布式与弹性扩展能力
作为数据服务资源池,分布式数据库必须做到可弹性扩张,才能在服务于上层不断增加微服务类型与数量。同时对于每个微服务来说,其数据存放在一台物理设备还是多台物理设备,必须对其中的应用代码完全透明。
多模式引擎
服务于上层来自不同开发商、不同业务场景、不同数据类型的微服务,分布式数据库必然需要支持多种 SQL 协议与计算引擎。从存储引擎来看,结构化与半结构化数据都可能将会在应用中同时使用。因此,新一代分布式数据库需要从访问接口到存储结构均支持多模(Multi-Model)引擎。
HTAP(Hybrid Transactional/Analytical Processing)
HTAP 即混合交易分析处理能力。在传统银行 IT 架构中,联机交易与统计分析系统往往采用不同的技术与物理设备,通过定期执行的 ETL 将联机交易数据向分析系统中迁移。而作为数据服务资源池,同一份数据可能被不同类型的微服务共享访问。当一些联机交易与审计类业务针对同一份数据同时运行时,必须保证请求在完全隔离的物理环境中执行,做到交易分析业务无干扰。
总体来说,分布式数据库技术趋势需要从传统技术兼容性以及新技术前瞻性两个维度进行评判,其中 ACID 数据安全与 SQL 完整性是传统技术兼容性的重要指标,而弹性扩展能力、多模式引擎、以及 HTAP 则是新技术前瞻性的几个重要衡量标准。
SequoiaDB 巨杉数据库技术优势
微服务架构下云化的管理
在未来微服务化应用开发以及云化平台的趋势下,应用不再以“烟囱式”的中间件加数据库模式进行构建,而是采用数千甚至上万的微服务程序构建成的复杂网状模型。
新一代分布式数据库针对微服务架构,将会提供数据库的实例化部署,帮助数据库与上层微服务实现更好的对接,数据库也将提供云化管理方式,保证庞大复杂的微服务能够实现更细粒度管理。
针对微服务应用架构,用户可以在同一个集群中创建成百上千个不同的关系型数据库实例。数据库实例的访问与使用方式和传统关系型数据库 100% 兼容,同时其底层所使用的数据从逻辑上完全独立,每个实例拥有自己独立的权限管理、数据管控、甚至可以选择部署在独立的硬件环境或共享设备中。
SequoiaDB 巨杉数据库支持数据库服务实例化。从应用程序开发者与 DBA 的角度看,SequoiaDB 巨杉数据库所提供的关系型数据库实例,与传统 MySQL、PostgreSQL 和 SparkSQL 保持全兼容。
存储资源池化,弹性扩展
随着海量数据管理需求不断增加,数据库存储的扩展性也成为支撑整个数据平台的重要核心能力。SequoiaDB 采用分片技术为系统提供了弹性的横向扩展机制,可以根据应用需求调整存储;实现了存储引擎的多模数据管理,支持非结构化、结构化和半结构化数据全覆盖并统一管理,让数据库平台场景更多样,也能符合云数据架构下对于多样化业务数据的统一管理与运维要求。
SequoiaDB 的分片过程对于应用程序来说完全透明。该机制解决了单台服务器硬件资源(如内存、CPU、磁盘 I/O)受限的问题,并不会增加应用程序开发的复杂性。巨杉数据库通过原生分布式架构,可以轻松实现 PB 级别数据管理,目前生产环境最大支持超过 1500 个节点集群,实现全量数据全生命周期管理。
同时,在一个大型集群中,SequoiaDB 提供了多维度、多层级的逻辑与物理隔离能力。在一个典型的数据资源池类型基础数据服务平台(DBaas,DataBase As A Service)中,SequoiaDB 巨杉数据库能够同时服务于成百上千个不同 SLA 服务级别、优先级、业务特性、与数据量的应用程序,并保证应用程序之间的数据逻辑与物理隔离。
分布式交易与事务
从安全性上来看,不论采用新技术或传统技术,数据不错不丢是所有数据库的必备基础。在分布式数据库业界中,一些针对互联网技术设计的产品以分布式(Partition Tolerance)加高可用(Availability)作为目标,在安全一致性(Consistence)上无法保证数据的正确,很难在银行业务中被广泛使用。因此,大型企业用户会所关注的新型分布式数据库必须首先保证数据的安全和一致性,其中分布式事务、分布式锁、四种隔离级别的支持等都是该指标中的关键技术点。
云化和微服务架构下,SequoiaDB 分布式架构下,提供完整的 ACID 支持,完整的事务支持和一致性保障,充分保证数据安全,满足核心交易业务的严苛要求。
传统应用兼容
作为新一代分布式数据库,其架构与功能特性需要保证在与传统数据库全兼容的基础上,拥抱微服务与云计算框架。因此,分布式数据库对于分布式交易与 ACID 必须保证与传统技术完全兼容。同时,在面向微服务应用开发与云计算基础架构时,新一代分布式数据库必须支持弹性扩张、资源隔离、多租户、可配置一致性、多模式(支持各类 SQL 协议)、集群内可配置容灾策略等一系列功能。
其中,SQL 的支撑是数据库产品最为重要的技术特性。SequoiaDB 提供了原生的完整 SQL 支持。