ShardingSphere-On-Cloud 0.3.0 发布! Operator 迎来重大升级

ApacheShardingSphere-On-Cloud的0.3.0版本引入了CRDStorageNode,自动化管理数据源,支持AWSRDS等。同时,新版本引入ChaosCRD以进行混沌工程测试,提升系统稳定性。此外,更新还包括ComputeNode的改进和对ShardingSphereAgent的集成,以监控系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Apache ShardingSphere-On-Cloud 近日迎来了 0.3.0 版本发布。本次 0.3.0 版本中 ShardingSphere Operator 迎来了重大升级,引入新的 CRD StorageNode 和优化 ComputeNode 状态显示,完善了对 ShardingSphere 集群存算架构的抽象描述,并且支持 Chaos CRD 自动注入混沌工程,帮助用户提升生产环境中 ShardingSphere 的健壮性。

StorageNode 介绍

为了更好地满足扩展需求,不少数据库都采用了存算分离的架构进行实现。Apache ShardingSphere 同样将基础组件划分为计算节点、存储节点和治理节点。其中,计算节点指的是 ShardingSphere Proxy,支持对外暴露 MySQL 协议,用来接收应用的数据库流量;存储节点指的是各类后端数据源,包括 MySQL、PostgreSQL、SQLServer、Oracle 等;而治理节点是用来存放分布式数据库的各类元数据,包括逻辑库表信息、流量规则、分片规则等。

94c77f25d0c7e4a9f576dadb647eb96a.png

ShardingSphere-Operator 在 0.2.0 版本中引入了新的 CRD ComputeNode,用来支持对计算节点的描述,详细信息可见:

ShardingSphere-On-Cloud 0.2.0 发布!新的 CRD ComputeNode

在当时对于数据源的创建和删除,用户仍然需要自行维护,ShardingSphere 作为一个分布式数据库解决方案缺少了对数据源的自动化管理。为此,社区引入了新的 CRD StorageNode,以及一个辅助的 CRD StorageProvider,示意图如下:

fb50684ef5532f930dcab60e88ac759f.png

以 AWS RDS 为例,在上个版本里用户需要在使用 ShardingSphere 之前,先行登录 AWS 控制台(或命令行)进行RDS 的创建。而现在,用户只需要声明一个 StorageNode CRD,指定希望使用的 StorageProvider 为 AWS RDS ,即可由 ShardingSphere Operator 自动完成数据源的创建甚至自动注册,其关系如下:

8d53716c22c096a7498c52a7d017f1e8.png

类似 Kubernetes 中 StorageClass 和 PV 共同构成了 Dynamic Provisioning 的方式,在 ShardingSphere Operator 中,StorageProvider 声明了数据源提供方,以及该类数据源的基本配置信息,目前社区贡献了 AWS RDS 和 CloudNative PG 的支持。而 StorageNode 在绑定指定的 StorageProvider 后,即表示用户声明了一个 StorageNode ,希望以 StorageProvider 的配置进行创建和维护。例如,用户选择了 AWS RDS Cluster StorageProvider,那么 ShardingSphere Operator 会去 AWS 创建对应的 RDS Cluster 实例,并将 Endpoint 等信息返回给 StorageNode 。

StorageProvider 示例如下:

5cc655cd767004946b0218dddfa13e2a.png

相应的 StorageNode 示例如下:

3dbf49b2ad3786d165557e25723ea54f.png

StorageNode 实践

快速安装 ShardingSphere Operator

执行如下 helm 命令即可快速拉起一套通过 ComputeNode 描述的 ShardingSphere Proxy 集群。

1、添加 ShardingSphere on Cloud 的 Helm 仓库:

helm repo add shardingsphere https://apache.github.io/shardingsphere-on-cloud

2、利用 helm install 命令安装 shardingsphere-operator:

说明:目前 StorageNode 属于 v1alpha1 阶段,需要通过 feature gate 进行启用,另外还需要指定 AWS 的 AKSK。

helm install shardingsphere-operator shardingsphere/apache-shardingsphere-operator-charts --set operator.featureGates.storageNode=true --set operator.storageNodeProviders.aws.region='***' --set operator.storageNodeProviders.aws.accessKeyId='***' --set operator.storageNodeProviders.aws.secretAccessKey='***' --set operator.storageNodeProviders.aws.enabled=true --set zookeeper.persistence.enabled=false

部署 StorageNode

可以 Github 仓库中的例子创建 StorageProvider 和 StorageNode:https://github.com/apache/shardingsphere-on-cloud/blob/main/examples/operator

