更多内容请访问:与华为官方共建的鸿蒙技术社区https://ost.51cto.com简介分布式异构环境,在各种硬件平台上有各种系统软件(如不同的操作系统、数据库、语言编译器等)和各种用户界面。这些硬件系统平台也可能使用不同的网络协议和网络架构进行连接。集成这些系统并开发新的应用程序是一个现实而困难的问题,因此“中间件”技术应运而生。中间件的概念是指在网络环境中充当连接操作系统、数据库等系统软件和应用软件的分布式软件。简而言之,中间件是操作系统之上的(分布式)系统软件。因此,众所周知的分布式存储、分布式计算、消息队列软件,如GFS、MapReduce、Spark、Kafka等都是中间件。中间件的分类中间件的分类难点在于有些中间件可以执行多个服务。大致分为:远程过程调用中间件(RemoteProcedureCall)。面向消息中间件MOM(MessageOrientedMiddleware)。面向对象的中间件OOM(ObjectOrientedMiddleware)。数据库中间件(DataAccessMiddleware)。事务处理中间件(TransactionProcessingMiddleware)TransactionProcessing又译为事务处理。一些开源中间件技术包括高性能Redis中间件服务nredis-proxy、基于RabbitMQ的消息中间件WMQ、分布式数据库中间件ShardingSphere、分布式TCP推送系统GPush等。以ShardingSphere为例,了解数据库中间件(简要介绍ShardingSphere是如何实现分布式事务的)。分布式事务维护分布式环境中的数据一致性分布式事务是保证分布式环境中数据一致性的基本功能。分布式事务是在分布式系统中实现事务,分布式系统实际上是由多个本地事务组成的。ShardingSphere作为分布式数据库的生态系统,对分布式事务提供全面的支持。ShardingSphere支持的事务类型代码如下:publicenumTransactionType{LOCAL,XA,BASE}可以看到,除了本地事务,还提供了XA事务和灵活(BASE)事务来实现分布式事务。XA事务的基本概念和原理XA事务是一个典型的强一致性事务,它完全遵循事物的AICD原则(通俗一点就是让一些更新操作要么成功,要么失败)。XA规范定义了面向全局的事务管理器TransactionManager(TM)和面向本地的资源管理器ResoureMananger(RM)之间的接口。XA是一个双向的系统接口,构成了TransactionManager(TM)和ResoureManager(RM)之间的沟通桥梁。使TransactionManager(相当于“协调器”)控制全局事务,管理事务生命周期,协调资源。让Resourcemanager(相当于“参与者”)负责控制和管理包括数据库在内的各种实际资源。ShardingSphere中的XA事务实现原理ShardingSphere提供了一个专门的XAShardingTransactionManager类来支持XA事务的实现。XAShardingTransactionManager类是分布式事务的XA实现类。主要负责管理和适配实际的DataSource,将接入端事务的begin/commit/rollback操作委托给具体的XA事务管理器。例如XAShardingTransactionManager使用TransactionManager完成commit操作,代码如下:@Overridepublicvoidcommit(){XAShardingTransactionManager.getTransactionManager().commit();//这个XAShardingTransactionManager是各种第三方XA事务的抽象managers}检查XAShardingTransactionManager类的定义及其包含的变量。代码如下:publicfinalclassXAShardingTransactionManagerimplementsShardingTransactionManager{privatefinalMap
