构建功能网:全方位覆盖用户需求题
云数据库发展第一阶段的目标是把“取代自建数据库”这个价值点做透,创造出区别于传统方式的全新价值。在第二阶段则需紧扣用户使用数据库的痛点,有针对性地推出公有云解决方案,构成一张功能网,全方位覆盖用户需求。
我们把第二阶段用户的需求归结为三类:
高可用和容灾
数据库的高可用,即数据库节点容灾机制。它通过节点冗余和主备切换,在部分节点出现异常的情况下保证数据库仍可正常提供服务。数据库的高可用是大型 IT 系统的必备机制,但不少系统在建设时,受限于自身基础设施和能力,无法实现优质可靠、高等级的数据库高可用。
而这一点恰好是公有云的优势。首先是基础设施完善。公有云厂商拥有大量的数据中心,数据中心之间通过跨可用区,乃至跨地域的光纤专线进行连通,构成一张覆盖全国乃至全球的高性能网络;第二,公有云的规模效应将带来成本优势,能够显著降低基础设施的建设成本;最后,规模效应也让技术团队被超大力度地锤炼,技术能力和运营水平不断提升。基于以上三点原因,公有云是实施数据库高可用的天然优质土壤。
因此,UCloud 基于自身基础设施来构建高可用数据库产品为用户提供易获取、低成本、高等级的数据库高可用能力,自然也是题中之意,是 UDB 团队必须做透的一个目标。
容量和性能
近些年的一个明显趋势是全社会各行业的数据量在高速增长。原因之一是全社会生产和生活日益互联网化,由此造成用户使用 IT 产品的次数和频率有数量级的增长;原因之二在于企业对数据的价值越来越加以重视,普遍希望能够沉淀数据、分析数据、以及从数据中挖掘出价值。
数据库系统作为 IT 系统的发动机,必然随着大数据时代的到来遭遇新的挑战。用户使用 IT 产品频次的增加,必然在性能上对数据库系统构成挑战;而全社会数据量的大规模增长,必然在存储容量上为数据库系统带来挑战。如何应对这两大挑战,且总体保持 IT 成本可控,是令用户越来越头痛的问题。对于云数据库团队而言,也是创造全新用户价值的大好机会。
运维和安全
运维和安全是云数据库研发和运营永远的课题。需要围绕用户需求构建运维闭环,从数据导入导出、数据库运行期管理/问题排查,到性能分析、数据库优化,让用户不使用任何第三方运维工具,即可将云数据库运维工作全部搞定。在安全上,除了 DBMS 自身的用户访问控制机制之外,还应该围绕审计、加密、防恶意攻击等方面为用户提供优质的产品或功能,构建数据库安全运营闭环。
下面将展开介绍 UDB 产品围绕高可用和容灾、容量和性能、运维和安全这三个方面,构建的众多功能点。这些功能点和功能点的组合构造出一张大网,全方位覆盖用户需求。
高可用和容灾
以上用一个表格概括介绍了 UDB 高可用各功能点。但不能概括的是表格背后 UDB 团队对高可用的潜心专研和精心打磨。总的来说,UDB 团队对高可用这个价值点的打磨包括以下几个方面:
MySQL 数据库内核深度优化
经过 MySQL 官方和社区多年的打磨,MySQL 软件在可靠性和性能上表现优秀,达到了工业级别的数据库管理系统要求,在各个行业都有大规模的应用。
但对于 UDB 团队来说,在线维护几万个 MySQL 实例的稳定运行,迫使我们对 MySQL 的可靠性、容灾能力和性能提出更高要求。为此,UDB 团队对 MySQL 数据库内核做了深度优化来进一步锤炼 MySQL 软件的品质。
这些优化包括:
1.改进半同步复制机制
2.解决复制的临界事务问题
3.提升主从复制的 IO 性能
4.消除复制机制中的文件锁竞争问题
限于篇幅不展开对内核优化的论述,更详细的内容请看详细介绍。
全面的容灾能力
高可用 UDB 的总体架构图如上,在容灾能力的建设上需要考虑到两个层面。
a.MySQL 节点的容灾
利用成熟的代理软件 HAProxy 作为代理网关来转发 SQL 请求,主数据库节点出现异常时,由 HAProxy 将 SQL 请求切换到从节点。HAProxy 成熟的节点健康检查和切换机制能够及时有效地检查数据库节点异常,并进行切换。
b.HAProxy 节点的容灾
所谓高可用必须是系统内全部模块去单点,为此也需要考虑 HAProxy 的容灾。普通的做法是利用 KeepAlived 等节点健康监测和故障处理软件,来实现多 HAProxy 节点的部署和容灾。但在长期的工业生产环境中,人们发现 KeepAlived 存在误检测和脑裂等问题,这存在一定的稳定性隐患,不满足云平台容灾的需求。
为此,UDB 团队自研了针对 HAProxy 节点的健康检查和容灾系统,来充分保证高可用 UDB 的稳定性和容灾能力。HAProxy 健康检查和容灾系统采用多节点、跨可用区部署,节点之间通过分布式一致性算法进行选主,结合 UCloud SDN 的 VIP 漂移能力,能够在单可用区完全不可用的情况下实现 HAProxy VIP 的及时准确漂移确保 UDB 实例的高可用。
容量和性能
在上一篇文章提到去年某技术博客公布了国内三大云数据库产品的评测结果,UDB 性能超出竞品数倍。时隔一年后的一个偶然机会,UCloud 云数据库团队得到一份关于某云服务商数据库的性能测试报告,想要详细获取此份报告请点击这里 。根据这份报告,我们对比测试了 UCloud 分布式数据库 UDDB 的性能,以此来分析一年过后各云厂商在分布式数据库的性能差距。
从这个结果我们看到:以该份测试报告为基准,对比测试 UCloud 分布式数据库 UDDB,我们相对竞品,UDDB 依然保持 2-3 倍的性能优势。这也充分说明了物理机+Docker 架构的在性能上的强大优势,也体现 UDDB 中间件强劲的性能。
UDDB 测试环境如下:
运维和安全
UDB 全景图
经过一、二阶段的发展,UDB 产品已经成长为基础扎实、品类完善、功能全面的一个云数据库产品体系。结合上篇第一阶段的 UDB 产品全景图, 叠加 UDB 团队在第二阶段做的工作, 得到新阶段的全景图如下:
在第一阶段的基础上,UDB 产品围绕用户使用云数据库的痛点需求构建了三个方面的能力:
高可用能力
基于全球数据中心间的高速网络,结合数据库软件自身的数据复制机制,以及自研的容灾检测、处理能力,不同级别的数据库高可用能力得以构建。包括同机房高可用、跨机房高可用、跨地域高可用、两地三中心高可用以及跨机房跨地域从库。
容量和性能问题解决方案
提供读写分离、分布式数据库两大产品,有效解决用户在数据高速增长下遭遇的数据库性能和容量问题。同时 TokuDB 压缩存储引擎提供很好的压缩率,在不损失性能的同时为用户节省数倍成本。
运维和安全
在运维方面提供面向 DBA 的数据迁移工具 DTS,以及面向开发团队定位为开发人员身边的自动化 DBA 专家的 DBAMaster 产品。在安全上提供存储加密和数据库审计功能。
评论