Apache ShardingSphere:刚柔并济的开源分布式事务解决方案

标签: dev | 发表时间:2019-01-27 00:00 | 作者:
出处:http://itindex.net/relian


成熟的XA事务管理器非常多,Apache ShardingSphere(Incubating)并未选择重新造轮子,而是寄望于打造一个生态,将合适的轮子有机地整合在一起,提供成熟稳定的分布式事务处理能力。它的主要功能如下:


1.   复用成熟引擎,自动切换底层实现


Sharding-transaction-xa模块进一步定义了面向XA事务管理器开发者的SPI,开发者仅需实现SPI定义的接口,即可自动加入至Apache ShardingSphere(Incubating)生态,作为其XA事务管理器。


Apache ShardingSphere(Incubating)官方目前实现了基于Atomikos和Bitronix的SPI,并且邀请了Radhat JBoss的XA事务引擎Narayana [https://github.com/jbosstm/narayana] 开发团队实现了JBoss的SPI。用户可以自行的在Atomikos,Bitronix和Narayana间选择自己喜欢的XA事务管理器。


受限于Apache基金会项目License的原因,Apache ShardingSphere(Incubating)将采用Apache协议的Atomikos作为其默认实现,关于基于LGPL协议的Bitronix和基于LGPL协议的Narayana,用户可以自行引用相应jar包至项目的classpath即可。


如果这3个XA事务管理器仍未满足用户需求,开发者则可通过扩展SPI来实现定制化的XA事务管理器。


2.   数据源透明化自动接入


Apache ShardingSphere(Incubating)能够自动将XADataSource作为数据库驱动的数据源接入XA事务管理器。而针对于使用DataSource作为数据库驱动的应用,用户也无需改变其编码以及配置,Apache ShardingSphere(Incubating)通过自动适配的方式,在中间件内部将其转化为支持XA协议的XADataSource和XAConnection,并将其作为XA资源注册到底层的XA事务管理器中。


XA模块的架构图如下:



Saga事务—跨越柔性事务限制,实现自动补偿




在柔性事务中,每一次对数据库的更新操作都将数据真正的提交至数据库,以达到高并发系统中最佳资源释放的效果。当数据出现问题需要回滚时,通过柔性事务管理器保持数据的最终一致性以及隔离行为。Apache ShardingSphere(Incubating)采用Apache ServiceComb Saga Actuator [https://github.com/apache/servicecomb-saga-actuator] 作为Saga事务管理器,它的主要功能如下:


1.   自动反向补偿


Saga定义了一个事务中的每个子事务都有一个与之对应的反向补偿操作。由Saga事务管理器根据程序执行结果生成一张有向无环图,并在需要执行回滚操作时,根据该图依次按照相反的顺序调用反向补偿操作。Saga事务管理器只用于控制何时重试,合适补偿,并不负责补偿的内容,补偿的具体操作需要由开发者自行提供。


另一个柔性事务管理器TCC与Saga理念相似,均需要由使用方开发者提供补偿操作。除了补偿,TCC还提供了资源占用的能力,但也需要由使用方开发者提供资源占用操作。虽然功能上强于Saga,但TCC的使用成本较之Saga也更高。


由使用方开发者提供资源占用和补偿操作,这就使得柔性事务的解决方案始终难于大规模的在业务系统中落地。并且由于业务系统的介入,使得柔性事务框架的使用范畴始终定位于服务而非数据库,数据库能够直接使用的成熟的柔性事务管理器目前还不多见。


Apache ShardingSphere(Incubating)采用反向SQL技术,将对数据库进行更新操作的SQL自动生成数据快照以及反向SQL,并交由Apache ServiceComb Saga Actuator执行,使用方则无需再关注如何实现补偿方法,将柔性事务管理器的应用范畴成功的定位回了事务的本源——数据库层面。


对于能够处理复杂查询语句的Apache ShardingSphere(Incubating)SQL解析引擎来说,插入/更新/删除等语句解析难度则要小很多;ShardingSphere是通过拦截用户执行的SQL进行数据分片的,所有的SQL都能够被其直接管控。因此将反向SQL和补偿能力与Apache ServiceComb Saga Actuator相结合,达到了自动化柔性事务的能力,是数据分片和柔性事务结合的典范。

相关 [apache shardingsphere 开源] 推荐:

Apache ShardingSphere:刚柔并济的开源分布式事务解决方案

- - IT瘾-dev
成熟的XA事务管理器非常多,Apache ShardingSphere(Incubating)并未选择重新造轮子,而是寄望于打造一个生态,将合适的轮子有机地整合在一起,提供成熟稳定的分布式事务处理能力. 1.   复用成熟引擎,自动切换底层实现. Sharding-transaction-xa模块进一步定义了面向XA事务管理器开发者的SPI,开发者仅需实现SPI定义的接口,即可自动加入至Apache ShardingSphere(Incubating)生态,作为其XA事务管理器.

Apache ShardingSphere在转转亿级交易系统落地实践

- - 掘金 后端
这几年随着转转二手业务的快速发展,订单系统的基础性能问题也愈发严重,作为系统运转的基石,订单库压力不容小觑. 大促期间DB压力大,单库查询qps上万占用大量数据库资源,写性能大大降低;. 数据与日剧增,单库中包含非常多数据量过数亿的大表,占用空间接近服务器的容量上限;. 数据量太大,数据备份和恢复需要耗费很长时间,极端情况下丢失数据的风险越高.

常用开源协议BSD/APACHE/GPL/LGPL/CPL/MIT概述

- - CSDN博客互联网推荐文章
现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种 http://www.opensource.org/licenses/alphabetical.  我们在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议. 如果要开源自己的代码,最好也是选择这些被批准的开源协议.

Apache Cassandra 1.0正式版发布,开源的分布式NoSQL数据库

- gnawux - ITeye资讯频道
Apache软件基金会(ASF)发布了 NoSQL 数据库 Cassandra 1.0 正式版. ASF表示,Cassandra是一个具有高可扩展性、分布式的NoSQL数据库系统,它能够实时快速地处理大量的数据而不影响服务及系统性能. Cassandra在云计算中将扮演一个重要的角色. Apache Cassandra是一套开源的分布式NoSQL数据库系统.

Apache Beam:一个开源的统一的分布式数据处理编程库

- - 简单之美
Apache Beam是一个开源的数据处理编程库,由Google共享给Apache的项目,前不久刚刚成为Apache TLP项目. 它提供了一个高级的、统一的编程模型,允许我们通过构建Pipeline的方式实现批量、流数据处理,并且构建好的Pipeline能够运行在底层不同的执行引擎上. 刚刚接触该开源项目时,我的第一感觉就是:在编程API的设计上,数据集及其操作的抽象有点类似Apache Crunch(MapReduce Pipeline编程库)项目;而在支持统一数据处理模型上,能够让人想到Apache Flink项目.

Apache 基金会与 GitHub 都受美国法律约束!开源当自立

- - 博客园_新闻
美国对华为采取的一系列限制措施仍在继续,事件正在疯狂发酵. 在这件事情上,最为国人关注的一个点是“核心技术掌握在别人手里,如果别人不再开放,那一切都将灰飞烟灭”,今天 谷歌限制华为使用 Android 的消息正加深了这一种担忧. 有太多文章都讲到了这一点,其中不乏许多过度渲染,以制造情绪. 过度制造恐慌这是我们所反对的,但是实际上,“技术自立”这个问题真的不容小觑.

ShardingSphere x Seata,一致性更强的分布式数据库中间件

- - IT瘾-dev
日前,分布式数据库中间件 ShardingSphere 将Seata 分布式事务能力进行整合,旨在打造一致性更强的分布式数据库中间件. 数据库领域,分布式事务的实现主要包含:两阶段的 XA 和 BASE 柔性事务. XA 事务底层,依赖于具体的数据库厂商对 XA 两阶段提交协议的支持. 通常,XA 协议通过在 Prepare 和 Commit 阶段进行 2PL(2 阶段锁),保证了分布式事务的 ACID,适用于短事务及非云化环境(云化环境下一次 IO 操作大概需要 20ms,两阶段锁会锁住资源长达 40ms,因此热点行上的事务的 TPS 会降到 25/s 左右,非云化环境通常一次 IO 只需几毫秒,因此锁热点数据的时间相对较低).

Apache Shiro 介绍

- - CSDN博客推荐文章
什么是Apache Shiro?. Apache shiro 是一个强大而灵活的开源安全框架,可清晰地处理身份认证、授权、会话(session)和加密. Apache Shiro最主要的初衷是为了易用和易理解,处理安全问题可能非常复杂甚至非常痛苦,但并非一定要如此. 一个框架应该尽可能地将复杂的问题隐藏起来,提供清晰直观的API使开发者可以很轻松地开发自己的程序安全代码.

Apache Derby Papers

- -
Derby Type System (Note: if your browser shows HTML source for this page instead of displaying it, save the file locally with . It will prompt you to click on "Grant license to ASF for inclusion in ASF works", and this is the permission we need in place to host your contribution on the Derby web site..

Apache防止攻击

- - 小彰
为了防止恶意用户对Apache进行攻击,我们需要安装mod_security这个安全模块. mod_security 1.9.x模块的下载与安装. 下载地址: http://www.modsecurity.org/download/index.html. 建议使用1.9.x,因为2.x的配置指令与1.x完全不同,解压后进入解压目录,执行:.