ShardingSphere 在金融支付场景下的实践与调优

Apache ShardingSphere 团队先前应邀到海科融通北京总部,PMC Chair 张亮与海科融通的技术同学在异构数据库关联查询、分布式事务、两地三中心、系统高可用等方面展开了交流。

作为一家专业面向中小微商户、为行业提供完整支付解决方案及综合金融服务的高新技术企业,海科融通通过深耕支付行业与自我创新的紧密结合,目前已经打造出了符合行业需求的“支付+互联网”金融生态圈,用现代支付赋能传统商业。海科融通深耕金融领域二十多年,频繁交易产生的巨量数据以及多元数据库并存的状态,使得后台架构面临的挑战愈发严峻。因此海科融通选择 Apache ShardingSphere,为未来在处理支付生态里海量的多元化数据方面引进新思路。

ShardingSphere 是否支持异构数据库的关联查询

在执行了数据库分片操作后,由于事务不在同一个实例下,许多用户会关注跨节点状态下数据查询的能力。作为 Apache ShardingSphere 的功能特性之一,联邦查询能够解决跨节点查询的问题。但与此同时,跨节点查询会带来非常高的性能损耗,这对于性能、反应要求较高的场景下是不可接受的。

为此,Apache ShardingSphere 在联邦查询体系中引入了查询优化模块。通过优化模型,Proxy 能够计算出相对高效的执行方案,将数据分为必要与不必要两类,在各自的分片中对必要的数据进行跨节点计算,不必要的数据即留在本地处理,进而减少因跨节点查询所带来的性能浪费。

ShardingSphere 如何应对针对复杂事务的统计分析工作?

ShardingSphere 可以承载一部分实际业务的聚合查询工作,不过面对复杂业务或数据体量较大的情况下,一般选择将分析的工作下推。因为 ShardingSphere 本身在实现查询时也需要下推之后再做聚合。如果要实现 AP 计算,ShardingSphere 最后对接的一定是像 Hbase、ClickHouse 等此类数据库,而并非 MySQL 此类数据库。

ShardingSphere 在两地三中心方面是如何实现的?

两地三中心,本质上是技术+管理的综合性方案。目前 ShardingSphere 的两地三中心策略分为三个层面:

  • 计算节点,由于 ShardingSphere 是无状态的,因此可以根据业务需要任意部署;
  • 存储节点,即数据库,维持用户使用的原状;
  • 治理节点,只要将 ShardingSphere 治理节点部署成两地三中心的形式即可。

目前 ShardingSphere 的治理节点是通过 ZooKeeper 或 ETCD 实现的。如果要部署五个治理节点,将三个 ZooKeeper 部署在同一节点下,将另外的两个 ZooKeeper 分别部署在另外两个节点中。如果其中一个机房出现问题,ZooKeeper 依然可以正常运作。

至于网络消耗问题,ShardingSphere 的线上流量分为两部分,只有管理流量才会走 ZooKeeper,真正的线上流量是不会经过 ZooKeeper 的。因此即使是 ZooKeeper 挂掉了,ShardingSphere 也不会受影响,只是不能去改变 ZooKeeper 的配置。ShardingSphere 的大部分流量是不用经过治理中心的,只有管理流量才会经过治理中心。同时 ShardingSphere 本地也缓存一份治理中心的源数据,因此即便外部出现不可用的问题,ShardingSphere 本身也不会受到影响。

负责分布式事务开发人员使用 ShardingSphere 是否会产生额外成本?

是没有额外成本的。目前 Apache ShardingSphere 提供 XA 及柔性事务集成方案。在 ACID 事务中对隔离性的要求很高,在事务执行过程中,必须将所有的资源锁定。柔性事务的理念则是通过业务逻辑将互斥锁操作从资源层面上移至业务层面,通过放宽对强一致性要求,来换取系统吞吐量的提升。不过在使用过程中,由于性能没有 XA 高,使用柔性事务的感受不如使用 XA 的感受好,因此用户大多比较熟悉 XA。

这里以 XA 为例。作为 ShardingSphere 分布式事务管理中的一部分,XA 本身分为 AP、TM 以及 RM 三部分。其中 AP 即应用程序,TM 为事务管理器,RM 为资源管理器。ShardingSphere 是将 AP 和 TM 融合在了一起,通过将本地事务转换成为 AP 和 TM,然后再和 RM 进行交互,进而完全屏蔽用户使用 XA 的感知。

欢迎点击链接,了解更多内容:

Apache ShardingSphere 官网:https://shardingsphere.apache.org/

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

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

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

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

51 声望
7 粉丝
0 条评论
推荐阅读
创新能力加速产业发展,SphereEx 荣获“中关村银行杯”『大数据与云计算』领域 TOP1
8 月 9 日下午,2022 中关村国际前沿科技创新大赛“中关村银行杯”大数据与云计算领域决赛在北京市门头沟区中关村(京西)人工智能科技园·智能文创园落下了帷幕。SphereEx 凭借自身在数据库领域产品与理念的双重创...

SphereEx阅读 207

走进开源项目 - urlcat 源码分析
该项目是在 qs 项目的基础上并使用 typescript 进行开发,其中定义了 2 个类型,有几个不太了解知识点 type 、 Recode 、Partial 和 Pick 。

robin5阅读 2.1k评论 2

封面图
三年前端的2022,如果创造比卷更有趣,那为何创造不能成为主旋律?
up主2019年毕业,找了一份前端工作,一直干到现在。2019年末出现疫情,三年的时间,也差不多与我的职业生涯完全重合了。刚过去的2022年,我也没有避开阳的命运(这病毒是真的强),就12月这一个月时间,几乎全公...

Gomi8阅读 1.4k

封面图
个人/团队/公司开源,Joyqi 谈贡献开源的「不同姿势」
前不久,Answer.dev 创始人 @Joyqi 受到邀请,在刚刚结束的 GitHub Universe 的 Local Party 上做了题为「用 GitHub 构建开源项目的各种姿势」的主题分享。以下为他的分享实录。

AnswerDev7阅读 1.4k评论 2

张晋涛:我的 2022 总结
大家好,我是张晋涛。2022 年已经结束,我每年都会惯例的做个小回顾,今年因为阳了在恢复身体,一直拖到了今天才写。生活在 2022 年初做回顾的时候,觉得 2021 是魔幻的一年,但现在看来 2022 年其实更加魔幻。一...

张晋涛6阅读 666评论 2

封面图
万字详解,吃透 MongoDB!
MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统,由 C++ 编写的。MongoDB 提供了 面向文档 的存储方式,操作起来比较简单和容易,支持“无模式”的数据建模,可以存储比较复杂的数据类型,是一款非常...

JavaGuide3阅读 221

封面图
阿里云被曝 UI 抄袭,复刻 SkyWalking Trace Profiling 页面
2023 年 1 月 3 日,SkyWalking 官网发布消息,称阿里云抄袭了 SkyWalking Trace Profiling 整体页面 UI,包括页面布局、文字和分析任务设置,唯一的区别仅有颜色方案。

鸣飞5阅读 4.7k

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

51 声望
7 粉丝
宣传栏