2022 年 9 月 16 日,在『2022 OSCAR 开源产业大会』现场,SphereEx 云原生高级技术专家苗立尧分享了以《Apache ShardingSphere 分布式数据库生态的云原生实践》为主题的技术演讲,本文整理于此分享。
近年来,以 Kubernetes 为代表的云原生浪潮解放了运维生产力,使得微服务上线发布和治理提升了一个新台阶,微服务与云计算技术在国内被普遍接受、迅速普及,目前进入了高速发展与爆发阶段。
微服务和云计算不仅仅在技术层面为各组织照亮了新的技术演化方向,也在组织经营、管理层面为其带来了更快的市场响应速度以及新的经济增长点。对各 B 端用户而言,部署微服务、实现数据库的云上迁移已是如今数字经济背景下的必答题。
然而,在企业上云部署升级的需求驱动下,以 Kubernetes、微服务等为代表的新技术要素也对组织内部经年累月形成的中台系统,提出了全新的技术能力拷问:目前的数据应用方案以纵横交错、复杂且高度碎片化的样态呈现,组织决策层如何有效解决“难选型、高成本、管控复杂”的现实应用问题?除此之外,如何顺应时代趋势、妥善将新技术要素与现有技术系统兼并、融合,也上升为决策层需要审慎考量、妥善处理的战略发展问题。
除了要解决摆在面前的现实技术拷问,企业还需要先清理横亘在认知与行动层面的“上云顾虑”。虽然在现今数字经济席卷全球的技术环境中,大数据、人工智能、流程自动化等都以云服务方式提供。但在现实层面,多数传统企业在上云探索的实践里,尚处于观望阶段。
伴随数据和数据库迁移到云上,传统数据库的应用、维护环境发生了很大变化。另一方面,数据库本身具有的高效率操作、自身弱安全防护的特点,也使原来的运维安防措施难以满足云场景下的数据库安防需求。
除了上述原因之外,企业和个人开发者仍疑虑重重:
原有的数据迁移上云会不会很麻烦?耗费的周期是不是很长?
上云后数据库安全如何保障?怎样实现数据加密?
云数据库进行存储扩容会导致停服吗?扩容范围是多少?
....
(数据库上云用户最关心的九个问题)
因此,数据库上云用户开始对外寻求一种能够在云原生场景中、围绕数据库进行安全运维管理的专业级解决方案,以此切实保障云上数据的安全。而解决云上数据管控孤岛化的问题,则正是 ShardingSphere 的机遇所在。
ShardingSphere 以强大的产品生态赋能广大开发者,以云原生技术重构传统开发调试测试环境、将数据库带到云环境中、并体验到 Kubernetes 带来的弹性和可扩展性等所有优势。多数据库还能在 ShardingSphere 的加持下,应用自动化管理套件、增强工作负载、高级运维能力、应用可用性防护、监控报警等能力,使组织的研发效能够得到切实提升,达到智慧赋能、降本增效的使用效果。
“云原生十二要素”提到过:当开发者在构建一个云原生应用时,从架构设计到最终交付的全流程里,应该严格区分构建,发布和运行。整个云原生场景内,都需要有持续地集成和交付的过程、有自动化实现持续集成部署、按时交付的能力做支撑。
而 ShardingSphere 的“连接、增强、可插拔”架构设计理念,与云原生场景特征吻合,能与“云原生十二要素”自然融合,ShardingSphere 的三层架构设计也能适配云原生场景下的复杂挑战。
ShardingSphere 的生态系统具备高可靠、快速部署、灵活扩展的多元特性。企业用户及开发者提供使用 ShardingSphere,可以更安全可靠、便捷无感、成本可控的方式满足上云的更高技术要求,从而达成上云的最佳实践。
从单体到微服务,伴随业务越来越复杂、越来越多元,以及基础设施规模越来越大,服务之间的调用关系变得非常复杂。要想让微服务架构更快地上线和部署,一定要有一个自动化的框架,此时作为容器编排的事实标准,Kubernetes 便为大规模应用的部署提供了新的解决方案。
越来越多的应用开始选择在 Kubernetes 进行部署和交付,ShardingSphere 社区先后贡献的 Helm Chart 和 Operator 两种云原生方式,均能针对性地解决云原生的快速部署和自动化运维的问题。
Apache ShardingSphere Charts 的发布,给 ShardingSphere 项目带来了官方支持的云上部署方案,而 ShardingSphere Operator 解决方案结合 Helm 工具可以在 Kubernetes 环境中快速部署一套 ShardingSphere 集群,真正做到开箱即用,快速尝鲜。
1. 快速部署
云上的部署效率极高,ShardingSphere-Proxy 得益于其简洁的部署架构,将治理节点、计算节点和存储节点分离开,并根据需要组合不同的实例,进行快速的部署。
2. 云上高可用实践
在云上,通常会引入 Region、Availability Zone 的概念用来描述部署位置,并基于此构建不同的高可用方案。ShardingSphere 自身的去状态化保证其良好的弹性能力,此外还提供了 Database Discovery 能力,帮助用户实现数据库维护升级和灾备切换过程中的应用无感知。
3. 云上数据迁移
ShardingSphere 在面对存量数据分片、分片键变更等场景里同样支持数据迁移,配置简单,最小化数据不可用的时间窗口以及保证数据的正确性,以并行任务的方式将数据从本地或原有的云服务上迁移至现有的云平台上。
4. 云上可观测性实践
ShardingSphere 利用 Agent 采集数据,弥补了从原有监控的不足,帮助用户更清楚地发现热点分片、慢 SQL 瓶颈、DistSQL 统计信息等,形成完整的监控洞察链路。其中 CloudWatch 指标还可以被展示到 Grafana,构成完整的端到端监控大屏。
5. 云上影子库
此前,Apache ShardingSphere 联合 Apache APISIX 和 Apache SkyWalking 共同推出了 Cyborgflow 项目,实现从网关到数据的全链路、可观测的压测方案。在云上,通过将 ShardingSphere 影子库能力与 AWS 上用于压测的数据库实例进行结合,通过 Hint 或基于列的影子算法,将数据请求路由到影子库,实现全链路的压测能力。
6.云上加密
ShardingSphere 提供了强悍的数据加密能力,通过逻辑列、密文列、明文列和查询辅助列的组合,实现对业务影响最小、用户体验友好的数据加密体系。
7. 云上日志审计
用户可以通过 ShardingSphere 进行表级别的权限控制以及敏感操作事件推送,这些事件记录会被存储在 CloudWatch LogGroups 对应的 S3 中,以满足审计检查需要。
未来,ShardingSphere 将会进一步丰富数据库计算增强能力在公有云上的实践,进一步优化 ShardingSphere 在云上快速部署、高可用、迁移、安全合规、可观测性等能力,与此同时,ShardingSphere 还将吸纳更多的云化方案,也会通过 Operator 优化 ShardingSphere-Proxy 集群部署结构、自动扩容、混沌工程等。相信通过 ShardingSphere 的赋能,企业级数据库产品在云原生场景下的智能管理、观测防护能力能得到显著提升,企业的技术选择成本也会得到进一步地收缩、控制。
随着云原生应用微服务化、Serverless 化,用户需要面对复杂路由规则可配置、支持多种应用层协议、服务访问的安全性以及流量的可观测性等诉求。在此契机下,2018 年 SphereEx 创始人张亮提出了 Database Mesh 概念,从而构建出了一套高效可编程的数据库治理体验。
基于这样的设计愿景,Database Mesh 以“让开发过程更集中、让云计算更亲和”的设计原则于整体产品生态,切实帮助用户轻松实现基于 Database Mesh 框架下 SQL 感知的流量治理、面向运行时的资源可编程、数据库可靠性工程等能力,助力用户云上数据库治理。目前,Database Mesh 也正随着云原生技术的趋势,正在朝着扩展性、易用性和标准化的方向持续演进中。
Apache ShardingSphere 融合 Database Mesh 理念构建完整的数据库治理全景图,将数据库视作一等公民,一切围绕数据库治理行为进行,同时借助可配置、可插拔、可编程的特性,给工程师提供最大的场景灵活度。Apache ShardingSphere 坚持以开放的生态和实现机制来适配不同的数据库环境,为用户构建和实现面向云原生的标准界面和一致体验。
目前 SphereEx 已将 ShardingSphere-on-Cloud 项目作为子项目捐赠给 Apache ShardingSphere 社区,并发表了多篇和云计算、Kubernetes 相关的技术文章,同时在 ShardingSphere Slack 也已经开设了相关的 channel #shardingsphere-on-cloud 方便业内同仁积极交流。
ShardingSphere-on-Cloud 以及 Database Mesh 2.0 的发布,代表 ShardingSphere 通过七年来的深厚技术沉淀,能够切实保证用户通过对 ShardingSphere 产品生态的应用,能够使自身的数据库上云实践目标达成、保证集群的稳定可靠性能,也能在传统解决方案中为自己找到更低成本的技术方案。从而降低自身在云场景下的转型代价与治理难度,让技术栈改造过程更简单、安心、可用。
未来,ShardingSphere 会持续在云原生场景布局,将继续深化用户需求,结合相关行业发展趋势,不断优化 ShardingSphere-on-Cloud 及 Database Mesh 的使用体验,从而打磨出更易用、稳定的云数据产品,为我国的开源版图及云原生产业生态积极助力!最后,欢迎对 Go、Database、Cloud 感兴趣的同学参与 ShardingSphere-on-Cloud 社区,与全球开发爱好者一起共探前沿的数据库技术。
ShardingSphere 项目地址:https://github.com/apache/shardingsphere
Cloud 子项目地址:https://github.com/apache/shardingsphere-on-cloud