当前位置: 首页 > 科技观察

OpenHarmony啃论文成长计划——浅谈中间件

时间:2023-03-12 14:20:00 科技观察

更多内容请访问:与华为官方共建的鸿蒙技术社区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{privatefinalMapcachedDataSources=newHashMap<>();privatefinalXATransactionManagerxaTransactionIndex.getTransactionManager=XALoadingTransactionManagergetTransactionMananger();}可以看出,XAShardingTransactionManager实现了ShardingTransactionManager接口,同时保留了一组XAShardingTransactionDataSources。XAShardingTransactionManager实例是使用JDK中的ServiceLoader类加载的。代码如下:if(!xaTransactionManagers.hasNext(){returnnewAtomikosTransactionmanager();XATransactlonManagerresult=xaTRAnsactionManagers.next();}if(xaTransactionManagers.hasnext(){log.warn("存在多个事务管理器,选择第一个默认情况下。");}returnresult;}//XATransactionManager是各种第三方XA事务管理器的抽象,如果没有找到合适的XATransactionManager,系统会默认创建一个AtomikosTransactionmanager。XATransactionManager是各种第三方XA事务管理器的抽象。partyXA事务管理器,如果没有合适的XATransactionManager,系统会默认创建一个AtomikosTransactionmanager二十年前人们对中间件的看法:中间件是计算机软件中比较底层的内容,它与计算机操作系统的关系相当close.Operation系统的部分功能可以通过中间件实现,中间件的部分功能也可以通过操作系统。因此,操作系统和中间件将进一步融合,从而推动计算机软件体系结构的变革。其次,人们希望实现不同的业务逻辑,不同功能的中间件能够集成在一起,作为一个完整的系统协同工作;这些集成的中间件服务应该封装在一个框架中。用中间件思维看OpenHarmony架构对比20年前人们对中间件的看法和20年后的OpenHarmony架构图,其实框架层和服务层是连接应用层和内核层的,两者可以也能在一定程度上看到。作为“中间件”。某种程度上,OpenHarmony操作系统符合二十年前的设想,将操作系统和中间件进一步整合。但是严格来说,中间件这个概念太大了。在OpenHarmony这个可扩展、跨终端、易于开发的分布式操作系统中,没有中间件的概念,只有各种子系统和组件。OpenHarmony、HarmonyOS、HMSOpenHarmony和HarmonyOS是操作系统,HMSCore是SDK包。HMSCore是基于HarmonyOS操作系统的开发组件包,相当于中间件。HarmonyOS是华为基于OpenHarmony开发的企业发行版。举个通俗易懂的例子,HarmonyOS提供了零件和各种工具,比如扳手和汽车零件等,如果开发者想要一辆车,他可以直接造车,然后根据零件和各种工具重新组装各种系统..HMSCore就是汽车的各个系统,比如转向系统,动力系统。开发者也可以直接使用汽车的各个系统来快速打造一辆汽车。这就是SDK包的作用,提高开发效率。它封装了操作系统的许多API,并为特定的功能场景定义了接口。它不需要从头编写任何功能模块,可以直接引用。HMS符合文中给出的概念。脱离了中间件的概念。那么OpenHarmony应用于手机的“HMSCore”让我们拭目以待。更多信息请访问:与华为官方共建的鸿蒙技术社区https://ost.51cto.com