专访阿里RDS首席产品架构师何云飞:阿里云数据库的架构演进之路

原文作者:pipihappy8888

http://www.itpub.net/thread-1887486-1-1.html

如果说淘宝革了零售的命,那么DT革了企业IT消费的命。在阿里巴巴看来,DT时代,企业IT消费的模式变成了“云服务+数据”,阿里云将打造一个像淘宝电商一样多方共赢的云生态。而作为阿里云庞大帝国的重要成员,阿里云RDS为社交网站、电子商务网站、手机App提供了可靠的数据存储服务。好的架构不是设计出来的,而是演化出来的,那么RDS经历了怎样的架构演进?本期名人堂我们邀请到了阿里云RDS首席产品架构师何云飞(社区ID:Steven1981),为我们揭秘RDS的今世前生。

皮皮(Q1):您专注于关系型数据库领域10年了,精通多种主流数据库,比如MySQL,SQLSERVER,Oracle等,这些主流数据库是否有相通之处?能否结合您的经历和我们分享下学习这些数据库有木有捷径可走?

何云飞(A1):学习是一个触类旁通,举一反三的过程,对我而言,数据库也同样如此。一旦你学会了一种数据库,其它数据库就能驾轻就熟了。深入学会了数据库最核心的三个问题,开发、优化、管理维护,你就能所向披靡了。

开发阶段,我们一般关注的是:

1)如何快速得到一个可用环境,这里你可以先不考虑一些参数配置,只要数据库运行起来能让你访问就好;

2)如何用SQL去存取你的第一行数据;这里你可能会关注:

SQL用法,特别是查询JOIN的写法;

数据类型,常用的有字符串类型、数值类型、日期类型、文本类型;

运算符,如算术运算符、比较运算符,这里要特别注意运算符的优化级;

常用函数,常用的字符串、数值、日期相关以及转换函数等;

这些一般在数据库的用户手册里可以找到,常用的你也许需要记录在你的笔记本里;

一旦你掌握了如何熟练使用SQL语言,你可能无法容忍一些运行特别慢的SQL语句,怎么拧出这些运行缓慢的SQL语句?有木有秘诀来扫除障碍呢?这里我想和大家分享几点:

1)查看执行计划并找到SQL慢的原因;

2)如何设计合理的索引并让大部分SQL能够用到它;

3)选择什么样的字段类型存储会更高效;

4)数据库内存等参数配置会让你的数据库跑得更快;

通过这个环节的思考,你会在执行过程中总结出一些应用场景标准结构设计和常用SQL写法,如果看到SQL语句你就知道哪些字段需要建索引,那就更好了。如果你是高手,你还会研究数据库多版本的实现,锁的模式等高级问题。慢慢的,你的数据库里存储了大量的数据,应用也正式上线,一切都很顺利,为企业也带来了很大的价值。这个时候你会觉得数据库非常的重要。要是数据库挂了怎么办,多长时间恢复是可以接受的,硬盘坏了我该如何恢复等、这一系列问题会接踵而来,所以下一个环节数据库维护和管理显得至关重要,搞定以下五大问题,面对数据库故障问题你就可以从容应对:

1) 如果保证数据不丢失;

2) 数据库的高可用环境设计与搭建;

3) 数据库的备份和日志的管理 ;冷备还是热备,全量还是增量,备份需要保留多久,备份有效性检查;

4) 如何快速恢复误删的数据;需要做到基于时间点的恢复;

5) 数据库权限的管理等;

与其花许多时间和精力去凿许多浅井,不如花同样的时间和精力去凿一口深井。目前业界最容易上手的数据库当属开源的MySQL,除了在线手册,我们前辈也留给大家不少资料,比如:《深入浅出MySQL》,《MySQL技术内幕Innodb存储引擎》,《高性能MySQL》等;

皮皮(Q2):您是RDS系统设计和开发的核心创始人之一,为什么会在2011年开发这套系统?能不能和我们分享下当时的背景?

