「蚂蚁集团」OceanBase易鸿伟:企业级分布式数据库产品演进与最佳实践

2021-02-18 11:18:34来源:亚太CDN产业联盟 热度:
为期两天的Distributed Cloud|2020全球分布式云大会,为5G商用时代的到来,在新一轮云计算技术变革的关口,呈现出分布式云生态全景,影响2021年分布式云战略科技趋势,共享新商业引擎,共寻亿万级苍穹,开创未来新篇。
 
在12月18日下午的“分布式数据论坛”上,蚂蚁集团 OceanBase高级技术专家易鸿伟带来题为《企业级分布式数据库产品演进与最佳实践》的精彩演讲。
 

 
OceanBase是由蚂蚁集团完全自主研发的分布式数据库,值得一提的是,今年OceanBase开启了独立公司化的运营之路,并于9月份完成了对中国工商银行对公理财系统从大型主机到分布式架构的改造。
 
易鸿伟首先通过对阿里系数据库的发展历程的回顾,介绍了OceanBase的诞生与发展:2010年OceanBase数据库项目立项,最初的分布式KV存储被运用来支持淘宝的收藏夹功能;

随着相关技术的不断发展,诞生了SQL引擎,被应用到了淘宝天猫直通车和网商银行;2014年,项目从阿里集团迁到对数据库要求非常高的蚂蚁集团;集团有意摆脱当时对Oracle的严重依赖,于是从2014年开始,整个OceanBase不断强化自身技术能力,OceanBase 0.5版本正式发布,引入Paxos协议保证主库故障不丢数据,成功替代Oracle在支付宝交易系统上线,支撑了当年双十一10%的流量。

现在OceanBase已经在蚂蚁集团的核心系统中全面取代了Oracle数据库,也在工商银行、南京银行、西安银行等多家商业银行、政府和企业中使用,并在2019年和2020年两次通过国际联机事务处理TPC-C benchmark测试并登顶性能榜。
 
聚焦OceanBase产品架构,易鸿伟介绍说,OceanBase整体运行只有一个节点——OBserver;多副本是OceanBase的重要特征,一般部署为三/五个Zone,每个Zone由多个节点(OBServer)组成;每个节点均有自己的SQL引擎和存储引擎,各自管理不同的数据分区,完全对等;数据分布在各个节点上,不基于任何共享存储结构(share-nothing);

将节点分为可靠性与扩展性的基本单元,自动流量路由、负载均衡、故障转移,实现分区级可用性;以多副本 + Paxos分布式选举协议的金融级实现, 保证数据(日志)持久化到多数派节点,达到高可用和强一致。
 
所有公司或者技术产品都有通用的问题和诉求,就是高可用、高性能和成本控制,例如此前蚂蚁集团内部使用的是Oracle,不用MySQL,因为需要有高可用机制来保证业务的连续性。在研发过程中,团队通过Paxos多数派协议同步,以及故障自动选举与切换,并保证单个server不影响任意机器,解决了高可用的问题。
 
之后要解决高性能的问题,将自动事务按两阶段提交;用Table Group的方式,来减少不必要的分布式事务;以全局时间戳服务,保障全局一致性,基本满足了蚂蚁集团之前内部业务的诉求。
 
但这样又带来了另一个问题,机器数量多,成本也水涨船高。为解决成本问题,团队发现大部分成本都花在存储上,于是决定对存储层做优化。首先将索引架构基于LSM-Tree构建,相比传统数据库,它拥有最小的合并方式,且在合并时根据不同的数据类型智能采用不同压缩算法来做数据压缩。
 
OceanBase目前覆盖了蚂蚁集团100%核心业务场景,2019年的峰值是6100万每秒,覆盖了所有的蚂蚁集团的业务。
 
OceanBase采用的是“三地五中心”模式,其中两个城市有两个副本,另外一个城市有一个副本。最初的部署架构采用的是“两地三中心”模式,没有建立远程中心,这种模式有一个缺点,假设杭州出现故障,会牵连上海。采用“三地五中心”模式、读写分离架构,这样的架构能容忍单机容灾,在多台机器环境下,一台机器坏了会有另外机器提供服务,这就是单机容灾能力。如果整个机房全部挂掉,则会自动切换到同城的一个机房;如果发现更大的问题,比如地质灾害或者城市规模的断网,则全部切换到其他城市的机房,这就是城市级容灾。

