MPP数据库CirroData以计算存储分离架构实现高扩展性与灵活调度

MPP数据库CirroData以计算存储分离架构实现高扩展性与灵活调度

计算存储分离是“云”存在的模式和形态之一,也是最有成本优势的方式之一。通过将存储层与计算层做到极致,实现规模经济与共享经济,以更少的财务成本满足业务需求。

分析型数据库 (Analytic Database),也称为数据仓库 (Data Warehouse),支持分析型处理,也叫联机分析处理OLAP (On-Line Analytical Processing),一般针对某些主题历史数据进行分析,支持管理决策。这类处理的特点是数据量大、数据密集、计算密集、算法复杂。

在上世纪九十年代,出现了一类帮助企业做分析报告,进行决策支持的软件,也就是我们说的商业智能(Business Intelligence,BI)。伴随着这类业务出现了“数据仓库”的概念。早期的数据仓库支撑的数据量和业务能力都十分有限,但随着数据量的增大以及企业业务复杂性的增加,出现了MPP技术,也就是我们所说的大规模并行处理系统,这种分布式系统的特点是存储容量大,计算速度快。GreenPlum和TeraData是其中的典型代表。

随着大数据时代的到来,一方面数据量呈爆炸式的增长,另一方面,企业的经营决策下沉,更多的中、基层管理者通过大数据技术,参与到企业的经营管理中来,使得传统的MPP数据库难以支撑。为了更好满足市场的迫切需求,新一代基于计算存储分离架构的数据库管理技术应运而生,而CirroData数据库正是在这样技术换代的背景下出现的。

1分析型数据库的架构演进分为三个阶段

MPP数据库CirroData以计算存储分离架构实现高扩展性与灵活调度

图1 分析型数据库架构演进

第一阶段:基于SMP的小型机 + 单机版传统关系型数据库,典型代表是Oracle数据库。SMP (Symmetrical Multi-Processing),对称多处理技术,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统、总线结构、以及磁盘阵列存储,也就是所谓的shared-everything架构。这种技术采用scale-up的方式扩展计算性能,CPU最大能力存在上限,可扩展性差,常见几个到十几个CPU,高端产品可以扩展到几十,很难做到上百个CPU。并且IO瓶颈明显,性能以及并行处理能力低下。此外由于多个处理器共享一个操作系统和一个磁盘阵列存储,一旦操作系统出现问题,整个机器就会完全瘫痪。但这类机型技术比较成熟,相应的软件也比较多。

第二阶段:基于X86服务器 + MPP分布式数据库,GreenPlum等是这一阶段的代表。MPP (Massively Parallel Processing),大规模并行处理系统,是由许多松耦合的处理单元组成,每个单元内的CPU都有自己私有的资源,如总线、内存、硬盘等,在每个单元内都有操作系统和管理数据库的实例副本,被称作shared-nothing架构。其最大的特点是不共享资源。MPP技术采用scale-out的方式横向扩展,投资成本相对降低,集群的计算能力和存储能力远远超过第一阶段。集群的规模在几十台服务器,侧重于海量数据的处理和查询。由于MPP集群扩展性能差,架构不易调整,因此并发量不能太高,尤其不擅长高并发小数据量查询。

第三阶段:基于X86服务器 + 新一代MPP分布式数据库,CirroData数据库就属于这一阶段的产品,我们也可以称其为基于分布式存储系统的新一代MPP。在继承了传统MPP高性能并行计算优势的同时,新一代MPP数据库引入了成熟的分布式存储技术,采用了存储和计算分离的架构,使得集群的扩展性与灵活性获得了巨大提升,集群规模能够轻松扩充到上千节点。此外,由于存储与计算分离,使得存储资源和计算资源可以根据需求,进行更灵活的划配,充分提高资源利用率。在相同集群规模下,其并发能力、任务吞吐量也有更大的提升。而多租户的灵活划分是另一大优势。

2

传统MPP数据库计算存储绑定与CirroData数据库计算存储分离的架构对比

2.1 定义

传统MPP数据库:采用shared-nothing架构,每一个节点拥有独立的计算和存储资源,每一个节点都有各自的计算引擎和存储引擎,每个节点就是个数据库,它是计算存储绑定的。

CirroData数据库:基于分布式存储系统的新一代MPP,底层是分布式存储系统,所有节点共享存储,每个节点又拥有自己独立的计算资源,整个集群的计算资源与存储资源是单独调配的,实现了计算存储分离。

2.2 数据库集群的扩展性

2.2.1 传统MPP数据库的扩展性

传统MPP数据库是计算存储绑定的架构,每个节点的CPU只能访问本地存储,不能跨节点访问。因此它要求数据在所有节点上均匀分布,同时SQL执行策略是统一调度,所有节点步调一致。由于存储是分布式的,并行I/O吞吐率很高,而多节点并行的本地化计算又提供了很高的计算性能,这都是传统MPP数据库的优势。但这种计算存储绑定的架构与调度机制却导致了很差的集群扩展性:

a) 传统MPP数据库采用master-slave架构,master节点成为瓶颈。由于集群中所有的数据和执行任务都要通过master节点进行派发和调度,所有slave节点都要由master节点进行管理。在集群规模是十几,或者几十个节点的时候,master节点都还可以正常工作。但当集群规模进一步扩大,所有数据和任务都要在数百甚至上千的节点上进行分配和调度,master的管理成本极高,性能达到上限,无法支撑,成为瓶颈,因此限制了集群的扩容。

b) 传统MPP数据库采用数据均匀分布、统一调度的策略。当集群扩容,有新的节点加入时,所有数据要在现有集群的所有服务器节点上进行重新分配 (redistribute),而这种数据迁移的操作粒度是记录级的,需要耗费大量的计算资源,直接导致集群的运行性能下降。

