发轫于年左右的公有云计算服务,本质上是用户和传统IT基础设施的连接器,通过将传统IT繁重的流程、低效的工作方式、不透明的价格以及糟糕的用户体验打碎,重构出诸如云主机、云对象存储/CDN、云数据库等产品,让用户方便地获取计算和存储能力,同时保持使用习惯不变。
经过近十年的发展,一个越来越明显的趋势是公有云服务正逐渐从基于传统IT基础设施的包装和组合式创新,演进为围绕公有云场景、计算和存储能力的重新进化和升级。诸如容器云和Serverless架构、AWSAurora云数据库、UCloud安全屋等,便是这一趋势的典型代表。
由此,我们可以对公有云的发展进程做一个两阶段的概括。云计算1.0的关键词是连接,通过互联网和公有云来连接用户和计算存储能力;而云计算2.0的关键词是进化,围绕公有云场景,重新看待全社会使用计算和存储资源的问题,对现有IT基础设施、模式做进一步的升级和进化。
站在云计算1.0向2.0进化和升级的档口,UCloud云数据库团队将用一系列文章来梳理过去、剖析当下、想象未来,以此来全面展现UCloud云数据库服务(UCloudDataBaseService,简称UDB)能力,分享我们过去的经验和对未来的思考。
基因
考察一个云计算服务的发展犹如观察一颗种子落地后的生长。传统IT设施向云端变迁的趋势是云服务生长所需的阳光和雨露,但一颗种子能否长成参天大树,除了足够的阳光雨露,还要考察这颗种子的基因和成色。
在UCloud公司的四大价值观里,“客户为先”是放在首位的价值观。这体现了UClouders一以贯之的理念:只有为客户创造出真正的价值,企业才能够生存和发展。创造真正的用户价值是UCloud所有产品的基因,也是UDB产品和云数据库团队的基因。
对于UDB产品而言,创造真正的用户价值体现在两个方面:
1需求驱动的产品研发和运营。
需求驱动产品设计,技术评估实现可行性,必要时非标快速定制,定制逐渐沉淀为标准产品,整个过程循序渐进。小步快走,是互联网研发和运营的要领,也是公有云服务的要领。
以UDB跨地域跨可用区容灾为例,从单机版UDB开始,不断有用户因跨可用区容灾场景提出建跨机房从库的需求,中大型互联网客户尤为强烈。起初,以一种非标形式来提供能力的支持。后期因VPC2.0上线,技术也愈加成熟,现已将这种非标能力转化为标准能力,即多可用区高可用UDB产品,同时也将UDB由可用区级提升为地域级,产品形态得到一次质的提升,传统模式下需要付出极高成本才能构建的异地容灾方案,通过UDB产品可以轻松获得,用户价值进一步被创造。
2、一切以客户价值为归依,舍小我成就大我。
云计算产品是IT基础设施类产品,技术人员在云服务的研发中起主导作用。但技术并不直接等同于用户价值。即使再先进的技术,离真正的用户价值还是会有一段距离。这段距离则需要用做产品的匠心来来弥补。
所谓的产品匠心,非常重要的两点是对需求的洞察和对技术的取舍。技术人员常见的一个毛病是先入为主,将自己觉得酷的牛的技术点等同于用户价值。但事实往往证明不一定。真正的用户价值创造,要打破技术人员思维的藩篱,洞察到用户需求的本质,从需求角度出发做技术选型,必要时敢于放下自己的喜好甚至利益,成就真正的用户价值。
UDB产品在硬件架构上选择了物理机+Docker的方案,而不是业务普遍的云主机方案,是这方面的经典案例。
云数据库是云主机之后出现的产品。如果基于云主机来构建云数据库产品,能够充分复用云主机成熟的能力,云数据库团队只需要关心硬件层面之上的问题。另外,选择云主机来构建,能够降低研发成本,快速推出云数据库产品。
但细究下来,云主机的方案存在不少问题。最大的问题是IO性能。云主机基于虚拟化技术,拥有完整的OS内核,这就导致IO协议栈太长,IO有额外开销;而Docker利用Linux的机制做隔离,本身处于用户态,Docker内进程的IO操作,由物理机OS内核统一管理,性能接近于原生物理机,远胜于云主机方案。在IO的稳定性上,云主机的IO管理涉及三个层次(GuestOS、Hypervisor、宿主机OS),而Docker的IO由物理机内核直接管理,因此在IO稳定性上的表现,云主机亦不如物理机+Docker的架构。
因此,为了更好的IO性能和稳定性,UDB从一开始就选择了物理机+Docker(前期是CGroup,14年全面转向Docker)的架构。事实证明,这是一个明智的选择。横向对比各大公有云厂商的云数据库产品,在性能上UDB每次都是完胜。
三重境界
王国维在《人间词话》二六节写到:古今之成大事业、大学问者,必经过三种之境界。“昨夜西风凋碧树,独上高楼,望尽天涯路”,此第一境也。“衣带渐宽终不悔,为伊消得人憔悴”,此第二境也。“众里寻他千百度,回头蓦见,那人正在灯火阑珊处”,此第三境也。此等语皆非大词人不能道。然遽以此意解释诸词,恐晏、欧诸公所不许也。
如同任何伟大的事业,UDB的成长之路,也经历三个阶段,细分为三重境界。这三个阶段互相独立,又存在一个内在的逻辑,将它们牢靠地连接在一起。这个内在逻辑,就是UDB的基因:创造真正用户价值。UDB在每一个阶段的萌芽、发展、跃迁,无一不是这个基因和理念在发挥作用。
1.做透一个点:取代自建数据库
UDB产品第一阶段要比拼的是能否比用户自建数据库(基于云主机或者自建IDC),具备更大的用户价值。只有创造出更大价值,形成更高的价值势能,才能吸引用户将业务迁移到云数据库。所以UDB的第一个目标就是把“取代自建数据库”这一个点给做透。
2.构建功能网:全方位覆盖用户需求
做透“取代自建数据库”这个点,本质上是公有来运营DBMS软件,创造出快速交付、运维托管等全新价值点。但仅仅有这一点还不够。事实上,过去几十年来,围绕DBMS出现了从容灾、迁移、安全到读写分离、数据拆分等解决方案和软件,对应用户业务的各种需求。这些解决方案和软件同样需要云化,并且需要利用公有云的优势产生比自建更大的价值。如此,才能不断强化云数据库的价值势能,服务好已有用户并吸引更多用户向公有云转化。
因此,UDB产品第二阶段要做的是构建一张云数据库功能网。在第一阶段的基础上,继续将用户需要的各个功能点做透。众多功能点以及功能点的组合,最终构成一张大网,全方位地覆盖用户的各种需求。
3.三位一体融合平台:云计算2.0下的内生进化
不管是第一阶段的做透一个点,还是第二阶段的构建功能网,对新价值的创造都是基于成熟的软件或解决方案,利用公有云来实现功能的随手可得、快速部署和弹性扩展。这种模式清晰明确,但并不意味着云数据库价值创造的终点。
云计算2.0时代,公有云开始摆脱传统IT基础设施和软件的藩篱。在产品和技术上,围绕自身业务场景开启独立进化。其中,如何解决全社会大规模用云时的成本、效率和智能问题,是这场进化的核心。而UCloud云数据库团队也需要进一步去思考,是否能提供更加廉价优质、高效智能的云数据库产品。
带着问题和思考,UCloud云数据库团队内部做了多次探讨,最终达成这样一个认知:云计算2.0下的云数据库服务,必然会是对内架构同一化,对外需求支持多样化以及数据库运维智能化这样三位一体的组合。
在接下来的内容中,将就做透一个点、构建功能网、架构统一的多样化数据处理体系展开详细介绍,用具体的例子来勾勒UDB发展的三个层次,三层境界。
做透一个点:取代自建数据库
取代自建数据库,说起来好像很简单。但是如果列出取代自建数据库需要考虑的五个价值点:
a、可靠性
b、稳定性
c、高性能
d、零维护
e、性价比
并逐个剖析,你会发现要将这些点做好,并非易事。UDB产品经过几年的努力,完美地实现了做透一个点:取代自建数据库这一目标。
a
可靠性
云数据库的可靠性强调数据安全性包括两方面:一是DB数据;二是备份数据。DB数据落盘的持久性通常要求99.%及以上,表明数据保持存储状态不丢失的概率。此类数据主要是指用户存储在数据库中的数据,不包括缓存和临时存储。DB数据本地盘采用RAID10或者RAID50做好冗余,若是高可用机型,则再有实例级冗余。备份数据要求异地存储,多副本存储。
b
稳定性
这里强调的是单机稳定性。我们可以看下如何自建一套数据库,在数据中心的电力、物理网络、机架、物理服务器等基础设施之上,部署操作系统和补丁,安装数据库软件和补丁,运行数据库软件,启用数据库服务。如果是采用虚拟化部署,则额外涉及计算、网络、存储虚拟化。这是一套庞大的系统,各个环节都存在不可预知的故障风险。UDB经过多年的运营积累了诸多经验,在多方面多层次保障其足够稳定。
c
高性能
如何通过软硬件结合使单机数据库的性能发挥到极致?高性能UDB机型底层采用PCI-E/NVMeSSD存储硬件,定制化宿主机Linux内核专门适配最新型硬件。采用自研IO调度算法,可良好保障实例级的IO隔离。数据库层面通过参数调优、内核定制优化,使数据库发挥出最优性能。通常情况下,数据库的性能瓶颈会出现在磁盘IO。采用虚拟机自建存在诸多弊端,例如IO路径过长、IO稳定性较差、IO竞争等。UDB采用高性能物理机+Docker架构+自研IO调度算法,打造出强劲的IO性能,持续保障稳定性和隔离性。
上图是去年某技术博客关于三大云数据库(UCloud、阿里云、腾讯云)的评测数据(原文