Apache ShardingSphere 5.1.1 正式发布

在 Apache ShardingSphere 5.1.0 发布后不足两个月的时间里,ShardingSphere 合并了来自全球的团队或个人的累计 698 个 PR,为大家带来 5.1.1 新版本。该版本在功能、性能、测试、文档、示例等方面均有不少优化。

特别是性能方面,采用业界标准的 TPC-C 测试模型,在 16 台物理服务器上运行 Apache ShardingSphere 5.1.1 与国产数据库 openGauss 3.0,取得超过 1000 万 tpmC 的优异成绩,行业同等规模下性能最好!

本文将给大家介绍 ShardingSphere 5.1.1 版本更新内容。

Apache ShardingSphere 5.1.1 正式发布_第1张图片

吴伟杰,SphereEx 基础设施研发工程师,Apache ShardingSphere PMC。目前专注于 Apache ShardingSphere 接入端及 ShardingSphere 子项目 ElasticJob 的研发。

本次 Apache ShardingSphere 5.1.1 版本更新主要是对 5.1.0 版本的功能与性能进行优化及问题修复,接下来将介绍部分更新内容。

内核相关

内核是 ShardingSphere 的基础,打造功能完备、稳定、高性能的内核是 ShardingSphere 不变的目标。在 5.1.1 中,ShardingSphere 在内核层面优化了很多逻辑,修复了数据分片、读写分离、数据加密等场景在上一版本中发现的问题,并使各个场景在性能方面均有不同程度的提升。

在数据库方言方面,内核增加了对 MySQL 表空间的支持,并提升了对 Oracle、SQL Server、PostgreSQL、openGauss 等数据库的 SQL 支持度。另外,ShardingSphere 内核也实现了对 PostgreSQL/openGauss 的 schema 这类三层结构的初步支持,后续版本会持续完善。

接入端

本次更新修复了 ShardingSphere-JDBC 的一个潜在性能问题风险点,优化了 ShardingSphere-JDBC 内部与数据库连接池非必需的交互逻辑,减少了 ShardingSphere-JDBC 的性能开销。

在 ShardingSphere-Proxy 方面,MySQL/PostgreSQL 数据类型的支持度有所提升。ShardingSphere-Proxy MySQL 偶发性的 ResultSet closed 报错问题被修复,除此之外,ShardingSphere-Proxy MySQL 在协议层也初步支持执行多语句以提升批量操作性能。

在客户端支持度方面,ShardingSphere-Proxy PostgreSQL 提升了对 PostgreSQL JDBC Driver 42.3.x 的支持度,ShardingSphere-Proxy openGauss 提升了对 openGauss JDBC Driver 3.0 的支持度。

弹性伸缩

在本次更新中,除了修复迁移作业报错后无法通过 DistSQL 重启的问题外,弹性伸缩的健壮性有所提升,并且实现了源端停写及恢复写、部分表扩缩容的新特性。对于不符合迁移条件的情况,弹性伸缩能够快速失败,及时发现抛出问题,避免用户付出额外的时间成本。

DistSQL

DistSQL 在用户体验方面进行了优化,增加了更多的校验,减少了用户在使用 DistSQL 中配置出错的可能性。同时修复了部分用户输入与 DistSQL 关键字冲突的问题。

分布式治理

在读写分离与数据库发现方面,除了原有的 MGR,MySQL 新增了通过查询主从延时实现的数据库发现方式,可以通过获取从库延时自动切换读写分离数据源,减少用户使用动态读写分离的门槛。

在集群模式下,元数据存储结构进行了一定的优化与重构,因 ZooKeeper 会话超时、表名大小写不匹配等原因导致的问题均已被修复。

分布式事务

在事务方面,ShardingSphere-JDBC 新增了对 Savepoint 的支持,ShardingSphere-Proxy 则在原有对 LOCAL 事务 Savepoint 支持的基础上,增加了在 XA 场景下对 Savepoint 的支持。

使用 Narayana 作为 XA 的实现时,ShardingSphere 能够配置 Narayana,让用户使用 XA 更方便。

使用 PostgreSQL/openGauss 时,当在事务中发生异常,ShardingSphere 能够正确中止事务并自动回滚。

以上是对 Apache ShardingSphere 5.1.1 部分更新内容的介绍,详细内容可以参考更新日志,后续 ShardingSphere 社区会发布对部分功能特性的详细解读,敬请期待。ShardingSphere 5.1.1 在 API 层面没有变动,在功能、性能方面均有不少提升,欢迎大家升级使用。

更新日志

新特性

  • 内核:PostgreSQL 支持 alter materialized view
  • 内核:PostgreSQL 支持 declare 语法
  • 内核:PostgreSQL 支持 discard 语法
  • 内核:PostgreSQL 支持 $$ 标识
  • 内核:支持 MySQL 创建表空间语句
  • 弹性伸缩:实现源端停写及恢复写
  • 弹性伸缩:支持部分表扩缩容
  • DistSQL:新增语法 SHOW UNUSED RESOURCES
  • 分布式治理:治理中心新增持久化 XA Recovery Id
  • 分布式治理:数据库发现新增延迟主从延迟功能
  • 分布式事务:ShardingSphere-Proxy 支持 savepoint
  • 分布式事务:PostgreSQL & openGauss 事务块内异常,自动回滚
  • 分布式事务:Narayana XA 事务易用性
  • 分布式事务:ShardingSphere-JDBC 支持 savepoint