何云飞(A2):2009年9月10日成立阿里云计算有限公司,我们是第一批员工,说实话当时每次听王博士讲云计算都不太听得懂,作为DBA的我们不知道该如何去快速拥抱云时代,冥冥之中真有些云深不知处的感慨。到了2010年,随着基础建设的推进和业务的发展,云计算变得势不可挡,这股强大的力量也曾让我们这些DBA们忧心忡忡,云环境里到底选择SQL还是NoSQL?未来是否意味着NoSQL当道,关系数据库会日薄西山? 再加上阿里推出飞天分布式存储引擎,我们朦朦胧胧的觉得NoSQL将会吞没关系数据库的光芒,似乎感觉到了我们这些关系型数据库的DBA在云计算公司里快要失业了;

但后来仔细琢磨了王坚博士经常说的一个观点,“云计算要像水电煤一样被使用“。单凭NoSQL数据库在近10年不太可能实现这种美好的境界。NoSQL并非万能,具体而言,数据模型的选择、接口规范以及当前面临的新业务比如移动业务数据的处理问题,都是NoSQL无法回避的。NoSQL数据库也不是唯一的适合存储大量数据或大型数据,显然,通过良好的分区设计,SQL数据库也可以获得极好的扩展性。

所以,在云计算的大环境里,我不认为NoSQL能够取代关系型数据库。关系型数据库提供了这么多的功能,有这么多知道如何使用的专业人士,它还是如此的可靠和安全,因此不是说没就能没的。而且云发展的越快就越需要,因为不是客户来适应云,而是云去解决客户的问题。于是在2010年年底我们开始着手启动项目并完成架构设计,于2011年春节回来写下第一行代码;

皮皮(Q3):从架构的角度,RDS经历了哪些演进?它有哪些亮点?

何云飞(A3):好的架构不是设计出来的,而是演化出来的,RDS也同样经历了这样的演进。运维是云计算需要解决的最基础的问题之一,比如机器硬件坏了,资源升级等这样的事情应该尽可能地减少对用户应用的影响。同时还考虑到安全因素,所以我们在链路的架构上采用了三层设计:

客户端 -> 数据网关 -> 数据引擎节点

你可以想像得到,数据网关就好比是RDS的大动脉,所有请求流量将会经过这里并返回给应用程序;

在不同的时期数据网关面临不同的挑战,经历了三次优化演进。

第一代数据网关我们采用的是F5网络设备,能够满足我们当时的需求;但随着业务的发展,相应的问题也出现了;

1)进出流量都需要经过它,吞吐量成为了瓶颈;

2)IP数量有限制;

3)价格贵;

所以我们快速演进到第二代数据网关:LVS 负载均衡1.0。

这是章文嵩博士于1998年5月研发的开源项目,完全可以通过PCSERVER来替换昂贵的网络硬件设备,我们仅仅使用其1:1转发功能,并且使用DR三角转发模式,可以让LVS只接受“入流量”,而“出流量”直接通过数据节点返回给客户端。这种模式下LVS的吞吐量一般情况下不是瓶颈,但当时的版本有几个问题:

1)LVS的高可用设计采用主备模式,这意味着,主备DOWN机后,  所有VIP需要在备机重新生效,并且用户原有的所有连接全部断开;

2)VIP MAC地址是通过ARP方式广播出去,当VIP数量超过一定数量以后,由于交换机的处理能力有限会导致:

VIP MAC地址不被上层交换机学习到,这样这个VIP的失效时间会大大增加,从而导致用户连不上数据库,有时候这个时间长达30分钟,这是不可以接受的!

3)DR模式只支持组内机器在同一个VLAN里,不能跨机房转发;

经过了故障以后,我们下定决心改进核心问题:

1)硬件永远是会坏的, 硬件坏掉如何让访问流量不受影响?

2)VIP MAC地址如何快速传播到整个网络;比如怎样控制在5秒内;

