共同探索企业级数据库架构之道路

简介: 2018云栖大会南京分会企业级互联网架构专场,阿里巴巴高级数据架构师黄欢欢带来题为企业级数据架构探索之路的演讲。主要从企业数据库的发展现状、存在的问题以及企业级架构的需求开始谈起,针对其存在的问题提出了对应的解决方案,最后对企业级产品的架构以及满足企业及架构的需求问题做了详细的分析。

2018云栖大会南京峰会企业级互联网架构专场,阿里巴巴高级数据架构师黄欢欢带来题为企业级数据架构探索之路的演讲。主要从企业数据库的发展现状、存在的问题以及企业级架构的需求开始谈起,针对其存在的问题提出了对应的解决方案,最后对企业级产品的架构以及满足企业及架构的需求问题做了详细的分析。
数十款阿里云产品限时折扣中,赶快点击这里,领券开始云上实践吧!
直播视频请点击
以下为精彩视频及ppt内容整理:

企业数据库现状

说起企业级数据库架构体系,在2010年阿里巴巴还没有一个完整的数据库架构体系且存在着很多问题,问题大致可以分为一下几点:

  • 业务快速发展,如何才能做到弹性扩展、且性能满足要求:单体的IOE架构已经不能满足业务快速发展的需求,所以需要我们去做弹性的扩展,也就是既可以弹性扩容也可以弹性缩容的。
  • 数据是最重要的资产,但数据孤岛却是现状:现如今应用都在做服务化,应用做服务话以后在每个地方都存在自己的数据,那么数据之间是如何流通的呢?以及怎样避免数据孤岛等问题值得思考。
  • 稳定和高可用,已经成为企业数据库系统的最大挑战:对于企业级来说,这是一个普遍的问题,数据库的稳定性、高可用性是企业级数据库最基础的一个功能。
  • 业务的多样化,单一的数据存储无法有效满足需求:我们发现业务正逐渐的多元化,单一的数据库已经不能很好的满足业务发展的需求,那么我们在统一化的支撑和个性化的支持下如何做权衡也是我们要考虑的问题。
  • 研究人员众多,数据安全、效率、规范的挑战很大。

企业级架构的基本诉求

结合以上问题,总结了企业及数据库的一些基本诉求:

_1


1)可扩展性:可扩展性与容量的扩展并不完全相同,更多指的是架构上的可扩展以及弹性的需求。
2)稳定可靠:系统的稳定性和高可用。
3)高效:可分为两层含义理解,首先企业级架构数据库之后,我们如何高效地、自动地去运维数据库;其次,研发的人员越来越多,如何利用自己的平台去提升研发效率是我们需要考虑的问题。
4)安全:数据安全是企业的生命线,安全问题绝不能够在出现问题之后再去考虑安全问题。

如何提升系统的扩展性

提升系统扩展性或者提升系统的容量有很多方法,比如可以去做Scale Up,也可以升级数据库版本以及数据库硬件的配置,但是这是有限的。所以要进一步结合业务做一些垂直拆分,例如应用做服务化,那么商品的应用、交易的应用或者库存的应用需要拆开来,其对应的数据库也需要拆开来,这样做垂直拆分以后,对于单个应用来说我们需要做更进一步的扩展性,慢慢我们发现会遇到瓶颈,尤其是在写上面的扩展性。这时就需要做Scale Out,也就是说水平拆分线性的扩展。需要注意的是水平拆分的线性扩展不是一次性的,对系统进行扩展以后需要对弹性的缩容。

Scale Out解决方案

_2

  • 利用DRDS进行水平拆分,线性扩展:
  • 弹性的扩容能力
  • 超高性能,满足业务极致需求
    Scale Out解决方案现在最成熟的技术就是分库分表的解决方案,当一张物理库或一张物理表已支撑不了业务写入的时候,我们就对它按照不同的维度去做水平的分库分表拆分。DRDS所做的事情就是在分库分表表的基础上,把它揉合成逻辑库和逻辑表的概念,其优势在于进行分库分表后,对于用户来说看到是还是一张逻辑库或逻辑表。

弹性扩展解决方案

  • 利用云上计算资源,轻松应对业务高峰
  • 按需使用云资源,高峰结束后快速释放
  • 一站式服务,简单易用
    SDM混合数据管控所做的事情就是实现一键的数据库弹到云上去,之后做一个云上与云下混合的数据库,通过统一的管控平台,对云上的和云下的数据库进行统一的管理。