优化

  • 内核:重构内核功能代码提升性能
  • 接入端:减少 ShardingSphere-Proxy Docker 镜像体积
  • 接入端:ShardingSphere-Proxy 支持使用 set names 等语句设置字符编码
  • 接入端:ShardingSphere-Proxy MySQL 支持批量语句
  • 接入端:ShardingSphere-Proxy 支持 openGauss JDBC Driver 3.0 客户端
  • 弹性伸缩:在 ShardingSphere-Proxy 集群中只有一个 Proxy 节点需要做完成检测
  • 弹性伸缩:优化 input 和 output 配置里面的字段类型,从 int 改为 Integer,方便通过 DistSQL 配置为空
  • 弹性伸缩:优化 MySQL 校验和 SQL
  • 弹性伸缩:优化进度删除和进度检查
  • 弹性伸缩:优化 FinishedCheckJob 在错误状态下不能做完成检测
  • 弹性伸缩:如果存在不符合迁移条件的表,尽快报错
  • 弹性伸缩:PipelineAPIFactory 创建 GovernanceRepositoryAPI 的时候复用 ClusterPersistRepository
  • 弹性伸缩:升级 jobId 生成算法;jobId 支持幂等性
  • DistSQL:CREATE/ALTER ENCRYPT RULE 语法支持配置数据类型和长度
  • DistSQL:统一 SHOW ALL VARIABLESSHOW VARIABLE 语法的展示结果
  • DistSQL:DROP BINDING TABLE RULES 语法消除绑定顺序对删除结果的影响
  • DistSQL:SHOW INSTANCE LIST 语法增加 mode_type 字段的展示
  • DistSQL:ENABLE/DISABLE INSTANCE 语法增加对模式的校验
  • DistSQL:删除读写分离规则时,增加对规则是否正在使用的校验
  • DistSQL:创建读写分离规则时,增加 Resource 重名的校验
  • DistSQL:SHOW READWRITE_SPLITTING READ RESOURCES 增加延迟时间的展示
  • DistSQL:DROP RULE 语法支持 IF EXISTS 进行预判断
  • DistSQL:优化 ADD/ALTER RESOURCE 连接失败的提示信息
  • 分布式治理:增加 schema version 版本号支持批量执行 DistSQL
  • 分布式治理:集群模式下持久化元数据优化
  • 分布式治理:数据库发现创建 JOB 增加 schemaName 标识

重构

  • 内核:重构加解密测试用例
  • 内核:重构元数据模型,适配 PostgreSQL database 和 schema 模型
  • 弹性伸缩:pipeline 模块移除 HikariCP 依赖
  • 分布式治理:重构治理中心存储节点结构
  • 分布式治理:重构治理中心 metadata 结构
  • 分布式治理:调整数据库发现 MGR 模块为 MySQL 模块

问题修复

  • 内核:修复函数无法获取变量的异常
  • 内核:修复 InsertValueContext.getValue 转换异常
  • 内核:修复 distinct 聚合函数列异常
  • 内核:修复带有 schema 的加解密算法改写异常
  • 内核:修复读写分离场景下不返回列的异常
  • 内核:修复 show tables 语句丢失部分表的异常
  • 内核:修复相同结尾的分表路由的异常
  • 内核:修复 assignment 短语某些场景下的解析异常
  • 内核:修复分片特定配置下的数字转换异常
  • 内核:修复单数据源读写分离的元数据异常
  • 内核:修复批量执行语句 statement 关闭异常
  • 内核:修复某些语句包含 * 时的改写异常
  • 内核:修复某些情况下内存模式 ShardingSphere-Proxy 的启动异常
  • 接入端:修复 ShardingSphere-Proxy PostgreSQL/openGauss 可能会误替换 SQL 中非参数占位符的字面量
  • 接入端:修复 PostgreSQL JDBC Driver 42.3.x 无法连接配置了多个 schema 的 PostgreSQL Proxy 的问题
  • 接入端:修复 ShardingSphere-Proxy MySQL timestamp 类型时间精度丢失问题
  • 接入端:修复 ShardingSphere-Proxy PostgreSQL 二进制 numeric 编码不正确的问题
  • 接入端:修复 ShardingSphere-JDBC 潜在的性能问题及 OOM 风险
  • 接入端:修复 ShardingSphere-Proxy MySQL 偶发读取已关闭结果集错误的问题
  • 接入端:修复 ShardingSphere-JDBC 没有参数的情况调用 executeBatch 导致空指针的问题
  • 弹性伸缩:修复 job 报错之后无法通过 DistSQL 重启
  • DistSQL:修复 CREATE SHARDING TABLE RULE 时 inline 表达式解析错误
  • DistSQL:修复当密码为关键字 password 时,ADD RESOURCE 解析异常
  • 分布式治理:修复由于 ZooKeeper session 超时导致计算节点丢失问题
  • 分布式治理:修复治理中心表名大小写问题
  • 分布式治理:DistSQL 启用禁用实例刷新内存计算节点状态
  • 分布式治理:修复数据库发现无法通过 DistSQL 创建 Rule

下载链接:

https://shardingsphere.apache.org/document/current/cn/downloads/

更新日志:

https://github.com/apache/shardingsphere/blob/master/RELEASE-NOTES.md

项目地址:

https://shardingsphere.apache.org/

社区建设

此次 Apache ShardingSphere 5.1.1 版本的发布,共有 64 位 Contributor 提交了 698 个 PR,感谢社区伙伴们的大力支持。

Apache ShardingSphere 5.1.1 正式发布_第2张图片

同时,我们将于 5 月 14 日举办『Apache ShardingSphere 2022 Meetup 北京站』,敬请期待,欢迎大家届时报名参与。

Apache ShardingSphere 5.1.1 正式发布_第3张图片

欢迎添加社区经理微信(ss_assistant_1)加入交流群,与众多 ShardingSphere 爱好者一同交流。

你可能感兴趣的:(Apache ShardingSphere 5.1.1 正式发布)