探秘UCloud UDB技术实践之路

原创
云计算
UCloud 数据库团队的愿景是“降门槛”,即降低用户获取数据库和使用数据库的门槛。用户使用数据库产品是没有任何心理负担的,是简单易用的。

【51CTO.com原创稿件】“在整整六年时间里,UDB 始终和众多用户一同成长。”-----------UCloud云数据库负责人罗成对

[[267126]]
UCloud 云数据库负责人罗成对

爆炸式增长的数据量、丰富的数据类型带来了各种复杂的数据处理需求,云数据库由于实现了按需付费、按需扩展、高可用性以及存储整合等优势,受到了广大用户的欢迎,各种云数据库纷纷涌现。

国内中立的云计算服务商 UCloud 的云数据库 UDB 产品在 2013 年正式商用,经过 6 年的成功运营,UDB 产品线越来越丰富。如 MySQL、MongoDB、PostgreSQL 以及 SQLServer,UCloud 云内存产品 UMem,也涵盖到 Redis 和 Memcache,目前已经广泛支持业内主流数据库。产品特性包括主从架构、高可用、数据库专区、独享、跨区高可用、跨可用区灾备、读写分离、多维度弹性扩展、备份与恢复、监控与告警等。

“在整整六年时间里,UDB 始终和同众多用户一同成长。” UCloud 云数据库负责人罗成对在接受记者采访时表示。

UDB 产品的演进之路

六年中,UDB 数据库产品在不断前行,总结 UDB 的发展历程,有几条路径可循。

首先,紧跟开源社区步伐。2013 年,UDB 从最流行的开源数据库 MySQL 起步,首先推出了 MySQL 实例,2014 年在国内首推了 MongoDB 云服务,2016 年推出 PostgreSQL。

从最权威的 DB Engine 排名来看,结合 NoSQL 团队的 UMem 产品,UCloud 的数据库产品覆盖了 TOP 级的类型。

第二,从产品角度来看,UDB 产品逐渐从早期的资源型交付,转为增值型交付。资源型交付可以简单理解为“我购买的 UDB 是怎么样的资源”,包括版本与机型、稳定可靠、高性能、高可用、安全性、隔离等。增值型交付则可以理解为“自带 DBA”,它是面向场景化的多面手,应对在使用过程中场景化的需求,比如灾备、扩容、迁移、调优等。从 UDB 产品的发展历程来看,现在越来越多的产品是在提供增值型的特性交付。

第三,从开源到自研。经过自研能力的积累和沉淀,在 2016 年,UCloud 推出了自研分布式 UDB(即 UDDB),宣告 UCloud 在自研方面开花结果。

后续还有自研的读写分离,它是 UDB for MySQL 的性能加速器。未来 UCloud 云数据库团队还将陆续推出更多自研、自主的数据库产品。

演进之路上迈过的那些“坎”

UCloud 提供 UDB 数据库产品的愿景是完全消除“获取门槛”和“使用门槛”。细想 UDB 发展历程,作为亲历者的罗成对感觉负担是很重的。“每道坎摆在面前,我和我的团队硬着头皮迈过去,而且还得想着如何’完美’地迈过去” 。

罗成对将这些困难和挑战总结为以下三个方面:

第一,产品质量。早期 UDB 发展很快,产品功能矩阵越来越庞大,架构越来越复杂,在这样的情况下,如何做到产品质量可控?UDB 资源型交付最基本的要求是稳定性,一旦产品质量存在很多隐患,合格交付就无从谈起。UCloud 的解决之道是确定需求把控和软件设计的合理性,从源头上保证质量。同时,简化产品功能矩阵,优化软件架构。

第二,规模和效率。随着 UDB 产品规模不断扩大,如何提升产品运营效率?UDB 产品团队构建了包括自动化平台、SRE、智能 DBA 在内的运营体系,用来持续提升运营效率。这方面的工作持续在做。

第三,产品力。具备深度理解“用户”的产品力,又得实现如何快速交付,是 UDB 产品团队目前的一个主要矛盾。在罗成对看来,这更是一个全方面的考验,它既要求对用户需求的深度理解,又要求对产品发展、技术发展看得足够远,并且在二者之间寻求一个平衡点。而在实践道路上的考验来自于“快”,“天下武功唯快不破”,如何快速理解用户需求,同时快速交付,是 UDB 产品团队一直努力的方向。

用高可用性、高性能、高可靠性解决用户痛点

秉承着”用户的需求就是 UCloud 下一个产品”的理念,UDB 产品的研发过程也紧密围绕着用户需求点来展开。这些需求点总结为三条时间曲线,分别是“性能或者吞吐量”、“可用性”、“价值或者用户”。毫无疑问,用户对这三条时间曲线的期望是一直向上,但是业务量增长时,数据库的表现就不尽如人意,性能和可用性都会出现重大波动,长此以往,用户体验就会变差,新业务无法上线,用户出现流失。

UCloud 采用高可用性、高性能、高可靠性来解决这些痛点。