利用 kubectl get 查看 StorageNode 状态

  • NAME:存储节点名称

  • PHASE:当前存储节点是否就绪

  • CLUSTERSTATUS:集群状态,如果是 Rds Instance 则为空

  • STORAGEPROVIDER:表示当前存储节点绑定的 StorageProvider 名称

  • AGE:表示当前存储节点的创建时长

        1. 通过 kubectl get storagenode 部署情况:

9398d1d8745a0102649b29c1726ea340.png

        2. 登录 AWS 控制台查看 RDS 状态:

285a30999245046887d7a0f465421f7a.png

Chaos 介绍

韧性(Resilience)被认为物品在遭受压力后恢复至原状的水平。用在软件系统上,可以表达当系统出现故障时恢复到原有服务能力的水平。在分布式环境下,软件所运行的基础依赖可能在任何时间点发生故障,包括物理设备和软件系统等。想要提升对这类故障的应对能力,可以借助混沌工程的方式人为地注入故障并完成相关测试来实现。

Apache ShardingSphere 作为分布式数据库解决方案,承担着用户海量数据的计算和存储,其稳定性的重要程度可见一斑。为了提高 ShardingSphere 的稳定性,社区贡献了 CRD Chaos 用来完成自动的混动注入,示意图如下:

5b77655b715dc6d7e88a0870403e4efc.png

Chaos CRD 目前支持 Chaos Mesh 实现,在使用 Chaos 前,需要在 Kubernetes 环境中提前部署 Chaos Mesh,部署说明可见:https://chaos-mesh.org/docs/production-installation-using-helm/。

Chaos 可以提供对 CPU 压力、Memory 压力、Pod 异常、网络故障等类型的注入,示例如下:

091bfdd7aad1fe1aae90ca0171d160b0.png

ComputeNode 开启 Agent 暴露指标

如果希望通过 Grafana 观察故障注入后的 ShardingSphere Proxy 运行状况,需要在部署 ComputeNode 的时候声明开启 Agent 配置,暴露 Prometheus Metrics,然后自行配置或使用社区提供的 Grafana Dashboard 进行观察。ComputeNode 开启 Agent 配置示例:

da9aeca8777f3fadb77c9a0c5cce952e.png

ShardingSphere Agent 指标介绍

ShardingSphere Agent 暴露的部分指标介绍如下,完整指标列表见:https://shardingsphere.apache.org/document/current/en/user-manual/shardingsphere-proxy/observability/#metrics。

f066ced380ed1971ed82cde954de1910.png

Grafana Dashboard 示例

Grafana Dashboard 示例如下,配置参见:https://github.com/apache/shardingsphere-on-cloud/blob/main/grafana/ShardingSphere-Proxy-Dashboard.json

be8a125c2cf3c2bb462a221ccd866652.png

其他改进

本次发布的其它更新有:

  • charts 中确保开启了 persistence 的 zookeeper 配置了相应的 storageclass #248

  • Proxy charts 支持对 shardingsphere agent 的部署 #252

  • ComputeNode 支持对 shardingsphere agent 的部署和配置 #260

  • StorageNode 支持 CloudNative PG 创建集群 #390

  • 更新 Grafana 面板中 execute-latency 的展示方式 #255

  • 调整 Grafana 里指标默认的 legends #374

  • 增加通过 Wasm 实现自定义分片算法的 demo #227

  • 修复 Github action 中对 arm 镜像的构建 #377

  • Github Action 增加 golangci-lint 检查 #295

  • 支持 operator 镜像推送到 dockerhub apache org,优化国内镜像拉取速度 #281

  • 新增 自动为 PR 打 label 的 github action #355

  • 更新 Readme 文档,增加 proxy 和 operator 的操作视频 #274

社区建设

此次 ShardingSphere-On-Cloud 0.3.0  版本的发布,共有 6 位 Contributor 提交了 120 个 PR,感谢社区伙伴们的大力支持。

GitHub ID:

  • mlycore

  • Xu-Wentao

  • yikuaibro

  • xuanyuan300

  • wbtlb

  • moomman

b17f04a780359080fecd227e42e3bc89.gif

相关链接

  • https://github.com/apache/shardingsphere-on-cloud Apache ShardingSphere on Cloud 项目

  • https://github.com/apache/shardingsphere-on-cloud/issues/166 ComputeNode 设计提案

  • https://github.com/apache/shardingsphere-on-cloud/issues/271 StorageNode 设计提案

  • https://github.com/apache/shardingsphere-on-cloud/issues/290 Chaos 设计提案

关于 Apache ShardingSphere

Apache ShardingSphere 是一款分布式 SQL 事务和查询引擎,可通过数据分片、弹性伸缩、加密等能力对任意数据库进行增强。

498765b4f023135ba43d09fcab008e13.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值