_3

如何保证系统的稳定可靠

  • 提供多种数据库容灾方案:考量:RPO,RTO,成本,扩展性。
  • 覆盖数据库容灾的各种需求:容灾建设,监控,容灾演练,容灾切换,数据校验及修复。
  • 构建数据库异地容灾的完整体系
    多层级高可用方案:

1)备份上传:采用单点写入方式,RPO为最后一次成功上传的备份的时间点到崩溃时间,RTO为小时级甚至天级,通过常规的数据库备份,将备份集上传至云端OSS存储。
2)DBS备份上云:采用单点写入方式,RPO为秒级,RTO为小时级,通过捕获数据库变化日志持续将数据库增量备份到云端,保有数据库最新的数据。
3)单向实时同步:采用单店写入方式,RPO为小于1秒,RTO为秒级到分钟级,其特点在于持续增量同步数据变化到容灾端数据库,容灾端数据库为读写打开状态,但逻辑上不接受应用写入。
4)异地多活:采用多点写入方式,RPO为小于1秒,RTO仅应用流量切换时间,多活架构,数据多点写入,数据变化双向复制。需要做多点间数据写入的隔离,防止记录在多点被更新。
对于现在阿里的数据库架构来说四种方案均能够支持,并且主要采用异地多活的方案。对于前面所提到的应用做了服务化这个问题,一些数据是需要依赖其他数据的,这时候如何实现数据之间的相互实时流转,且满足业务需求的,这时候就需要数据同步来实现。

_4

让数据成为架构的动脉

针对数据自由流转这个问题,列举了几个典型的实践案例:
1)上云迁移:(同异构)数据在云上和云下自由流转。
2)在离线:在线的数据库同步到离线,进行实时分析。
3)多活同步:单元之间的实时双向同步,满足异地容灾需求。
4)下游消费:通过订阅实时增量消息,满足搜索等下游业务。
5)实时大屏:在线数据,流经实时计算,大屏展示。

_5

兼顾数据安全和效率

保证数据安全的前提下,怎样保证效率是每个研发者所要考虑的问题,DBA已经成为瓶颈。我们所做出的解决方案是通过DMS企业版平台,此平台主要解决两个问题,第一个就是研发效率的问题,让研发者对数据库的操作不在成为瓶颈;第二个问题就是数据安全问题,我们会对权限进行非常精细以及明确的管控,我们对权限定义的力度可以细化到某一个库、某一个表或某一个列的程度。
接下来简单介绍下DMS数据库平台,现如今数据库类型众多,但DMS平台支持多种数据库类型,在数据库控制层之上有一个安全控制层,也就是前面所提到的数据安全。若没有数据安全,我们会遭受很多风险与挑战。此外还有核心功能层,面向研发时对数据库的操作全部通过自助的方式来实现,用户则更多的是面向研发同学、运营以及后台同学来看的。

_6


在解决数据安全和效率的问题之后,我们还面临着另一个问题,即业务个性化的权衡问题,对于数据库的管理人员来说,更希望一个数据库能够支撑所有的业务,在统一化、规模化运维的时候是最方便的。但实际上业务需求是很多元化的,这时一种数据库就很可能无法包含整个业务。例如淘宝上有上千个应用,有些文档型的应用结构定义常常会发生变化,又比如有一些IOT的用户,在IOT场景下很多时候是偏向时序的分析,时序数据分析的时候或日记类的数据分析的时候我们把这些数据放到哪里呢?为了解决这些问题我们提供了多种数据库引擎,如下图显示。

_7


虽然提供了很多数据库类引擎,但是在统一运维上面也并没有做太多的妥协,数据库引擎众多,但数据库中台是能够很好的包容这些产品的。

产品总结

为了满足企业架构的需求,我们采用分布式数据库Scale Out实现弹性扩展,此外还有多样化存储引擎满足业务需求,让每个数据库都能发挥它最大的作用;同时通过数据流转,打通任督二脉;以及多层级的容灾保证系统高可用性,提出了高效的数据库DevOps和数据安全方案。
本文由云栖志愿小组毛鹤整理编辑

