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

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

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

df2616916ac7c0ad7db6e1428dd185f5.png

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

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

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

acf6e9def0d0b10a366c8a8b7079736b.png

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

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

9af0f0551e65082a86e461f3fad3898c.png

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

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

  • 计算节点,由于 ShardingSphere 是无状态的,因此可以根据业务需要任意部署;

  • 存储节点,即数据库,维持用户使用的原状;

  • 治理节点,只要将 ShardingSphere 治理节点部署成两地三中心的形式即可。

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

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

c5e59f40285e9d42bc7b6518e02f81c9.png

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

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

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

4e3baca7020dcb0a8d68aaadce5530ff.png

【联系我们】

如果您在业务中有应用 Apache ShardingSphere,想要快速了解、接入 Apache ShardingSphere 5.X 新生态,希望借此机会在团队内部举办一场关于 Apache ShardingSphere 的技术分享,欢迎在公众号后台中留下您的姓名、公司、职位、电话等信息,或扫描下方二维码添加官方小助手,备注“走进企业”,会有专人与您对接。

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

c51bed1c21a5d4e8b800638441ebe389.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mycat和ShardingSphere都是常用的数据库中间件,用于实现数据库的分库分表功能。它们有一些相似之处,但也有一些不同点。 Mycat是一个开源的数据库中间件,主要用于实现MySQL数据库的分库分表功能。它提供了一套完整的分布式数据库解决方案,支持水平拆分和垂直拆分,并且具备读写分离、负载均衡等功能。Mycat通过代理方式将客户端请求转发到后端的多个MySQL数据库节点上,实现数据的分片存储和查询ShardingSphere也是一个开源的数据库中间件,支持多种数据库(如MySQL、Oracle、SQL Server等)。它提供了分库分表、读写分离、分布式事务等功能。ShardingSphere采用透明化的方式,将SQL解析和路由到对应的数据库节点上,实现数据的分片存储和查询。 两者的比较如下: 1. 功能支持:Mycat和ShardingSphere都支持分库分表、读写分离等功能,但ShardingSphere还支持更多的数据库类型。 2. 生态系统:Mycat在国内有较为广泛的应用和社区支持,而ShardingSphere在国际上更为知名,并且有较为活跃的社区。 3. 配置和使用:Mycat相对来说配置较为简单,上手容易;而ShardingSphere的配置相对复杂一些,需要更多的学习和理解。 4. 性能和稳定性:Mycat在性能和稳定性方面经过多年的发展和优化,相对较为成熟;而ShardingSphere也在不断地进行性能优化和功能扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值