在我们微服务的业务场景中,存在着很多的高并发场景,在系统运行过程中可能会出现单点故障,比如系统突然宕机或者数据库不可用,这些场景都是需要解决的。 在实际解决这些问题时,很多企业的做法是采用分布式事务(Distributed Action)。 对于分布式事务我们要从两个方面来考虑: 分布式事务中台服务如何实现; 我们需要做哪些工作去实现分布式事务? 接下来的内容就是基于一个企业微服务业务场景中,针对业务需求我们设计了一套针对于分布式事务解决方案的实施细节。
一、业务场景分析
服务对象状态的一致性,主要指两个或多个服务对象之间能够互相协作,并且能够保证相互之间相互配合以确保业务结果能够正常执行的能力。 分布式事务中台:在服务架构中,如果需要对某个微服务执行事务,可以使用分布式事务来解决。 分布式数据库:当数据库的部分资源无法被同时访问时,可以使用分布式事务来解决该问题。 以上场景说明了在业务场景中,存在着多个高并发业务场景。 我们需要在这些业务场景中,解决好两个或多个对象之间的一致性问题。
二、业务实现架构
在微服务架构中,为了应对高并发场景,我们可以将业务逻辑拆分成多个微服务(可以采用微服务模式或者 Spring Cloud模式),各个微服务之间通过消息接口进行通信。 每个微服务都是一个单独的业务逻辑,在实际部署时也只需要将消息接口配置成一致的方式就可以了。 但是分布式事务是一个很复杂的问题,分布式事务涉及到三个层次的协议(Transaction Protocol, Transactor Project、 Establishment),其中每一个层次我们都需要对每一步进行详细的配置和说明。 这里以数据库连接池来举例: [数据库连接池]存储数据库数据;
三、方案设计原理
[原理]: 由于我们需要保证整个微服务系统的服务水平透明,所以我们不能直接去实现全局分布式事务,而是需要先去处理内部的业务问题。 服务层将本地事务与全局事务(分布式事务)解耦,然后通过异步方式进行消息推送,通过消息代理和异步发送等方式将业务消息送至指定的服务线程; 当返回结果为“region”时,服务线程可以将当前所执行的业务操作返回给全局服务线程,或者调用本地持久化存储方式(SQL或者 Hibernate)。
四、总结
我们可以看到在微服务架构中,分布式事务解决方案对于企业解决业务高并发场景来说,是非常重要的,它可以让服务间更好地协同,提升系统性能。 微服务架构中,在设计和实现分布式事务时可以结合其他的一些技术: 分布式事务中台可以通过配置或者依赖数据库等方式在业务中实现,不需要进行额外的开发工作(比如创建数据库)。 分布式事务中台是以集群方式运行,一个集群由多个实例组成,其中每个实例的状态都能够独立存储和管理。 微服务组件间实现分布式事务的逻辑都是一致的(比如:异步复制等)。
更多数据治理相关资料请咨询客服获取,或者直接拨打电话:020-83342506
立即免费申请产品试用
申请试用