在解决了蚂蚁集团内部技术上遇到的高可用、性能、成本等问题后,在做对外输出的过程中又遇到了很多来自市场新的需求。首先是兼容性,OceanBase是一款100%自主研发的分布式数据库,由于客户已经习惯了Oracle或者MySQL,所以需要对OceanBase语法行为做兼容;

其次,从权限控制到审计、存储到传输层要做到数据库全链路加密;同时OceanBase也需要提供混合负载能力,一套引擎同时支持OLAP和OLTP,甚至如果涉及很多其他的数据库还需要单独再构建一套引擎,当然这一套引擎也同时支持OLAP和OLTP,之后再做资源隔离;对外输出的模式中,“两地三中心”或者“三地五中心”的客户现场是不现实的,客户通常没有能力去设置多个机房。

因此OceanBase在对外输出时,采用了一些特别的模式,例如主备库模式、容灾能力强的三副本模式等,具体可以根据客户的实际情况做调整;在信创适配方面,OceanBase已经完成了对国产芯片的全部适配,目前已支持国产主流操作系统。
 
以上就是蚂蚁内部孵化十年的数据库技术产品在走向商业成熟的过程中遇到的问题,以及在兼容性、混合负载、灵活性和支持国产的硬件和操作系统方面提出的解决方案。
 
OceanBase是一套产品兼容主流的数据库,确保平滑迁移。对Oracle和MySQL的兼容,主要是SQL和数据库对象层面;一套HTAP引擎同时支持TP和AP业务统一SQL界面,共享数据;分布式架构采用第三代数据引擎,透明可扩展,避免分库分表,原生支持分布式事务,全局强一致;最核心的高可用能力是基于Paxos+数据同步的灵活容灾架构,能够支持单机房三副本,同城三机房,双机房主备,“两地三中心”和“三地五中心”的灵活架构,支持最高级别容灾模式,也支持经典的主备部署模式;OceanBase的独立部署方式,可以直接阿里云底座,也可以独立部署,无缝适配云化架构和经典架构。
 
介绍完最关键的OceanBase内核,易鸿伟对OceanBase整个产品家族做了简介:ODC是面向开发者的工具平台,能够提供连接管理、数据库对象管理、SQL工作台、存储过程开发调试、导入导出等功能;OCP是面向运维的工具平台,具备集群管理、租户管理、性能诊断、监控告警、备份恢复能力。

OMS数据库迁移平台,能够很好地将其他数据库平滑导入OceanBase,并且能够通过数据订阅渠道,把数据库从OceanBase导出至Dataworks、Kafka等大数据平台。根据不同的客户场景,ODP数据库中间件能够提供跨集群的查询能力,跨集群写入能力,也能够实现读写分离,跨服务分布式事务。对阿里云生态集成也都全部支持,包括DMS、DataWorks、DTS、SEDP等。OceanBase的语法支持非常完善,所以支持其他生态工具非常简单。
 
9月份,OceanBase完成了对中国工商银行对公理财系统从大型主机到分布式架构的改造,易鸿伟就OceanBase已经稳定运营的案例做了分享:
 
案例一 南京银行
 
由于之前的老核心已无法支撑新业务正常运转,南京银行成为了最早使用OceanBase的商业银行,采用的是“两地三中心”的部署架构。在上线OceanBase后,依赖Oracle水平扩展能力以及业务无损数据迁移,客户实现收益——贷款申请实现秒级放款;处理性能提升了3-5倍;千万级贷款借据计提时间控制在半个小时以内;整个资产规模比传统IOE架构下降至五分之一到十分之一;维护人数相比传统银行业务大量减少,让银行得以专注做底层运维工作。
 
南京银行信息技术部副总经理李勇对此评价称:
 
“ OceanBase数据库系统经过蚂蚁集团内部大量互联网金融场景验证,给了我们尝试使用的信心。实践证明,南京银行选择OceanBase数据库,给“鑫云+”互金平台提供了更加坚实的保证。”
 
案例二 中华财险
 
中华财险,是整个财险行业和阿里云做的联合解决方案,创新性引入金融云公共平台,基于混合云模式构建核心系统,客户可以在公有云上基于 OceanBase 快速搭建完整分布式架构,降低了私有云的交付运维成本。通过 OceanBase 迁移与评估服务协助中华财从 Oracle 数据库向 OceanBase 分布式数据库的完整迁移,业务 SQL 完全无需改造。

责任编辑:吴昊