
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的程序员都在学习微服务开发的相关技术,而今天我们就通过案例分析来了解一下,分布式事务与微服务的关系。
分布式事务2PC或者3PC是否适合于微服务下的事务管理呢?答案是否定的,原因有三点:
由于微服务间无法直接进行数据访问,微服务间互相调用通常通过RPC(Dubbo)或HttpAPI(SpringCloud)进行,所以已经无法使用TM统一管理微服务的RM。
不同的微服务使用的数据源类型可能完全不同,如果微服务使用了NoSQL之类不支持事务的数据库,则事务根本无从谈起。
即使微服务使用的数据源都支持事务,那么如果使用一个大事务将许多微服务的事务管理起来,这个大事务维持的时间,将比本地事务长几个数量级。如此长时间的事务及跨服务的事务,将为产生很多锁及数据不可用,严重影响系统性能。
由此可见,传统的分布式事务已经无法满足微服务架构下的事务管理需求。那么,既然无法满足传统的ACID事务,在微服务下的事务管理必然要遵循新的法则--BASE理论。
BASE理论由eBay的架构师DanPritchett提出,BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性,应用应该可以采用合适的方式达到一致性。BASE是指基本可用(BasicallyAvailable)、软状态(SoftState)、一致性(EventualConsistency)。
基本可用:指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。
软状态:允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。
一致性:一致性是指系统中的所有数据副本经过一定时间后,能够达到一致的状态。弱一致性和强一致性相反,一致性是弱一致性的一种特殊情况。
BASE中的一致性是对于微服务下的事务管理的根本要求,既基于微服务的事务管理无法达到强一致性,但必须保证重一致性。那么,有哪些方法可以保证微服务下的事务管理的一致性呢,按照实现原理分主要有两类,事件通知型和补偿型,其中事件通知型又可分为可靠事件通知模式及大努力通知模式,而补偿型又可分为TCC模式、和业务补偿模式两种。这四种模式都可以达到微服务下的数据一致性。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。