第一、在可用性方面,UCloud 的 UDB 产品达到了 99.95% 的可用率。在高可用 UDB 的实现上,经过长期运营,发现原有的 VIP+代理+DB 的架构有很多问题,而这种技术架构也是业界最为主流、最为成熟的实现。

UDB 产品团队对其进行了进一步架构简化,即采用更朴素的漂移 VIP+DB 双主的实现,在数据链路上减少一次转发,消除一个潜在性能瓶颈,并且简化控制模块,减少不可控因素。新架构对数据库(MySQL 和 PG)原生的兼容度更高。

第二,UCloud 一直追求更高性能,UDB 的性能优化是一项长期的任务。高性能可以通过扩展来实现,比如主从、读写分离,性能等方面可以进行线性加速的。

罗成对透露,最新一次针对 MySQL 的性能优化后,在通用的场景下,QPS 提高到了 7.27 万,TPS 提高到了 3.6k,相比之前有 32% 的性能提升。

同时,UDB 产品团队通过技术升级、硬件更迭、数据运营等手段,从 2018 年开始针对不同产品进行多次降价,降价幅度 30%-40% 不等。

第三,数据库稳定可靠,而且保持了极好的扩展性,这是对成长型业务最有利的保障。在业务快速发展的不同阶段,UDB 都有直接对应的解决方案。

深耕行业,满足用户需求

UDB 的用户群广泛分布在互联网、电商、游戏、企业服务(SaaS/PaaS)、影音阅读、传统企业等各行各业。罗成对在采访中介绍了几个有代表性的场景。

1、游戏。游戏行业特点是爆发性强,业务持续可用,业务迭代快。技术架构上,多数架构较为单一,即业务逻辑+DB,比较常见的是单区单服设计。这就要求系统可以快速开服,保持高可用性;性能要求高;设计模式(schema)灵活变更,而且异常情况下,误操作可回滚;生命周期短,这就要求数据库有良好的缩性。

UDB 可支持分钟级并发创建(通常一分钟内交付),SSD+高可用机型是目前最主流搭配,性能和高可用得到充分保障,高可用 UDB 自带在线的缩容,可应对游戏生命末期运营成本的开销。UDB 自带回滚功能,避免误操作或者故障造成的损失。游戏广泛使用 MongoDB 和 MySQL,其中 MongoDB 是 schema-free 的,schema 变更更为简单。

2、电商。电商行业的特点是自身业务场景多样,业务系统庞大,秒杀、促销活动多。在数据库上的要求是大并发条件下的高性能、稳定可靠、易管理、易集成、重点保障、可监控和可运维。

UDB 历史上经过几轮不断的性能优化,在主流配置条件下,都有不错的 TPS 和 QPS 表现,再配上免费的“读写分离”功能,可完全应对类秒杀场景下的并发突增。在产品上也提供多样的选择,比如独享实例、数据库专区方案,可多样化满足不同业务系统在性能上的要求,例如核心的交易系统,通常会使用顶配的独享型的高可用实例,充分保障业务稳定。电商通常有自身的 DBA 团队和运维体系,UDB 是 DBaaS 的形式,包括简洁的 Web console 和多样的 OpenAPI,可以实现很好的管理。另外,灵活可定制的能力,包括监控、采集和个性化推送等,可实现与电商自身系统和运维体系打通。

UCloud 一贯的铁三角服务模式,配上后端 DBA 团队,对电商重点节日,如 517、618、双 11、双 12 等,进行全方位的重点保障。

3、比较典型的互联网应用,个人 APP、广告、社交、O2O、视频、教育、阅读等,它在成长期,业务特点是业务爆发性增长。每时每刻,数据库都有可能是最薄弱一环。这背后考量要先抗住压力再优化,这就要求数据库的多维度弹性,UDB 具备这样的特点。性能维度上,在线配置升级、动态加从库、免费开读写分离,升级为数据库专区内的独享型实例。UDDB 基于业内应用最为广泛的数据库中间件技术构建,复用成熟的云数据库产品 UDB 作为底层存储,有效地突破了单机数据库的容量和性能瓶颈。

在系统管理和业务访问上,借助公有云的优势,UDDB 将中间件和 UDB 节点融合为一体,提供如同单机数据库一样的访问接口和用户体验。而 UDB 扩展到分布式数据库 UDDB,基本做到在线迁移。UDDB 是一把利器,容量不够,动态扩节点,性能不够,动态扩节点。UDB 迁移到了 UDDB 真正过渡到一个全新阶段。最新 UDDB 3.0 版本已完美支持分布式事务和分布式 Join,可做到极好的兼容性。

UDB 未来发展方向

谈未来发展,首先要看清 UDB 的实质。

首先,UDB 与 UCloud 云平台一起演进,有三个驱动力,一是基础设施驱动,包括最新硬件,如最新一代 CPU 和存储,云平台最新一代网盘和分布式存储产品,底层物理网络,都在不断推陈出新,能力越来越强。还有微服务和无状态设计模式的普及,使数据库在技术选型上更加多样。