3)LVS的高可用是否可以做到无状态?

只要集群(共3台)有一台活着,流量都不会受影响

于是第三代数据网关出现:内部代码RGW - 由ALIBABA 核心技术保障-网络-王昕溥团队一起打造;它很好的解决了这几个问题;

1)它通过OSPFD协议直接与核心路由通信;可以配置IP公告策略(16位、24位等),所以不会随着VIP数量线性增长;

2)它利用了等价路由协议自动实现负载均衡,RGW节点本身没有状态,所以维护时给用户的影响几乎没有;

3)DNAT 转发模式可以让组内节点分布在不同的机房;这样RDS天然可以做到同城容灾;

4)多个节点的吞吐量可以累加,这表示单个VIP的吞吐量是所有RGW吞吐量的和;

解决了链路层的问题,应用层的问题悄悄浮现出来了:部分游戏客户使用连接池连接数据库,但没有配置重连,这会导致在RDS的数据节点发生故障切换时,应用程序由于没有重连机制而无法继续工作。随着客户越来越多,这个问题变成了共性问题。于是,我们给用户一种选择: 客户端 -> 4层数据网关-> 7层数据网关 -> 数据引擎节点。在这里,7层数据网关

将与用户打交道并建立连接, 同时用户的请求将由它来转发到数据节点并返回结果。这样一来,客户端的会话不直接与数据节点保持,最重要的是7层数据网关有自动重连机制能够帮助用户解决问题。

现在RDS可以做到硬件损坏切换,跨机迁移基本对应用透明;但还是要提醒用户,如果使用数据库连接池(长连接),尽量要配置“重连”机制,因为我们不能忽略,从客户端到RDS我们需要经过多层网络设备;

皮皮(Q4):阿里云RDS为社交网站、电子商务网站、手机App提供可靠的数据存储服务,在云端集群上,RDS是如何确保数据不丢失?相应的备份策略是怎样的?

何云飞(A4): 不管是自建数据库还是云端,数据的备份永远是基础工作;就像一个人要生存下来,离不开基本的衣食住行,而阿里云的RDS拥有强大的数据备份机制。首先RDS所有的存储设备都采用RAID 阵列,这让你的数据除了有多余的冗余外,还保证了数据存取的高性能;其次,RDS可以让用户自己配置备份策略,包括备份周期和开始时间;

RDS的备份工作发生在“备库”上,所以备份过程不会影响“主库”的使用;RDS产生的备份集将统一存储到OSS分布式存储集群目前可免费存储7天。由于OSS本身就是多份存储设计,所以你的实例备份还享受着多份存储的保障;再有,不管你使用RDS哪个型号的读写实例,RDS都在后端有“备库”实时同步数据,当“主库”发生故障时,我们将自动快速地(30秒内)进行切换;最近我们也接到一些用户的需求,想要让备份存储更久,1年,2年,甚至10年;这些都是冷数据,RDS打算与阿里云最近公测的OAS对接,这样可以让用户享受RDS更廉价的备份服务;

皮皮(Q5):很多用户都还是在自建数据库,自建数据库虽然解决了数据存放的问题,但是一旦被黑,所有数据就没有了。阿里云的RDS对于这方面的安全保障有哪些优势?

何云飞(A5):这个问题非常关键,也是RDS产品努力的方向。最近我们从安全部门了解到,在浩大的网络世界里,每天被入侵的数据库数以千计。当然,如果黑客对你没有深仇大恨,是不会破坏你的数据,一般只是拉走你的数据,但这已经让你或者公司产生了足够大的损失。

RDS会尽量让您避免这方面的损失,有如下安全功能:

1)每个实例可以配置:信任来源IP白名单(100个),你可以决定哪些主机来访问你的数据库;

2)在上个问题中提到的7层网关,可以实时检测并拦截SQL注入行为,这些注入规则是阿里巴巴安全团队多年积累下来的宝贝;

