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 爱好者一同交流。

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

Original: https://www.cnblogs.com/sphereex/p/16309444.html
Author: SphereEx
Title: ShardingSphere 在金融支付场景下的实践与调优

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/621482/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Vue 2.0 基础

    知识点 1.是一个MVVM框架 由MVC架构衍生,分为View(视图层)、ViewModel(数据视图层)、Model(数据层),MVVM 最标志性的特性就是 数据绑定,实现数据驱…

    数据库 2023年6月11日
    093
  • [LeetCode]1221. 分割平衡字符串

    在一个「平衡字符串」中,’L’ 和 ‘R’ 字符的数量是相同的。 给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。 返回…

    数据库 2023年6月9日
    080
  • MySQL知识点大全!!

    使用PreStatement对象: public int execUpdate(String sql, Object[] parms) { int count = 0; try {…

    数据库 2023年6月16日
    081
  • innobackupex备份源码解析

    目前MySQL的物理备份大多数采用xtrabackupex进行,其备份过程如下图所示,这里通过解析 xtrabackup 的源码来详细看看其是如何进行备份的,xtrabackup …

    数据库 2023年6月9日
    098
  • SpringMvc(一)-初识

    1、环境搭建 1.1 jar包 4.3.18.RELEASE org.springframework spring-web ${spring.version} org.spring…

    数据库 2023年6月16日
    078
  • 阿里云服务器中MySQL数据库被攻击

    前几天刚领了一个月的阿里云服务器玩,在里面装了MySQL,然后这几天找了个小项目练习着玩呢,就将表建在里面了。刚访问添加员工还好好的,刚给员工分页查询呢 ,啪一下 ,很突然昂 ,就…

    数据库 2023年6月11日
    070
  • gh-ost使用问题记录

    因为 pt-osc 对数据库性能影响较大,且容易造成死锁问题,目前我们在线更改表结构都使用 gh-ost 工具进行修改,这里记录一下使用 gh-ost 过程中的问题,以作记录;首先…

    数据库 2023年6月9日
    074
  • 工作中常用Less知识点实践总结

    工作中常用Less知识点实践总结,帮助你更好的使用Less 我所理解的Less的一些好处 函数式编程css 自定义变量用于整体主题调整 嵌套语法简化开发复杂度 mixin的写法 ….

    数据库 2023年6月11日
    075
  • go 切片的扩容

    slice type slice struct { array unsafe.Pointer len int cap int } func makeslice(et *_type,…

    数据库 2023年6月9日
    047
  • 正则表达式与SQL

    在我心中正则表达式和SQL就是一样的东西。 SQL是结构化查询语言,是根据某个查询、修改规则来查询修改数据,是描述一个规则给数据库,数据库来执行,数据库返回结果,过程不需要考虑,不…

    数据库 2023年6月9日
    062
  • Mysql 实现数据库读写分离

    一、Amoeba 是什么 Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、…

    数据库 2023年6月14日
    071
  • Redis安装

    Redis For Windows 安装 Redis 官方只提供源码包,不支持Windows 老版本 Windows 版本下载地址(最高版本为3)老版本地址 新版本 Windows…

    数据库 2023年6月6日
    081
  • 计算机中内存、cache和寄存器之间的关系及区别

    寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。…

    数据库 2023年6月11日
    096
  • etcd和Zookeeper孰优孰劣对比

    背景 最近在看到Pachyderm的介绍时,看到作者拿YARN和Kubernetes做类比,拿Zookeeper和etcd做对比。YARN和Kubernetes的类比还相对比较好理…

    数据库 2023年6月11日
    082
  • 解决数据库报错Error 1390: Prepared statement contains too many placeholders的问题

    今天,当您开发一个项目时,您试图一次插入大量数据,但出现了以下错误: [En] Today, when you were developing a project, you tri…

    数据库 2023年5月24日
    093
  • 避坑!SimpleDateFormat不光线程不安全,还有这个隐患

    众所周知,SimpleDateFormat是多线程不安全的 下面这段代码通过多线程使用同一个SimpleDateFormat对象的parse方法, 多次执行代码来测试,可以看到会出…

    数据库 2023年6月9日
    088
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球