随着云计算和容器技术的发展,云原生(Cloud Native)理念应运而生,中国市场也在积极拥抱云原生理念,成为云原生领域相关技术的生力军。在国内公有云都在提供“容器 +Kubernetes"的服务来帮助企业上云的背景下,数据库服务应该如何借助云原生理念来助力企业解决上云过程中重要的数据存储和安全问题?对此,我们采访了沃趣科技,来了解企业级数据库云产品是什么样的。


沃趣的产品体系

沃趣已经成立 6 年,其产品体系是在不断讨论中逐步完善的。

初期, 沃趣通过整合开源领域的软硬件技术为客户提供高性能一体机也即是 QData, 提供高性能, 高可用, 易扩展的数据库产品及整体解决方案。

随后, 沃趣在想如果把 QData 集群节点之间距离拉的更长一点, 譬如 60 公里, 是否可以满足用户跨 IDC 构建双活系统的需求, 于是有了 QData Infinite。同时,为了满足用户数据备份、恢复、冗余的需求,以及如何更好地将备份系统适用到更多场景(譬如:误操作之后的数据恢复,应用预发布,指定时间点恢复等),沃趣又推出了 QBackup 备份容灾云平台。

当然,沃趣最终目的还是希望帮助用户更高效地交付数据库,并利用好最新的 Oracle 特性。所以在以上的软硬件基础上,沃趣又率先在业内推出了全面支持 Oracle 12C 的 QData Cloud。

除此之外, 沃趣的产品也开始覆盖 MySQL,期望通过借助容器、编排等技术提供更好的 MySQL 私有 RDS (relation data system),以 Oracle 和 MySQL 为主,产品覆盖数据库的整个生命周期,包括数据库集群创建,分库分表集群,读写分离集群,集群水平扩展,数据库实例高可用,实例的备份、容灾,以及日志分析、SQL 审计等等。

云原生时代下的数据库服务_java

如何理解云原生?

云原生是一种构建和运行应用程序的方法,可以利用云计算模式的优势 —— 弹性和按需计算的能力。云原生应用程序以云计算平台的快速响应为基础构建和部署,为企业提供跨云更高的灵活性、弹性和可移植性。

沃趣产品及研发负责人熊中哲说,很多大神对“Cloud Native”有各自的解释,概念上可简单归纳为:可扩展,无单点故障,自治,自动化,与底层平台解耦。从沃趣实践的角度看,使用云原生架构意味着:

  • 通过容器技术构建数据库实例运行态, 提供单机多实例的资源隔离以及硬件资源的穿透等;

  • 利用容器的编排技术以及扩展机制实现 RDS 相关业务;

  • 利用分布式存储构建弹性的数据库集群,简化实例高可用,扩容,备份,恢复等操作;

  • 借用云原生架构实现数据库运行指标的采集和日志采集, 并在此基础之上提供标准的 API 以构建数据和日志分析的平台。

熊中哲介绍到,目前开源的云原生应用程序很多,但是持久化方面,特别是数据库方面的项目就更少了,最为大家所了解的是 Vitess。Vitess 是一个基于 MySQL sharding 机制的数据库集群项目,可以非常方便的做到水平扩展。Vitess 从 2011 年开始,就作为 YouTube 的一个核心系统组件,在 Google Cloud 上运行,现在规模已经达到上万个数据库实例节点了。相比这些开源项目,沃趣还在学习之中,正在不断摸索来完善技术和产品。

云原生架构下的数据库研发

熊中哲说,从需求的角度看,云原生架构下的数据库和传统的数据库没有任何不同。不管使用何种技术,业务对数据库的要求本质上没有什么变化。但是从技术实现上看,采用云原生架构会遇到一些很具体的问题 :

  • 如何统一保管数据库密码;

  • 如何动态发现数据库实例;

  • 如何统一管理数据库实例配置;

  • 监控数据的增长和查询效率不再成反比;

  • 是否可以采集每一条日志, 并提供标准接口查询;

  • 如何更好的进行实例资源的隔离,而不是依赖接口化程度不够的 CGroup;

  • 建立 Zone 和 Region 的概念,并以此隔离租户、实例、存储资源等;

  • 如何跟底层的 IaaS 解耦,"Run once, run anywhere"。

类似的问题还有很多。原来的方法是做到哪里是哪里,但是使用 Cloud Native 架构,沃趣可以找到很好的架构和解决方案,更专注在具体业务的实现,不再从零开始, 比如:

  • 重构监控数据存储,把监控数据从关系型数据库迁移到时序数据库,解决随着数据量的增长查询效率明显下降的问题;

  • 重构日志采集模块,将基于 SSH 的方式重构,不仅可以存储数据库产生的每一条日志,还可以提供标准的 Rest API,提供标准的查询接口;

  • 引入高性能队列为客户建立数据 Bus,解决之前 peer-to-peer 的问题;

此外,为了更好地运用云原生架构,沃趣团队进行了大量学习,做了很多改进。首先是掌握了新的语言和新的编程方式:从 Python 转到 Golang,从熟悉的多进程,多线程并发架构转换到 Golang 基于协程的并发架构;从基于事件驱动的祈使式 (Imperative), 到基于 observe--diff--reconcile 的声明式 (Declarative),团队也花了不少精力在写出 Kubernetes-Native Code。其次是提升工程能力,改进原有的代码提交流程,提升 Code Review 的质量,并加如 E2E 测试。为此沃趣升级了 GitLab 平台,集成了 CI/CD 流程。

当然 Kubernetes 不能解决所有问题, 了解其边界是真正落地的开始, 泛泛而谈并不是严谨的态度, 在特定的场景和领域, 很多问题还需要我们自己解决. 借用 Google 工程师 Kelsey Hightower 的一句话:

“We very receptive this Kubernetes can’t be everything to everyone.”

技术在变,数据库服务的核心不变

在云原生领域,目前也有很多在不断演进发展的新技术,现在很多人都在讨论容器编排技术的下一站是不是 Service Mesh。对于大部分人来说,还没有能力去判断一项新技术的前景,只能静观其变。

熊中哲借用了 Jeff Bezos 讨论 AWS 战略时说过的一句话:“They like low prices, they like availability, they don't want the services to be down, they like data security. It'll still be true 10 years from now, 20 years from now.”

在产品层面, 沃趣则会更多地关注那些不变的东西,比如:

  • 利用高密度和弹性, 让用户硬件投入成本更低;

  • 提供更多数据库类型和架构选择,提升用户的交付能力,把更多的精力投入到业务开发中,而不在关注运维中的所有细节;

  • 提供更可靠的数据实时备份和恢复方案,让最有价值的数据得到保护。