3)RDS提供SQL审计功能,用户可以查看某时间点,哪个来源IP,哪个用户调用什么SQL语句查看了多少行数据;

4)最坏的情况,当你的数据被破坏,RDS还免费提供“数据恢复到指定时间点”的功能;该功能将开辟新的空间来恢复数据,你要做的只是确认数据是你想要的;

其中,1和2属于事前防护,

3和4属于事后审计和补偿。此些功能可以配合使用。

皮皮(Q6):哪些数据库可以存放到阿里云关系型数据库里,RDS支持哪些SQL查询语言?阿里云关系型数据库RDS怎么扩容?

何云飞(A6):RDS当前兼容MySQL和SQLServer,其中MySQL支持5.1,5.5,5.6版本。SQLServer支持2008R2版本。

弹性是云计算最大的特色之一,用户可根据业务压力购买需要的资源,当资源不够时可随时在线升级。RDS在业务扩容有如下功能:

1)单实例,内存从240M - 48000M等7个规格支持在线扩容,磁盘空间最大支持1T;

2)只读实例,当我们的应用场景需要满足大量读请求时,最近发布的只读实例是很好的选择;他可以支持主实例最大5倍的读请求,并且支持自由升降配置;

3)分布式实例(DRDS),当我们的整体业务(读写)压力都很大时,我们要考虑用分布式方案来解决。DRDS可以让用户自由的将多个RDS组装成一个大的虚拟库,并且支持数据自动拆分和合并;当前DRDS最大规模可以支持128个节点;

相信RDS应该可以支撑99%的业务场景。

皮皮(Q7):在阿里巴巴看来,信息时代的企业IT消费已走过两个阶段:第一个阶段是IT时代,企业IT消费的模式是“计算机+软件”。第二个阶段是DT时代,企业IT消费的模式则是“云服务+数据”。云计算和大数据到底是怎样的关系?阿里在DT时代会有哪些创新之举?

何云飞(A7): IT时代,数据是应用的结果;在DT时代,应用是数据的展现形式。云计算和大数据是一个硬币的正反面,云计算使大数据变得可行。如果说淘宝革了零售的命,那么可以说DT革了企业IT消费的命,企业可以通过数据为大家创造更加智慧的生活。“数据、平台和金融”是阿里的三大核心战略,阿里在DT时代走的依然是大平台和开放的策略,发挥阿里在数据积累、数据平台和数据应用三方面的优势,来推动整个社会的产业革新。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-1280265/,如需转载,请注明出处,否则将追究法律责任。

