摘要:阿里云数据库从最初的只支持MySQL,到现在支持关系数据库、NoSQL、HTAP、EMR产品体系,在管控系统和数据链路上做了好几次重大架构迭代,云产品很长的生命周期里面会遇到新老架构共存,如何做到架构连续和系统无缝迁移是个很大的挑战, 本文将为你分享云数据库架构演进和实践。
以下内容均根据演讲PPT整理而成。
在2016年ArchSummit全球架构师北京峰会上,阿里云研究员余锋,做了题为《云数据库架构演进和实践》的精彩演讲。
个人简介:余锋(花名:褚霸),阿里云研究员,有超过18年的网络和底层系统开发经验,擅长构建大规模集群服务,目前负责阿里云数据库研发和产品体系,在分布式数据库和引擎构建上都有丰富的经验。
本文将从业务概述、架构效率、业务连续和架构演化等4个方面进行分享。
- 一、业务概述
- 二、架构效率
- 三、业务连续
- 四、架构演化
一、业务概述
目前业界的数据库市场生态,主要还是关系型数据库占的比重最大,其次是NoSQL数据库,其他的各种类型数据库占据大约30%的市场空间。
数据库产品的生态演进过程大致如下图所示,关系型数据库从传统的MySQL、PostgreSQL、SQL Server和PPAS到演进的新的关系型数据库比如说阿里云的OceanBase以及PolarDB等;非关系型的数据库也从原本的Redis、MongoDB、Memcache、HBase到OTS;Search Engine类的产品从Elastic Search到Open Search;ETL则由原本的Hadoop、Greenplum和HAWQ扩展到MaxCompute以及PetaDate;至于中间件和一些工具也存在一些相应的演进产品。
阿里云数据库产品的输出方式大致有三种:公有云,专有域和专有云,而这三种输出方式也有适合于自己的目标用户,适用于不同的场景。
阿里云的机房目前分布在世界各地,遍布亚洲、欧洲、美洲以及澳洲,可以为用户提供高效、稳定的云计算与云存储服务。
阿里云数据团队主要分为三个部分:数据库团队、售后团队以及阿里云的合作伙伴。数据库团队负责制定云数据库以及对云数据库进行优化操作,并且保证云数据库的正常运行;售后团队负责对于用户在购买和使用阿里云数据库之后出现的问题进行处理,包括完善云数据库使用文档,对于用户提交的工单和电话咨询进行回复等;对于合作伙伴而言,数据库团队需要帮助合作伙伴将数据迁移到云数据库上来,并且为他们提供驻场的指导和培训。
二、架构效率
对于阿里云数据库产品来说,其对于业务的支撑能力是毋庸置疑的,无论是从阿里云机器集群的规模还是性能和成本以及产品的形态的多样化角度来看,阿里云数据库产品都是具有绝对优势的。
在另一方面,阿里云的数据库在可运维方面是一个闭环的系统,并且其具有强大的恢复能力;在可服务方面,阿里云数据库也拥有强大的自证清白的能力和审计能力。
阿里云数据库产品是支持快速迭代的,其实在设计数据库产品时需要考虑面向未来的架构来支撑产品的快速迭代。数据库的设计需要进行合理的分层抽象设计,努力实现对称性的设计,构造出系统的美感,并且让系统具有可以快速复制的能力,当然设计时需要掌握一个度,不能过度设计以免对于未来的迭代造成不利的影响。
在云数据库设计实践的过程中,开发的组织效率也是一个非常关键而且重要的因素。架构师需要对于中台和流水线进行合理的设计,并且保证接口的稳定易得,可以使用微服务的架构。除此之外,对于开发人员的能力或者素质也要有一个整体的把握。
自省能力也是非常重要的一部分,需要通过自省能力来支撑产品和研发决策。
三、业务连续
在对云数据库进行架构设计时需要考虑的一个重要问题就是如何保证业务的连续性。我们设计出的云数据库产品需要具有较高的服务可用性,需要对其进行容灾设计和冗余设计,并且对于突发的情况还需要考虑对服务进行降级。除此之外还需要保证数据的可靠性,需要在设计时考虑校对发现机制并且使数据库具有按时间点进行灾难恢复的能力。
在考虑业务连续性的设计时,还需要考虑到服务等级协议,使得用户得到保护而不单单是平台,并且为用户提供实例维度的体验。另外还需要考虑产品生命周期管理、应急预案以及数据库的灰度能力。
四、架构演化
云数据库的架构演进需要依靠创新能力作为支撑,在架构演化的过程中也需要充分利用技术生态产生的红利。并且在云数据库架构演化的迭代过程中还需要考虑新旧系统的无缝切割以及组织架构更替的平滑过渡。