c) 此外,传统MPP数据库由于采用SQL执行在集群所有节点统一调度的策略。因此集群并发度存在上限,即 并发度 = 单机CPU的核数 × 2 。也就是说不能通过增加节点扩展集群规模的方式,来提高并发数。这也就造成了传统MPP数据库不敢开放给更多的应用,不敢承担to C的业务。然而随着企业的数据资产越来越多,业务量和业务种类的增加,对并发数的要求也会越来越高。传统MPP数据库解决这种问题的办法只能是建立多个数据库,但这也就形成了数据孤岛,集群间独立,无法跨库计算,需要在数据仓库内部多个集群之间二次搬动数据。

2.2.2 CirroData数据库的扩展性

CirroData数据库是采用计算存储分离的架构,计算引擎无状态,所有数据都是存储在存储引擎上的。CirroData集群中的所有节点共享底层的分布式存储系统进行数据的分布式存储。而这种计算存储分离的架构在继承了传统MPP数据库高性能优势的同时,也保证了集群非常好的扩展性。对于CirroData数据库来说,扩展到上千,甚至数千节点都非常轻松。

a)CirroData数据库并没有采用传统的master-slave架构,整个集群不存在单一的master节点。对于数据的派发、执行任务的调度、以及集群中各个节点的管理,都是通过动态分配的master节点来完成的。集群中的每一个节点都有可能成为某一时刻的master节点,这就避免了传统MPP数据库系统中单一master节点架构带来的致命问题。在CirroData数据库集群中,master节点不会成为瓶颈。

此外,由于CirroData的数据分布,与任务调度策略不同于传统MPP的在所有节点上平均哈希分配方式,而是动态灵活的进行调配。并且由于计算存储分离,计算资源与存储资源能够分开独立的进行分布和调度,因此这也保证了在集群规模非常大的情况下,master节点不需要管理整个集群的所有服务器节点,而只需要动态的去管理某个子集群即可。Master节点不再成为限制集群扩展性的制约因素,确保了CirroData数据库的高可扩展性。

b)CirroData数据库引入底层分布式存储系统。在集群扩展过程中,由于加入新的节点,分布式存储引擎也需要对数据做rebalance,即数据的重新分布。但不同于传统MPP数据库对数据进行“记录”级的重分发,分布式存储系统对数据进行“块”级的重新分布。这就意味着它的计算量会非常少,只需要做些简单的文件块拷贝,不消耗计算资源。换句话说,CirroData数据库可以在系统闲暇、网络闲暇时,在后台无感知的对数据进行基于“数据块”的重分发,从而不影响整个集群的计算性能,为集群的高可扩展性提供了可能。

c)此外,由于CirroData数据库在SQL调度执行上,并没有采取传统MPP在集群所有节点统一调度的策略,而是可以对计算资源进行灵活调配,因此它的并发度与集群规模呈线性增长。整个集群的并发数完全可以通过数据库扩容,增加节点,得到提升。这也就保证了CirroData数据库集群通过规模上的扩展,实现对业务更好的支撑,为平台接入更多应用提供了可能性和保障。

2.3 计算与存储资源的规划

传统MPP数据库:采用计算存储绑定的架构,数据在整个集群所有节点平均分布,执行任务在所有节点统一调度,这就导致对于系统资源划分的僵化和不灵活。在实际应用中,经常会遇到突发和快速增长的工作负载,需要扩容,传统MPP无法灵活的应对这种情况,要么造成系统资源的浪费,要么使得系统难以支撑高负载,直接影响对用户的服务质量 (QOS: Quality of Service)。

CirroData数据库:计算存储分离的架构和灵活的调度方式,使得我们可以对计算与存储资源单独规划。根据系统实际的负载情况,对计算资源灵活调度,按需分配,弹性扩容和缩容,既能够很好的应对突发的系统高峰值情况,又能不造成系统资源的浪费,最大化实现客户价值。

2.4 多租户的划分

MPP数据库CirroData以计算存储分离架构实现高扩展性与灵活调度

图2 CirroData多租户资源划分

正是由于CirroData数据库具备了上面所说的高可扩展性和对系统资源的灵活调度,使得CirroData一方面可以对集群的扩容,支撑大量的多租户访问,提供高性能的服务;另一方面,CirroData可以根据租户的实际需求,对计算资源进行的灵活划分,在既保证各租户数据和资源隔离的情况下又能做到多租户共享数据,充分满足用户的使用需求。

传统MPP数据库的可扩展性差,调度策略僵化,整个集群可支撑的租户数量存在上限,并且各个租户之间也难以做到很好的资源隔离与共享。

2.5 系统开销

传统MPP数据库由于采用计算存储绑定的架构,使得计算能够在本地进行,保证了集群的高计算性能。

CirroData数据库由于采用分布式存储系统,不能保证所有计算都是本地化,会出现远端读数据,进行计算的情况。这就不可避免的会有网络开销,造成一定的网络延迟。

但由于传统MPP的扩展性差,当处理的事务达到一定规模时,集群性能就会下降。而CirroData数据库的效率就会更好。

此外,早期千兆网络时,网络延迟大,一旦出现远端读,对系统整体性能影响显著。而现在已经是万兆网络,网络延迟大幅降低,系统整体性能受到的影响也就十分有限了 。

CirroData是东方国信自主研发的新一代云化数据库,至今已拥有数百名企业级客户,部署超过数千节点。CirroData采用了先进的计算存储分离架构,融合了分布式存储和MPP并行计算的各自优势,轻松实现云平台上的即时弹性伸缩和扩展。

目前,CirroData已经成功申请国家发明专利二十余项,获得国家发改委定向数据库资金支持,并入选工信部颁发的百家大数据优秀案例。


分享到:


相關文章: