前段时间,Apache ShardingSphere 核心技术团队应邀来到携程上海总部,PMC Chair 张亮与携程的技术同学针对 ShardingSphere 一些使用场景的话题展开了深度交流与探讨。

携程集团作为全球领先的一站式旅行平台,为确保用户体验及业务开展,近年来不断加大在人工智能、云计算等方面的研发和投入力度。尤其在后台数据库,随着用户增长和业务扩张带来的流量增长,或多或少增长的数据体量都会对性能产生一定的影响。由于对性能的要求更加极限,这也是携程在内部采用 ShardingSphere-JDBC 分片能力的原因。

在使用的过程中,携程技术团队也逐渐成为了 Apache ShardingSphere 社区的核心用户,其对于 ShardingSphere 也进行了更加高阶段的定制化改造与应用。前段时间,携程技术团队曾将实践 Apache ShardingSphere 的过程整理成一篇技术干货,感兴趣的同学可点击下方链接查看。

*链接:干货 | 数据为王,携程国际火车票的 ShardingSphere 之路

以下为交流过程中核心讨论内容摘要:

ShardingSphere 可以针对某些特定的数据源支持用户自定义连接吗?

是支持的。在 ShardingSphere 中,数据库方言真正的需要做的就是生成不同的方言取数据以及用不同的驱动去取数据这两方面。一方面,ShardingSphere 通过 SQL 体系将特定的数据源转换为语法树,再通过语法树转成查询计划数,通过查询计划数再反向生成 SQL 方言。其中 SQL 方言可以生成为 MySQL、PostgreSQL、Hbase 等不同的数据库方言,SQL 方言到数据库如何执行这部分是支持自定义扩展,为开发者提供更强大的自定义能力,以便配合业务定制各种高级特性。

另一方面是需要用不同的驱动取数据,通过查询计划树去做分析。查询计划数与 SQL 方言没有关系,只需要更改查询计划树里的表名或算子名称,根据这些再来生成 SQL,之后将取出来的数据通过 ShardingSphere 的算子重新做计算即可。因此,用驱动取数据所面向的是执行计划,和 SQL 方言无关。

当然,这样做也会产生一个问题,即从很多地方抽取过来的数据都被集中一起做计算,对内存和 CPU 的占比会非常高,进而导致性能出现下降。ShardingSphere 在执行过程中会尽量降低计算比重,将不必要在内存中计算的部分尽量下推。由于 ShardingSphere 是 TP 计算引擎,这就决定了 ShardingSphere 必须要在同一个线程中做计算,否则无法保证事务的先后。社区正在规划实现 AP 计算来大幅度提升计算能力,但 AP 计算就无法保证事务先后,这就需要用户根据场景诉求和所能承受的业务得失去选择。

数据增量迁移场景下,在迁移完成后会对数据进行校验吗?

Apache ShardingSphere 提供了多种内置的数据一致性校验算法,用以比较源端数据和目标端数据是否一致,默认使用 CRC32 以便在速度与一致性上取得平衡,且校验算法支持 SPI 自定义。在数据迁移构成中,数据体量越大耗时越长,同时增量数据往往是动态变化的,为了最终确认两端数据一致,一定是需要一段停写时间,让日志能够追上来并完成校验。而对于性能的影响,则在于这段停写时间的长短。

Apache ShardingSphere 可以将数据迁移任务分为多个部分并行执行,合并同一记录的修改操作,在配置上之后再执行一条命令停止主库的写入,使主库只具备只读的权限,同时在只读期间暂停 SQL 执行并在停写的瞬间确保数据是全局一致的,进而再操作切库,减少对于系统可用性的影响。此外,ShardingSphere 的校验算法也支持用户根据场景需要来定制规则,赋予了用户更高的自由度。

Apache ShardingSphere 联邦查询支持用户基于某种协议定义组件吗,现在进展如何?

联邦查询是针对分布在多个不同数据库上的数据提供跨库查询能力的一种查询方式,目前 Apache ShardingSphere 联邦查询还只是一款处于试验阶段的产品,虽然功能层面已经实现,但对于资源的占用还比较高。Apache ShardingSphere 联邦查询能力主要支持同构数据库,比如 MySQL 到 MySQL 的查询。未来,ShardingSphere 联邦查询会实现面向异构数据库之间的查询,如 MySQL 到 PostgreSQL、MySQL 连 Hbase 等。在 Apache ShardingSphere 中联邦查询能力是开放给用户的,用户完全可以通过 SQL 方言的转换去实现各类功能,尽可能满足更多场景下的业务需求。

【联系我们】

如果您在业务中有应用 Apache ShardingSphere,想要快速了解、接入 Apache ShardingSphere 5.X 新生态,希望借此机会在团队内部举办一场关于 Apache ShardingSphere 的技术分享,欢迎扫描下方二维码添加官方小助手(ss_assistant_1),备注“走进企业”,会有专人与您对接。

在沟通过后如果双方认为产品和场景均非常匹配,Apache ShardingSphere 社区的核心团队将会走进您的企业,与各条研发线的工程师们现场沟通,解答关于 Apache ShardingSphere 的任何疑问。

欢迎点击链接,了解更多内容: Apache ShardingSphere 官网:https://shardingsphere.apache.org/

Apache ShardingSphere GitHub 地址:https://github.com/apache/shardingsphere

SphereEx 官网:https://www.sphere-ex.com


SphereEx
51 声望8 粉丝

根植于Apache 顶级项目「ShardingSphere」,SphereEx 始终秉承开源、共享、生态、平台理念。