Kubernetes 环境下的数据库新命题( 四 )


 
ShardingSphere 几乎没有停机时间帮助用户完成历史数据迁移及分布式改造 。

  • DistSQL
     
ShardingSphere 提供 DistSQL 支持以原生数据库的方式(即 SQL)使用分布式数据库系统的分片、数据加密、流量治理等特性 。
  • 对计算存储能力单独进行灵活扩缩容
基于计算存储分离架构,用户可以真正实现『按需』单独分别对 ShardingSphere-Proxy (计算能力) 和 Databases (存储能力) 进行灵活扩缩容 。
  • 云原生运行和治理方式增强
     
由于 ShardingSphere-Proxy 本质上是一种无状态全局计算服务节点,同时充当全局数据库访问入口,因此更容易在 Kubernetes 上进行云原生的管理和部署 。
  • 多云或跨云
数据库作为有状态存储节点可以部署于 Kubernetes 或任意云端,避免单个云平台锁定 。仅使用 ShardingSphere 连接节点就可构建分布式数据库系统 。
  • 数据库的其他特性
ShardingSphere 是一个围绕数据库的生态系统,除了数据分片,还提供数据加密、权限、读写分离、SQL 审计等特性等待为用户场景全面赋能 。
  • 用户可选择多个客户端或混合部署
ShardingSphere 根据用户需求提供两种客户端:ShardingSphereProxy 和 ShardingSphere-JDBC 。通常,ShardingSphere-JDBC 性能更高,而 ShardingSphere-Proxy 支持所有的开发语言,提供分布式数据库集群的管理能力 。ShardingSphere-JDBC 和 ShardingSphere-Proxy 混合部署可以进行优势互补 。
  • 开源支持
Apache ShardingSphere 是 Apache 基金会的一个顶级项目,开源至今已有五年以上 。作为一个成熟的社区,Apache ShardingSphere 具备丰富的用户案例、文档和强大的社区支持 。
劣势
  • 分布式事务
事务对于分布式数据库系统也至关重要 。但是由于这种技术架构不是从存储层开发的,目前它依赖 XA 协议来协调数据源的事务处理,所以说并不算一个完美的分布式事务方案 。
  • SQL 兼容性
部分 SQL 查询在存储节点(数据库)中表现良好,但在全新的分布式系统中会出现问题 。我们开源社区仍在努力攻克这一难点 。
  • 全局一致性备份
虽然 ShardingSphere 定义为分布式数据库计算引擎,但多数用户倾向于将其视为分布式数据库 。因此,用户需要考虑该分布式数据库系统全局备份一致性 。ShardingSphere 正在针对这一特性进行研发,目前暂不支持(5.2.1),用户需要对数据库进行手动或用 RDS 备份 。
  • 成本增加
ShardingSphere 会接收所有请求,计算并发送至存储节点 。每次查询都必然会增加成本,所有分布式数据库都会遇到这种情况 。
5 实操指南
本节将演示如何使用 ShardingSphere 和 PostgreSQL RDS 创建分布式 PostgreSQL 数据库,以及用户如何对两个 PostgreSQL 实例进行数据分片 。
以下演示过程中,ShardingSphere-Proxy 运行于 Kubernetes;PostgreSQL RDS 运行于 AWS 。部署架构如下图所示 。
Kubernetes 环境下的数据库新命题

文章插图
演示主要包含以下内容:
 
  1. 部署 ShardingSphere-Proxy 集群和 ShardingSphere-Operator 。
  2. 使用 DistSQL 构建分布式数据库表 。
  3. 测试 ShardingSphere-Proxy 集群(计算节点)的弹性伸缩能力和高可用 。
 
1. 准备数据库 RDS
在 AWS 或任意云上创建两个 PostgreSQL RDS 实例作为存储节点 。
2. 部署 ShardingSphere-Operator
下载 repo,在 Kubernetes 上创建一个名为 sharding-test 的命名空间 。
 
Bashgit clone https://github.com/apache/shardingsphere-on-cloudkubectl create ns sharding-testcd charts/shardingsphere-operatorhelm dependency buildcd ../helm install shardingsphere-operator shardingsphere-operator -n sharding-testcd shardingsphere-operator-clustervim values.yamlhelm dependency buildcd ..helm install shardingsphere-cluster shardingsphere-operator-cluster -n sharding-test 
修改并部署 shardingsphere-operator-cluster 的 values.yaml 中的 automaticScaling: true 和 proxy-frontend-database-protocol-type: PostgreSQL 。


推荐阅读