内容来源:华为云社区
作者:华为云数据库高级项目经理/肖永
肖永:
华为云RDS从上线到现在可以说是飞速发展,我个人有幸见证了这样一个进步过程,今天跟大家分享一下阶段性的小成果:HWSQL。在介绍HWSQL具体内容之前,我们先看一下云数据库到底做了些什么?
在帮助客户搬迁上云的过程,我们经常面临一些客户的问题:“为什么我不采用自建呢?”当客户问这个问题时他看到的RDS是有一些基本的数据库管理,数据库的增产查改,备份审计等,这些功能看起来DBA写一些脚本就行。 实际上我们服务化在实现这些功能背后做了很多内容,主要有两方面:
一是我们的功能都是基于云架构进行选择和设计的,凝结着云上全面的能力,比如我们跟OBS自动集成进行备份的管理,比如说出于可靠性和扩展性我们底层选用EVS,不中断业务的进行磁盘扩展。还有底层的ECS调度,反亲和的放置,这是自建数据库单单靠脚本无法完成的。
二是我们的产品包含了专业的数据库人员针对云上进行全面调优测试,每一个相应的配置都有相应的专业DBA的优化,你拿到以后就是优化的成果,以及后台大家看不到运维系统,包括监控、审计等等,在这个运维系统之下,我们DBA会经常进行巡检,给大家提供非常安全可靠的能力,这些能力也能通过专家服务提供出来,给大家一些解决方案的建议和选择。
最重要的今天的主题,冰山之下,我们做了很多数据库内核方面的研究和加固,把数据库本身的增强的能力提供给大家。HWSQL的定位就是企业级的数据库服务。什么是企业级的数据库服务呢?我个人理解当我们购买一个企业级或者企业版的数据库,我们主要购买了三项东西,第一样东西是一个企业级内核能力的背书,它体现在企业级的质量保障,这样大家用起来更加放心,包括我们用Oracle,DB2,MYSQL的企业版都有着超越开源版的质量。二是增值特性,开源是一种商业模式,现在大多数的开源也被大公司所控制,一些核心增值特性在企业版开放,纯开源版本是没有的。三是高性能高可靠,企业版本有着更高的标准。今天通过这三部分跟大家进行交流。
第一部分是HWSQL内核能力的展示。
提到数据库方面的内核能力,一般情况下大家想到一些互联网公司,其实华为在本身的基础的软件和技术的积累非常深厚,之前因为公司风格的原因没有对外展示。华为的数据库内核团队已经做了很多年,在金融业,政府一些关键业务,包括华为内部的关键业务,都已经用了华为自己的数据库,现在通过云服务,我们会把华为之前的积累展示出来。
回到HWSQL这个团队里面,我们两个主要的技术负责人,一是Calvin Sun,他是我们现在HWSQL的技术负责人。Calvin曾经是Oracle MySQL innodb团队的负责人,有十多年的MySQL内核经验,在来华为之前他是Oracle MySQL上云技术顾问,所以他对MYSQL的技术和上云都是非常有经验的,由他带领我们HWSQL的交付。第二位专家是Paul,Paul是ACM院士,微软研究院20年首席研究员。他主要负责N+1版本, 华为数据库其实是两条线路来走,保证我们急速发展,第一条线是HWSQL在研版本,我们是基础的优化和加固的东西。第二条线,也就是我们N+1的版本是更加前沿的版本,有一些黑科技,软硬件垂直整合的东西在里面,主要由Paul教授带领大家来做。围绕这两位专家,我们在外研,在加拿大和美国有将近20多位技术专家,分别来源业界知名的数据库厂商。加上国内一批有多年自研数据库经验的内核人员,大家一块做HWSQL服务,所以我们的内核能力也是非常强的。
内核能力第二个体现点是质量。 质量很多时候大家不是特别的拿出来讲,而对于华为来讲,最大的品牌是就质量。对于MySQL来讲,大部分人都用开源MySQL,开源社区有开源测试套,也有很多人在用,它的质量是不是就很好呢?实际上并不是,一方面我们可以看到MySQL开源的bug提交还是非常多的,包括有各种架构机制的问题,往往还是规避处理,当你碰到坑的时候成本时很高的。对于商业版的MySQL,Oracle内部有强大的QA团队来做质量加固,有自己的测试套并没有公布出去,大家可以知道真正商业版和纯开源版的质量不是一个档次。
我们怎么做的呢?主要两个部分,一是框架部分,我们有四层防护,包括有AT,ST,以及我们有专业的集成测试团队验收,华为之前专业测试力量去验收,最终到线上以后,进行灰度发布,线上验证,这是我们的质量流程框架。
里面具体的内容,首先是将所有的MySQL生态的侧记级都拿进来,包括MYSQL、percona、mariadb的,都会拿过来开看,收入到我们自己的用例级里面。在这之上我们还开发了一些测试套,比如自研一致性测试工具集,以及DFX测试用例集,反复捶打和锻造式的测试。通过这些投入,我们有一个企业级的质量保障,我们先于开源发现修复XX bug,很多我们也提给了社区进行回馈。而基于现在云的管理,当天如果发现开源bug,当天就可以进行急速修复,可以把大家还没有遇到的开源问题的风险规避掉。
第二部分是HWSQL增值特性部分,我们会根据云上客户的诉求不断快速的补充增值特性,我举其中的一个例子介绍一下。 举例:华为消费者云。华为消费者云承接了华为手机业务,现在华为手机比较火,它整体的数据量很大,业务扩展也很快,需要强大的数据库平台支撑。其中有十几个业务共用一个数据库,这是一个很正常的场景,可能在座各位所在公司也有同样的场景。第一个从成本考虑,第二在业务上可能有数据的访问,用同一个数据库实例方便一些。但是这样使用会有问题,从MySQL本身来讲,或者从数据库本身来讲,session之间是有资源竞争的,当session达到一定数量的时候,资源征用锁的成本很高,性能会陡降。对于客户来说怎么办呢,只能控制每一个应用链接数,但是这个很不可靠,因为你控制链接的时候,应用并发可能跟不上,应用内部要去排队,这个对应用有一些要求,另外如果有一个应用它出现的问题,我把连接占多了,其他应用就用不了了,这在可靠性上有问题。开源版本有这样的问题,但是在Oracle的商用版MySQL上没有这个问题,这两张图是oracle官网发布的,可以看到链接数上升时开源版和商用版的差异。
我们在HWSQL上做了商用版类似的内置连接池功能, 开源MYSQL上一个链接对应一个内部的session,是一对一的关系,所以一旦链接比较多的时候,就有刚才说的资源消耗的问题。HWSQL的内置链接池对链接进行分组,外部链接和内部session是一个一对多的关系,这样在内部可以让数据库运行在一个很健康的状态下。其中的排序对客户业务透明,业务不需要关注。从测试结果上,在多达8192链接的时候,性能不会基本进行衰减。 会看到在小链接情况下HWSQL在云上性能比开源版本在云上性能有将近2—3倍的提升,后面大并发的场景它还不会衰减,对于这种消费者云,HWSQL通过增值的特性解决了他的场景问题能,现在也已经进行使用。
还有其他的增值特性,逐步会在我们社区进行分享,大家可以去了解,下面如果有一些企业很关键的问题,在业务端很难解决,希望在数据库端解决可以和我们联系,我们在很快把这些需求进行反馈。
最后一个部分介绍高性能高可靠进行的一些优化。
从HWSQL公测以来我们已经经过很多客户的竞标,对于企业级客户上云,性能比拼和可靠性比拼是基础选项。首先从华为数据库架构上我们选择了云盘,而国内大多数厂商选择的是本地盘。业界领头的AWS用的也是云盘,为什么华为选择云盘? 因为华为看重可靠性和技术的演进,可靠性上我们的云盘有三副本,提供了非常高的可靠性,和本地盘的raid不是一个水平。二是从技术演进来讲,本地盘有诸多限制,比如磁盘大小的限制。比如备份,本地盘备份大小和数据库量已经成为正比,这必然有限制,当数据量很大,备份就会很慢了,进而影响可用性。基于云盘,我们可以做基于存储的快照,基于块级的增量备份处理。云盘有好处也有坏处,坏处在于它的时延,相对于本地盘差一些。在云盘之上我们怎么保证它的性能呢,传统数据库还是很依赖时延的,比如MYSQL的binlog,redo log都是同步IO。 基于EVS存储我们就需要改变这些IO模型,比MySQL为了解决半写问题引入doublewrite buffer,它是单线程同步写的。
我们在第一个版本的做法,是multi-doublewrite buffer,并发来解除对时延的依赖,在后面我们现在做云盘的原子写,基于原子写接口,就可以直接解决半写问题,废除doublewrite buffer,同样其他时延的依赖也是这个思路。另外我们还做了很对锁的优化,大锁拆小锁,还有原生的算法的优化等等。 为什么我们选择云盘的底气也来源于华为强大的硬件能力,在华为还没有做云的时候,是很多云厂商基础设施提供者商了,都在购买华为的服务器,华为的存储。所以我们能够全栈的去思考解决问题,后面我们会有100微秒的云盘,有下一代网络芯片出来,有一些软件卸载的东西,整体把软硬件彻底打通。 下面一个竞标的数据分享给大家,这时客户自己进行线上测试的结果。和两个友商进行对比,一个友商是20U20G,还有一个友商是16U16U,在我们8U16G是友商产品价格一半的情况下,我们的性能基本和它们持平,大并发情况我们可能更好;在同样一个价格(16U32G),我们基本价格一致(便宜一点)的情况下,我们性能是大大赶超,所以最终这个客户选用HWSQL,现在催着我们赶紧商用,我们商用前会再更新一版硬件,性能进一步提升。
最后分享HWSQL的未来,刚才讲了我们有两个演进的版本,有三个东西分享,一是基于现在的版本,我们持续做优化,5.7上面我们会做Online DDL、算子下推等等,还有一些运维的特性。第二部分,在Q3的时候我们会推出金融版,3节点高可用强一致性。最后一个是云上进一步软硬件垂直整合,提供类似Aurora架构,进一步提升性价比。现集华为全栈能力与一体的一个软硬件垂直整合的能力,使用底下DFV共享存储池来完成原有replication功能,这个架构下存储引擎和事务引擎都会进行适配改造。
基于这种架构可以非常多的只读副本进行扩展。在MySQL Server层我们会把华为积累多年的global buffer pool技术提供出来,做到0时延读,以及后续的多写,未来变成真正云上海量扩展。
这些就是我今天分享的内容,HWSQL正在路上一步一个脚印坚定快速的发展,希望大家可以选择HWSQL作为各位云上的伙伴。
主持人:
华为在数据库团队的产品云化之前,它积累了很多的研发经验,它自己的内核经验已经很多。大家现在如果用了华为手机,华为消费者业务,终端类业务,手机上的APP现在都是部署在华为云上,就是刚才介绍的消费者云。我们现在有非常专业的海外专家团队,世界上最懂MySQL的五个人之一,现在在华为海外的研究所,加研所还有美研所。另外就是HWSQL的未来。从这几个维度来讲,大家提问一下HWSQL的专家,我们会给提问的来宾准备一些礼物。
提问:
现在facebook搞的SQL DD,有MYSQL,如果替换,如果用MySQL有什么优势和损失吗??
肖永:
国内有一个产品在谷歌孵化器里面,是做基于MySQL的优化,这种存储有优点和缺点,它在数据写的模型非常好,它的好处是压缩,你的存储数据量如果比较大,会带来非常好的收益,facebook数量很大,这种情况下可以省磁盘的空间,但是它的业务模型比较受限,国内一些不良厂商,像百度,底下原来那个就是那个前身,爬虫这些业务会放 在上面,在ORTP领域,我们的一致性,它是通用数据库,所以这种场景优化我们并没有放进去,但是阿里也没有放进去,但是我们做一个事情,如果你有这样整合的需求,在(忙够DB)上,会集成这样的引擎,并且我们后面会做基于(忙够DB)(Rua克斯DB)的更深度的优化,我们觉得那个场景更适合,双方有点分裂的感觉,但是我们也得考虑一个方向。
提问:
刚才有一个价格,并发有一个表,包括算这个价格方面,云存储和这个价格有什么关系?
肖永:
我们企业价格按照节点来算的,你的存储和你的业务相关,我们在购买一个RDF实力的时候,你主要付这个节点的价格费用,这个费用和ECS差距非常小,二是存储价格,你用多少,你买多少,它支持包月和包年的消费方式,没有直接绑定关系,不是提供你的是一个8U32G的500G的磁盘,不是这样,磁盘按你的区域自己去做,另算钱。
提问:
你们这是数据库,应用是不是单独部署到另外一个服务器上?光用你们的数据库。
肖永:
对,应用是单独部署的,这是数据库服务,应用应该有开发的人员给你讲解。
提问:
在有些场景下,有些企业手于一定的限制,比如一个企业的云服务的数据库,放虚拟云虚拟机上,这个系统华为能不能做私有云的业务?
肖永:
我们现在有私有云业务,如果大家关注新闻,华为私有云业务发展的非常好。如果你在云上,如果你本地有自己的管理系统,已经做的非常好的时候,如果要投更大的,对你来说是很大的成本,你如果做私有云的规模一定是有IT能力,你可以进行另外一个选择,我们先有DRS服务,你可以把你的背景,把载位部署到华为云上,来享受这样的高可靠,你业务还可以这样跑,你觉得放到我自己数据中心不放心,这是另外一种场景,可以把我们当成备机跑,我觉得云还是一个方向,最终在那个合适的时候,就可以支持,但是私有云我们也有这样方便的业务。
提问:
华为云私有云,之前从2012年2013年华为就开始起步做这一块,对企业来说,这两天国内生产制造型企业日子不好过,我的一个客户,现在他们有一个IT中心,机器系统在上面部署类似虚拟云的WAP的方式,这两年做的超融合云,做(艾斯)那些东西。企业的预算,有核算的情况下,把私有云东西卡进去。
肖永:
这个问题比较大。
提问:
我们下来聊也可以。
肖永:
我补充一个,云现在是一个方向,很多企业有考虑,我不希望一下完全放到公共资源池里面,我是不放心的。现在在华为公有云的专属云的特性我们马上支持,物理上你的那块资源就是隔离的,对于成本的问题,非标硬件的问题,这是比较细的话题。