【IT技术】阿里RDS首席产品架构师何云飞:阿里云数据库的架构演进之路相关推荐

  1. 进阶阿里架构师:算法、编程语言、数据库、架构设计!书单推荐!

    阿里架构师必读书单 数据结构与算法:算法.算法导论等. 编程语言:java编程思想.java核心技术等 模式与设计:设计模式.代码重构.深入理解java虚拟机 数据库:mysql优化.oracle.r ...

  2. 【华为云技术分享】华为云 DevCloud 首席产品布道师:AIOps 不是 DevOps 的下一代

    近年来,将软件开发流程迁移到云上成为开发领域的一大趋势.随之而来地,人们会关心,和本地开发方式相比,云上开发能为企业带来哪些益处?能否保证安全.可信?未来它还将与 AI 技术碰撞出怎样的火花?在 QC ...

  3. 阿里P7架构师要求:Web核心+开源框架+大型网站架构!含面试题目!

    阿里P7技能(一):数据结构和算法: 常用数据结构:链表.堆与栈.哈希表等,常用的排序等. 掌握:精通 阿里P7技能(二):java高级 java相关的高级特性:JVM.多线程高并发.网络等. 掌握: ...

  4. MongoDB大中华区首席架构师唐建法:关系型数据库到MongoDB的战略迁移

    MongoDB大中华区首席架构师唐建法:关系型数据库到MongoDB的战略迁移 [编者按]数据库作为最关键的基础设施,渗透技术领域的方方面面.随着互联网时代的信息高速膨胀,传统关系型数据库因其高门槛. ...

  5. 【转载】阿里架构师告诉你一套能成为Java架构师的体系是什么样的

    JAVA架构演变之路 2017-12-17 14:25:11 架构师是一个充满挑战的职业,知识面的宽窄往往决定着一个架构师的架构能力 知识面的宽广对于一名出色的架构师来说是必不可少的技能,也许很多人对 ...

  6. 阿里顶级架构师倾情推荐:国内首本大型分布式架构笔记《凤凰架构》

    前言 随着IT系统复杂度不断增加,无论是为了降低团队的知识负载,还是为了最大化利用云原生的弹性能力,分布式架构已经成为处理新一代复杂系统的默认架构模式.但它的引入也同样:大幅提高了架构的复杂性,导致系 ...

  7. 红帽资深解决方案架构师魏新宇:云原生应用构建之路

    魏新宇 读完需要 7 分钟 速读仅需 3 分钟 魏新宇,红帽资深解决方案架构师.在 IaaS.PaaS 方面有丰富的经验,致力于开源解决方案在企业中的推广和应用.从售前角度主导了红帽在金融.汽车行业的 ...

  8. Java架构师成长之道之浅谈计算机系统架构

    Java架构师成长之道之浅谈计算机系统架构 Java架构师成长之旅 1.1 信息技术发展趋势 目前信息技术主要经历了互联网.移动互联网以及以大数据.云计算.人工智能和区块链为代表的新兴技术三个阶段.而 ...

  9. 阿里前首席人力官: 从HR思维看阿里的战略与文化

    阿里前首席人力官:从HR思维看阿里的战略与文化 邓康明 华夏基石e洞察 昨天 文 / 邓康明,原阿里巴巴集团资深副总裁.首席人力官.阿里影业首席运营官(COO),中国人民大学商学院管理实践教授来源:华 ...

最新文章

  1. Python实现多进程的4种方式
  2. python和revit_如何在Python中产生新的RevitAPI对象
  3. Spring AOP(一):概览
  4. 个人对持续集成的理解和实践
  5. Android下屏保程序的开发
  6. 超级玛丽2014怀旧版发布
  7. L2-007. 家庭房产
  8. 【kafka系列】centos7系统安装kafka
  9. vscode 文件编码转换_荐几个让你开发效率“飞起”的VS Code 插件
  10. python 函数可以作为容器对象的元素_python基础(十四):函数对象与闭包
  11. Android开发笔记(一百一十七)app省电方略
  12. Python 炫技操作:花式导包的八种方法
  13. 机器视觉:PC式视觉系统与嵌入式视觉系统区别
  14. Python3下载图像小工具
  15. PS 颜色表大全-CMYK颜色表(2)
  16. 利用matlab构建自己的colormap(色彩搭配)
  17. 如何将ipynb文件转换转换为py文件?
  18. win10提示无法通过电话激活怎么办?
  19. 计算机技术发展的一些随笔总结(我们需要思考)
  20. Unexpected token u in JSON at position 0报错如何解决?

热门文章

  1. 软件智能:aaas系统整体设计的内容构成和简单介绍---正文开篇 之 --重说“’得名’的’A字面指称’及其’C字里暗藏’和’B行间隐含’” 之1
  2. IN612L支持2.4G及蓝牙5.0全协议栈的SOC芯片替换NRF52832/NRF52840
  3. 隐藏在教室里的“绝世高手”,直到毕业都没有发现?
  4. ubuntu20.04到ubuntu18.04安装英伟达(nvidia)显卡驱动的血泪史
  5. 精准用户画像!商城用户分群2.0!
  6. windows设备管理器中找不到独立显卡
  7. 慎入,高并发水这么深,你能顶的住吗?
  8. vue短信验证码思路
  9. postman导入谷歌F12抓包请求
  10. 如何使用notepad++查看和替换回车换行符