相关文章
|
1月前
|
设计模式 架构师 前端开发
JavaEE企业级分布式高级架构师课程
本课程主要面向1-5年及以上工作经验的Java工程师,大纲由IT界知名大牛 — 廖雪峰老师亲自打造,由来自一线大型互联网公司架构师、技术总监授课,内容涵盖深入spring5设计模式/高级web MVC开发/高级数据库设计与开发/高级响应式web开发/分布式架构设计等主流核心技术。
22 1
JavaEE企业级分布式高级架构师课程
|
1月前
|
SQL NoSQL 前端开发
基于BS架构的饰品购物平台设计与实现(程序+文档+数据库)
基于BS架构的饰品购物平台设计与实现(程序+文档+数据库)
|
2月前
|
存储 监控 安全
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检索与报表分析架构的统一,同时依赖 Doris 优异性能,聚合分析效率呈数量级提升、存储成本下降 60%....为日志数据的可视化和价值发挥提供了坚实的基础。
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
|
3月前
|
存储 缓存 关系型数据库
鱼和熊掌如何兼得?一文解析RDS数据库存储架构升级
阿里云RDS率先推出新型存储类型通用云盘,提供低延迟、低成本、高持久性的用户体验。
鱼和熊掌如何兼得?一文解析RDS数据库存储架构升级
|
2月前
|
Kubernetes 开发者 Docker
探索微服务架构下的容器化部署策略
在当今快速发展的软件工程领域,微服务架构已成为构建可扩展、灵活且高效系统的首选方法。与此同时,容器技术,尤其是Docker和Kubernetes,为微服务的部署提供了前所未有的便利和效率。本文将深入探讨微服务架构下的容器化部署策略,包括容器化的基本概念、微服务的特点、以及如何利用Docker和Kubernetes等工具实现高效、可靠的服务部署。通过具体案例分析,本文旨在为开发者提供一套完整的微服务容器化部署解决方案,帮助他们在复杂多变的软件开发环境中保持竞争力。
|
1月前
|
存储 SQL 分布式计算
TiDB整体架构概览:构建高效分布式数据库的关键设计
【2月更文挑战第26天】本文旨在全面概述TiDB的整体架构,深入剖析其关键组件和功能,从而帮助读者理解TiDB如何构建高效、稳定的分布式数据库。我们将探讨TiDB的计算层、存储层以及其他核心组件,并解释这些组件是如何协同工作以实现卓越的性能和扩展性的。通过本文,读者将能够深入了解TiDB的整体架构,为后续的学习和实践奠定坚实基础。
|
1月前
|
SQL 存储 数据管理
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
36 1
|
1月前
|
SQL NoSQL 数据库
深入浅出:微服务架构下的数据库事务管理
【2月更文挑战第12天】 在当今微服务架构日益流行的背景下,如何有效地管理跨服务的数据库事务成为了开发与维护中的一大挑战。本文旨在探讨微服务环境下数据库事务管理的关键技术和策略,包括但不限于分布式事务的基本概念、常见的解决方案(如两阶段提交、补偿事务等),以及这些方案在实际应用中的优缺点比较。通过深入浅出的方式,本文希望能够帮助读者更好地理解并应对微服务架构下的数据库事务管理问题,进而提升系统的稳定性和可靠性。
|
2月前
|
NoSQL 数据管理 数据库
浅谈微服务架构下的数据库设计策略
在当今快速发展的软件工程领域,微服务架构以其灵活性和可扩展性成为了众多企业和开发者的首选。然而,随着服务的细分,数据管理和存储面临着前所未有的挑战。本文将探讨微服务架构下的数据库设计策略,包括服务间数据的独立性、事务一致性问题的处理、以及数据迁移和备份的最佳实践。我们将通过对比传统单体架构与微服务架构下的数据库设计差异,提出几种有效的数据库设计方案,旨在为开发者提供在微服务环境下处理复杂数据问题的思路和方法。
50 0
|
2月前
|
负载均衡 应用服务中间件 nginx
深入探索微服务架构中的服务发现机制
在当今微服务架构盛行的背景下,服务发现成为了保证系统高效运行的关键技术之一。本文将深入探讨服务发现的概念、重要性以及实现方式,通过对比不同服务发现机制的优劣,为读者提供在微服务架构设计中做出合理选择的参考。文章首先介绍了服务发现的基本概念和作用,随后详细分析了客户端发现和服务端发现两种主流机制,并以Eureka、Consul、Zookeeper等常见服务发现工具为例,展开讨论。最后,文章还探讨了服务发现在微服务架构中面临的挑战和未来发展趋势,旨在为微服务架构的设计和实施提供全面而深入的指导。