二是成本驱动,作为一款商品,大规模生产时,单位投入就会下降。同时,不断引入最适合的硬件或者基础设施,对成本控制非常有利。

三是规模驱动,实例越来越多,用户越来越多,场景越来越多,这就要求更多场景化功能,以更快的速度,以“简单易用”的产品交付到用户手里。

在这三个驱动力作用下,未来 UDB 将会向三个方向发展:
一是能力和性能越来越强,可靠性越来越高比如正在自研的最新一代分布式数据库 UXDB。
二是性价比会越来越高,普惠到更多用户。通过技术降成本,或者通过运营降成本,才是可持续的。
三是更高效的 UDB,主要体现在运维效率,与 AI 技术的融合是很好的一条实现路径。对用户来说,则是 UDB 更加智能、好用,例如智能的 CloudDBA 是一个方向。

罗成对认为,未来云数据库的资源型属性和增值型属性的边界将越来越模糊,增值型属性将最终都转化为资源型交付,完全集成到资源型交付中,用户不再有使用门槛,简单易用,不再有使用痛点和心理负担。

拳头产品:Redis 数据库的进展

UCloud 云数据库产品多样,UMem 产品里的 Redis 作为最主流的 Key-Value 内存存储,一直是 UCloud 的拳头产品。近期推出了更大容量的 Redis 和更高性能的分布式 Redis。

1、更大容量的Redis

主备 Redis 最大容量提升至 64G,是为了满足用户对于大容量内存存储的需求,同时在应用上需要使用分布式 Redis 目前无法支持的命令(比如事务命令)。

UCloud 针对这样的需求,不仅更新了产品的软件架构,同时采用了新型的大内存机型,并在 CPU 单核处理能力和网络的性能上有了大幅地提升,对应 Redis 内存容量的提升,其处理性能也提升了 1 倍左右,来满足用户日益增长的工作负载。

2、更高性能的分布式 Redis

分布式 Redis 高性能版,满足了互联网用户对于分布式缓存(以 Redis 为代表)高性能、高并发和低延时,以及弹性扩缩容方面的要求。

在架构精简方面,多进程的高性能代理,使得代理到后端 Redis 分片的延时尽可能降低。动态增删 Redis 节点的主备 Redis 资源池,使分布式集群可实现性能和容量的弹性。在性能优化的代理方面,单进程性能可以达到 Redis 性能的 80%,并可以通过动态增加工作进程来进行性能上的扩容。

更高性能的分布式 Redis 整体架构关键组件均基于 Docker 容器化部署,方便后期使用容器编排来进行管理,实现更动态地弹性扩容来满足用户不同的负载要求。

UMem 产品的未来规划,会持续跟进 Redis 社区,推出更新版本的 Redis 及其新的功能;打造时序数据库产品,满足用户在 IoT 和监控方面的需求。第二是在跨可用区主备 Redis 的基础上,推出跨可用区分布式 Redis,同时提供完善的数据备份和恢复技术方案。三是跟进业界新型硬件及解决方案(包括更新架构的 CPU,FPGA 运算,裸金属),提高内存存储的计算性能;在软件层面提升单机及集群 Redis 的整体计算性能(包括单机多核化计算,读写分离集群方案等)。

后记

UCloud 数据库团队的愿景是“降门槛”,即降低用户获取数据库和使用数据库的门槛。在罗成对看来,增值型交付仍然有使用门槛。云数据库的未来发展,从产品角度来看短期内是两种属性共存,长期来看会融合,最终只会是资源型交付。用户使用数据库产品是没有任何心理负担的,是简单易用的。未来,UCloud 的数据库产品(UDB 和 UMem)会越来越简单易用。

 

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

责任编辑:赵立京 来源: 51CTO
相关推荐

2018-10-15 10:38:14

UCloud虚拟网络SDN

2022-11-29 08:00:00

Soul智能语音人工智能

2020-06-03 07:59:12

2017-08-24 13:29:19

UDB高可用数据库

2018-04-03 12:14:39

数据库产品演讲

2019-02-12 16:04:31

AWS华夏航空公有云

2009-06-10 09:21:45

Google Wave架构

2017-07-04 18:57:13

UCloud安全屋技术

2018-06-19 16:58:36

UCloud彭晶鑫存储

2023-11-01 07:44:29

转转Flutter业务

2010-11-12 09:04:03

TwitterAPI

2023-02-22 07:04:05

自动机原理优化实践

2015-12-28 16:35:36

UCloud

2021-06-29 18:26:34

数字媒体腾讯云数据库

2010-06-22 09:40:38

PHP方法重载

2014-08-21 10:17:45

WLAN

2016-11-15 07:56:13

双十一云计算科技新闻早报

2013-04-17 10:06:55

Google GlasMirror API

2017-06-09 20:10:44

MySQL复制线程
点赞
收藏

51CTO技术栈公众号