`
骑猪逛街666
  • 浏览: 144147 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

OceanBase:新一代面向金融的分布式关系数据库

 
阅读更多

阅读原文请点击

摘要: 作者 蚂蚁金服研究员 冯柯首先回答OceanBase是什么?我记得在一两年以前,在很多的技术社区里,经常会碰到这样的问题,有同学问OceanBase到底是不是一个数据库,是不是一个Key-Value数据库?甚至有同学问阿里的数据库是怎么研制出来的,是不是从一个开源的数据库改造而来的?最近一段时间这样的问题已经非常少了,但是我还是想简单说一下。


image
作者 蚂蚁金服研究员 冯柯

首先回答OceanBase是什么?我记得在一两年以前,在很多的技术社区里,经常会碰到这样的问题,有同学问OceanBase到底是不是一个数据库,是不是一个Key-Value数据库?甚至有同学问阿里的数据库是怎么研制出来的,是不是从一个开源的数据库改造而来的?最近一段时间这样的问题已经非常少了,但是我还是想简单说一下。OceanBase它是由阿里巴巴、蚂蚁金服集团自研的数据库,我们拥有对OceanBase所有源代码的完整的知识产权。

如果在三年前让我说OceanBase是什么?我可能会说OceanBase是一个分布式的存储系统,但是发展到今天,再让我来说,我可以非常自信的告诉大家,OceanBase它已经是一款通用的全功能的关系型数据库产品。


image


作为一款基于分布式架构的这样一个数据库,OceanBase有非常多的技术优势,但这里面最为核心的我觉得是OceanBase它能够完全的基于普通的PC服务器,来构建一个能够满足金融级的可靠性和数据一致性要求的数据库集群。

前面提到OceanBase是一款自研的数据库,其实像数据库这样的我们把它叫做基础软件类的产品,国内目前在自研基础软件类产品的团队其实还有很多。那对于所有的这样的团队来说,其实在他们的发展过程当中都会面临一个非常关键,同时也是事关生死的问题,就是你如何让你的客户相信你的产品是稳定可靠的,你的产品是可用的?那要证明这一点,很多时候是需要这个产品在典型的应用中长时间的稳定运行,所以很多时候就会形成一种死结。

OceanBase是诞生并成长于阿里巴巴、蚂蚁金服集团这样的快速增长的互联网企业中,这样一个快速增长的互联网企业它本身就是一个巨大的数据库的应用市场。所以OceanBase这几年的发展实际上就是在这个市场中不断去证明自己的过程,通过在这个市场中的持续的应用来帮助OceanBase加快产品成熟,来帮助OceanBase去度过了对于一个自研的基础软件产品来说最为艰难的应用关。

而蚂蚁金服也通过OceanBase的应用,真正实现了所有核心业务100%的去O。到了今天,OceanBase已经在数十个关键业务上上线运行,这里面包括了支付、交易、账务,也包括了网商银行等等系统。这里面很多的核心系统实际上已经稳定运行了多年,期间也经历了多次的双十一大促这样的实战的考验。


image


在去年我们正式发布了OceanBase的最新产品OceanBase1.0。OceanBase1.0在整个系统架构和产品的性能和兼容性方面都取得了长足的进步,最重要的是OceanBase1.0它是整个OceanBase产品发展史上第一款真正具备大规模应用和推广能力的产品。

接下来会从几个方面向各位介绍OceanBase的一些重要的特性:

扩展性


image


我们知道商业数据库扩展模型本质上就是一种单机扩展,通过在系统中引入处理能力更强,可靠性更高,但是价格也更昂贵的软硬件设备解决系统的可靠性和扩展性问题,这样一种扩展模型我们也叫做垂直扩展。垂直扩展有它非常重要的优点,它的优点是整个系统的整体交付度非常好,所以垂直扩展对业务是非常友好的。

但是垂直扩展有两个缺点:第一成本非常高,第二扩展性比较差。在以互联网行业为代表的企业,它在面对自身的业务的快速增长和现有的IT系统在扩展性、成本方面的矛盾的时候,它选择了在数据库以外来解决系统的可靠性和扩展性的问题。简单的说就是在业务层面,在业务的数据层面进行拆分,把原来有一个数据库集群完成的功能划分成了多个独立的单机数据库。把原来许多由数据库应该完成的功能去交给一个统一的中间层来管理,这就是我们经常说的分库分表模型。

这种分库分表模型有它非常重要的优点,有两点:

第一点就是整个数据的划分是在应用的设计初期就已经决定的,所以这种模型通常它有比较好的水平的扩展能力。

第二点就是这种以中间层为核心的扩展大大降低了对于硬件,包括对于数据库自身的依赖,所以使得整个系统的成本能够显著的降低。

但是这种中间成本模型有一个非常重要的缺点,就是它对业务的侵入是非常重的,采用这样的模型通常需要业务本身进行比较大的改造。对一个企业的整体的IT建设能力,包括它的运维能力都提出了一个很高的要求。所以目前我们看的这样的一种模型如果要复制到互联网以外的行业其实是存在非常大的挑战的。

OceanBase希望在这方面能够做得更多,希望通过我们产品本身的能力,能够把系统的可靠性和扩展性问题重新纳回到数据库的范围中来。基于一个统一部署的分布式的数据库集群,用户使用OceanBase不需要了解数据怎么分布,不需要去感知负载怎么均衡,甚至不需要关心系统怎么容灾,从而能够在继续保持一个低成本、线性扩展的基础之上尽可能的降低对现有业务的改造,简化业务架构的设计。所以这就是OceanBase一个非常重要的客户价值:对业务透明。

我前面说OceanBase是一个扩展性很好的分布式集群,但是其实了解OceanBase的同学可能知道,在早期的OceanBase场景里面,系统实际上是存在单点的。具体说就是集群当中每一个节点都可以提供读服务,但只有一个节点可以提供写服务,有点像传统的读写分离的设计。这是早期性的选择,这个架构的问题是,系统的可靠性和扩展性是单点的,业务写入能力的提升依靠垂直扩展,所以在OceanBase的1.0当中我们首先就解决了这个问题,真正实现了全对等的集群。在目前集群当中,所有的节点都可以提供读写服务,这就使整个系统的扩展性和可靠性有了质的飞跃。这种架构的推出也使得OceanBase的整体架构趋于稳定了,这一点非常重要,这就使得OceanBase在接下来的产品和技术这边能够加快发展奠定了很重要的基础。


image


在OceanBase1.0当中,我们也正式引入了数据分区的概念。数据分区是目前的OceanBase实现扩展性和高可用的基本单位。数据分区和我们说的分库分表中的分表在功能上非常类似,都可以支持扩展,但是唯一的差别是数据分区是通过数据库内核自身实现的。用户通过定义数据分区,系统可以帮助业务自动完成多机的扩展以及系统自动的容灾,整个过程是对业务透明的。我们希望未来有更多的业务能够使用分区,替代掉已有的分表,帮助他们简化在中间层的设计。


image


OceanBase的可用性

传统的关系数据库的主备架构,不管一主一备还是一主带多备,不管主备之间基于强同步的最大保护模式,还是基于弱同步的最大性能模式,主备之间任何一个节点发生故障的时候,系统要么选择停服务,要么选择忍受主备之间的数据可能不一致。对于关键业务来说停服务不可以接受的,意味着这种架构下面,当我们主备切换的时候,系统通常要丢数据的。OceanBase很好的解决了这一个问题。

OceanBase的核心它是Paxos分布式选举协议的工业实现,Paxos协议本身是多数派的协议,在Paxos协议下面,对于数据库的任何的变更都需要多数成员同意之后才可以进行。这句话可以反过来理解,对于数据库的任何的变更也只需要多数成员同意之后就可以进行。所以在Paxos协议下,任何少数成员的故障不会影响系统的可用性和数据一致性。

下图是一个简单的三个节点的OceanBase的集群,一主两备,在Paxos协议下,三个节点之间任何一个节点故障,系统既不停服务也不丢数据。同时如果主节点发生故障,另外两个备节点可以在很短的时间内自动的重新选举出一个主节点出来恢复服务,目前故障恢复时间在OceanBase层面是20秒,加上业务的层面是数十秒,不超过一分钟,这不是实验环境的数据,这是很多真实故障下面的实际的表现。OceanBase的可用性

传统的关系数据库的主备架构,不管一主一备还是一主带多备,不管主备之间基于强同步的最大保护模式,还是基于弱同步的最大性能模式,主备之间任何一个节点发生故障的时候,系统要么选择停服务,要么选择忍受主备之间的数据可能不一致。对于关键业务来说停服务不可以接受的,意味着这种架构下面,当我们主备切换的时候,系统通常要丢数据的。OceanBase很好的解决了这一个问题。

OceanBase的核心它是Paxos分布式选举协议的工业实现,Paxos协议本身是多数派的协议,在Paxos协议下面,对于数据库的任何的变更都需要多数成员同意之后才可以进行。这句话可以反过来理解,对于数据库的任何的变更也只需要多数成员同意之后就可以进行。所以在Paxos协议下,任何少数成员的故障不会影响系统的可用性和数据一致性。

下图是一个简单的三个节点的OceanBase的集群,一主两备,在Paxos协议下,三个节点之间任何一个节点故障,系统既不停服务也不丢数据。同时如果主节点发生故障,另外两个备节点可以在很短的时间内自动的重新选举出一个主节点出来恢复服务,目前故障恢复时间在OceanBase层面是20秒,加上业务的层面是数十秒,不超过一分钟,这不是实验环境的数据,这是很多真实故障下面的实际的表现。


image


基于OceanBase的这种高可用的架构,我们可以根据业务的不同的容灾能力的需求,以及机房条件可以进行数据库集群的跨机房的部署。

简单介绍一下三种比较常见的部署模式:

第一种本地部署。

这个模式比较简单。业务流量只能够被部署在本地,我们知道Paxos协议要求多数派,三个成员以上才能够形成多数派,所以我们要求至少三个机房,数据也是三个副本。这个部署模式具备机房级容灾能力,当发生城市级故障的时候系统是不可以服务的。


image

 

第二种本地部署+异地灾备模式。

同样的业务的流量只能够被部署在本地,三个机房当中两个在本地,一个在异地,这种模式同样具备了机房级容灾的能力,当发生城市故障的时候可以提供异地灾备的能力。很多场景下客户可能无法在当地找到第三个机房,所以采用这种模式也是不错的选择。

image

 

我们所需要付出的成本是在日常情况下面远程的灾备机房是不提供流量的。这里我们采用的是数据的5个副本,不是我们刚才看到的3个副本,为什么不是3个副本?因为采用3个副本,本地机房中的任何一台服务器发生单机故障的时候,这台服务器上的数据分区就只剩下两个副本,一个在本地的另外一个机房,另一个在灾备机房,这时候系统形成多数派就需要进行两个城市之间的强同步,这个在性能上是无法接受的。因为用于构建OceanBase的数据库集群都是普通的PC服务器,单机故障非常常见,这里引入了数据5副本,2+2+1部署,第一先确保每个机房中的副本数都不会形成多数派,第二如果本地机房中的某一个副本发生故障,本地的另外三个副本可以形成多数派,意味着单机的故障不会导致业务的RT,因为需要引入城市间的强同步而显著上升。

第三个多地部署的模式。

这也是一种能够具备城市级容灾能力的部署模式,意味着可以把数据容灾交给底层的数据库实现,可以大大简化在容灾架构方面的设计。

要支持城市级容灾有两个点:首先业务流量本身能够多地部署,当发生城市级故障的时候,业务流量本身可以被切换到其它的城市。

第二点要支持城市容灾意味着我们在城市级别要形成多数派,这就意味着整个数据库集群需要至少跨三个城市部署。同样的数据也是五个副本,我们也避免单机故障导致业务流量进行跨城市的切换。要支持城市性容灾是有成本的,因为城市级容灾意味着对于数据库的任何的变更都需要在两个城市之间进行强同步,这就意味着任何更新事务的提交延迟会增加,这个延迟就是两个城市之间的网络同步延迟,这个同步延迟随着城市距离的不同,通常是在数个毫秒到数十个毫秒之间,所以要支持多地部署的模式,业务首先要评估,这样的一种延迟会不会对业务的性能容量造成一个显著的影响,如果有,需要进行优化,去减少同步链路上的更新事务的提交数量。

image


这里要说明的是不管采用哪一种部署模式,所有这些跨多个机房部署的节点,都是一个完整的数据库集群的一部分,OceanBase能够在这个数据库集群当中,自动实现流量的路由,故障的转移和负载的均衡。从业务的使用,或者是运维角度上看它是整体交付的,这就是前面说的最重要的客户价值,对于业务透明,这也是我认为OceanBase接下来最重要的工作方向。

这里给大家看一下我们目前的一个性能的水平,应该说OceanBase在架构稳定之后它在过去的一年里面整个性能水平已经有了非常大地提高。这个性能水平也是目前所有的三副本强同步的数据库产品当中所有有公开的性能测试结果当中最好的一个。


image


下面介绍OceanBase其它方面的特性。

第一个是Mysql全兼容。Mysql全兼容的工作量其实非常大,去年我们也投入了大量的人力进行相关产品的开发,到目前为止,OceanBase已经实现了从SQL语法、数据类型到系统函数等等全面的和Mysql兼容。作为这项工作的副产品,去年我们一共向Mysql开源社区提交了200多个有效的BUG。Mysql全兼容这件事情,大大地强化了OceanBase作为通用关系数据库的产品特征,并且真正的帮助业务不改一行代码迁移至OceanBase,降低了用户的迁移成本和学习成本,同时也使得OceanBase真正具备了大规模应用和部署的能力。


image

 

OceanBase1.0支持的另外一个重要特性是多租户。这个特性的推出,也正式宣告OceanBase成为一款云数据库产品,能够对外提供云服务,并支持业务上云。OceanBase对于多租户的支持是系统在内核层面的原生支持,我们叫做SaaS或者DBaaS架构。我们看到目前Oracle最新版本推出的多租户也是基于这个架构,而目前我们在市场上看到的大部分的云数据库产品,都是基于在不同数据库实例之间进行隔离的这样一种IaaS架构。OceanBase这种原生支持的架构与IaaS架构相比,它能够实现底层资源在不同租户间的共享,从而提高硬件的利用率,改善集群的部署的密度,同时多租户的资源隔离的特性也大大加强了产品在整个的资源的整合,包括系统化运维方面的能力。

image


这是OceanBase 1.0在其它方面的一些重要特性。


image

 

这里面有很多已经超出了Mysql的现有的支撑能力,在设计这方面的功能表现的时候,我们比较多地参考了商业数据库,比如OceanBase1.0引入了一套完整的诊断监控体系,这个监控体系很大程度上参考了Oracle,所以在ORACLE中很多基础的监控设施,比如Top SQL、Top Wait等等,实际上目前OceanBase都已经完整地支持。其它类似的特性,包括SQL Outline、Flashback、Materialzied Views等等,都是如此。这些特性使得基于ORACLE知识体系的客户,包括运维的同学,未来如果使用OceanBase,会发现在很多方面是很熟悉的。

刚才说的是OceanBase的一些内核的特性,作为一个完整的产品形态,OceanBase还包括一个功能非常强大的管理和运维平台OCP。

image


目前不管是内部客户、还是外部客户,不管是开发同学、还是运维同学,都基于这样同一个的平台来接入和使用OceanBase。通过OCP平台,我们能够为业务打造一个从业务接入、数据迁移、到上线部署、日常运维的一个完整的封闭的功能链条,从而帮助业务实现整体上云。

OceanBase经过几年的发展,已经在产品上积累了许多重要的技术优势,同时这几年在整个核心业务的稳定运行,蚂蚁金服已经向业界证明了OceanBase能够支撑金融级核心业务的能力。去年我们也通过阿里云平台,正式开启了OceanBase对外提供服务的进程,到目前为止,我们已经同部分的金融客户开展了实质性的项目合作,所以欢迎大家来更多的了解和使用OceanBase!

阅读原文请点击

分享到:
评论

相关推荐

    OceanBase:云时代企业级分布式数据库的技术挑战.pdf

    【OceanBase:云时代企业级分布式数据库的技术挑战】 在当今的云时代,企业级数据库面临着巨大的挑战,尤其是在扩展性和成本方面。传统的单机数据库由于其不可扩展性,往往需要高昂的维护费用。为了应对这一问题,...

    阿里 & 蚂蚁 OceanBase 原生分布式关系数据库介绍及典型使用案例

    OceanBase的产品体系较为丰富,提供了包括OceanBase分布式数据库、OceanBase工具体系、OceanBase云服务和OceanBase数据库一体机等。通过这些产品,用户可以根据自身的业务需求和部署环境选择最适合的方案。特别地,...

    OceanBase分布式数据库热门到实战

    1. 金融行业:OceanBase 分布式数据库可以满足金融行业对高性能和高可用性的需求,例如证券交易、银行结算等。 2. 电商行业:OceanBase 分布式数据库可以满足电商行业对大规模数据存储和高并发处理的需求,例如电商...

    蒋志勇:OceanBase支撑支付宝交易的分布式数据库系统

    在互联网技术迅猛发展的今天,数据库...OceanBase的成功应用,证明了在大数据时代背景下,分布式数据库系统能够有效解决传统数据库在性能、可扩展性和可用性方面的不足,并为互联网企业和金融行业提供了强有力的支撑。

    OceanBase分布式数据库技术概述.pdf

    OceanBase分布式数据库技术概述 OceanBase分布式数据库技术概述是原生分布式数据库,具有良好的扩展性和容灾能力。 OceanBase给用户透明的体验,像使用单机数据库一样使用分布式数据库。没有分库分表的烦恼,支持...

    OceanBase企业级分布式数据库介绍.pdf

    "OceanBase企业级分布式数据库介绍.pdf" 以下是从给定的文件中生成的相关知识点: OceanBase企业级分布式数据库介绍 OceanBase是一种透明可扩展的企业级数据库,具有高性能、可扩展性和高可用性的特点。它可以...

    分布式数据库--30讲

    1. OceanBase:阿里巴巴的分布式数据库产品,每年双十一大促都要秀一下性能。 2. TiDB:一个开源的分布式关系型数据库,技术社区做得有声有色,在互联网领域有了大量实施案例。 3. GoldenDB:已經随着中信银行的新...

    OceanBase-V4.2.1数据库文档

    《OceanBase-V4.2.1数据库文档》是一份全面介绍OceanBase数据库系统V4.2.1版本的综合资料,包含了多个方面的内容,旨在帮助用户深入理解和使用这个分布式数据库系统。以下是根据提供的文件名提炼出的相关知识点: 1...

    CPPC++_OceanBase是一个企业级分布式关系数据库,具有高可用性、高性能、水平可扩展性和SQL标准兼容性.zip

    CPPC++_OceanBase是一个企业级分布式关系数据库,具有高可用性、高性能、水平可扩展性和SQL标准兼容性

    OceanBase 是一款企业级分布式关系型数据库,具有高可用性、高性能、水平扩展性、兼容 SQL 标准等特点

    OceanBase Database 是一个分布式关系型数据库。完全由蚂蚁集团自主研发。OceanBase 基于 Paxos 协议以及分布式架构,实现了高可用和线性扩展。OceanBase 数据库运行在常见的服务器集群上,不依赖特殊的硬件架构。...

    OceanBase是一个企业分布式关系数据库,具有高可用性,高性能,水平可扩展性和与SQL标准的兼容性

    OceanBase是一个企业分布式关系数据库,具有高可用性,高性能,水平可扩展性和与SQL标准的兼容性。 数据库是一个分布式关系数据库。它完全由蚂蚁集团开发。OceanBase 数据库建立在公共服务器集群上。基于Paxos协议...

    OceanBase官方共享培训文件

    OceanBase 官方共享培训文件为我们提供了一个机会来了解分布式数据库和集中式数据库的差异,了解 OceanBase 分布式数据库的优势和应用场景,并帮助我们更好地理解分布式数据库的概念和技术。 分布式数据库的技术...

    「安全活动」OceanBase 1.0:云服务的新一代通用关系型数据库 - 渗透测试.zip

    【OceanBase 1.0:云服务的新一代通用关系型数据库】 OceanBase 是一款由阿里巴巴集团研发的分布式数据库系统,其1.0版本标志着在云服务领域的重要突破,旨在提供高性能、高可用性和高可扩展性的通用关系型数据库...

    银行业分布式关系型数据库选型分析.pdf

    总的来说,银行业在选择分布式关系型数据库时,需要综合考虑数据一致性、高可用性、分布式事务以及多表操作等技术难点,并根据业务需求和应用场景的不同,选择适合自身业务发展的分布式数据库产品。OceanBase和...

    面向分布式数据库的HTAP研究与实现.pdf

    CBASE是一个面向金融应用的分布式关系数据库,由西北工业大学和交通银行自主研发,基于阿里巴巴的分布式数据库OceanBase。目前CBASE主要面向OLTP业务,不支持OLAP业务。因此针对历史数据的查询、分析及统计需要重新...

    OceanBase分布式数据库技术概述.pptx

    【OceanBase分布式数据库技术概述】 OceanBase是一款原生的分布式数据库系统,它的设计目标是提供优秀的可扩展性和灾难恢复能力。在2019年,OceanBase在全球权威的TPC-C基准测试中取得了世界第一的成绩,这标志着其...

    分布式关系数据库运维平台介绍.pptx

    分布式关系数据库运维平台是现代数据中心的关键组成部分,尤其是在大型企业如蚂蚁金服中,它们需要处理海量的并发交易和高可用性需求。...通过不断学习和演进,OceanBase将继续引领分布式数据库运维的新趋势。

    OceanBase 1.0:分布式技术架构.pdf

    OceanBase 1.0是一款分布式数据库系统,以其可扩展性、高可用性和低成本而著称。该系统在数据存储、分布式查询以及高可用性方面展现出独特的优势,尤其适用于大规模、高并发的业务场景。 一、OceanBase数据存储架构...

    OceanBase1.0 分布式技术架构.pdf

    OceanBase 1.0 作为金融级分布式数据库一直备受瞩目,该数据库架构的设计和实现对整个金融行业的影响非常大。在本文中,我们将详细介绍 OceanBase 1.0 的分布式技术架构,从技术架构的角度看,OceanBase 1.0 主要...

    《分布式数据库技术金融应用规范》的技术架构及分布式事务核心功能的解读揭秘v1.0.pptx

    《分布式数据库技术金融应用规范》的技术架构及分布式事务核心功能的解读揭秘内容项描述: 1、教科书定义的分布式事务数据库的技术架构及功能特性 2、国内三种主流金融行业的分布式事务数据库的技术架构揭秘 3、...

Global site tag (gtag.js) - Google Analytics