前言 在SOA.微服务架构流行的年代,许多复杂业务上需要支持多资源占用场景,而在分布式系统中因为某个资源不足而导致其它资源占用回滚的系统设计一直是个难点.我所在的团队也遇到了这个问题,为解决这个问题上,团队采用的是阿里开源的分布式中间件Fescar的解决方案,并详细了解了Fescar内部的工作原理,解决在使用Fescar中间件过程中的一些疑虑的地方,也为后续团队在继续使用该中间件奠定理论基础. 目前分布式事务解决方案基本是围绕两阶段提交模式来设计的,按对业务是有侵入分为:对业务无侵入的基于XA协…
Abp 审计模块源码解读 Abp 框架为我们自带了审计日志功能,审计日志可以方便地查看每次请求接口所耗的时间,能够帮助我们快速定位到某些性能有问题的接口.除此之外,审计日志信息还包含有每次调用接口时客户端请求的参数信息,客户端的 IP 与客户端使用的浏览器.有了这些数据之后,我们就可以很方便地复现接口产生 BUG 时的一些环境信息. 源码地址Abp版本:5.1.3 初探 我通过abp脚手架创建了一个Acme.BookStore项目在BookStoreWebModule类使用了app.UseAud…
delegates模块是由TJ大神写的,该模块的作用是将内部对象上的变量或函数委托到外部对象上.然后我们就可以使用外部对象就能获取内部对象上的变量或函数.delegates委托方式有如下: getter: 外部对象可以通过该方法访问内部对象的值.setter:外部对象可以通过该方法设置内部对象的值.access: 该方法包含getter和setter功能.method: 该方法可以使外部对象直接调用内部对象的函数. 项目文件如下结构: |----- 项目 | |-- delegates.js #…
事务模式 概述 在当前的技术发展阶段,不存一个分布式事务处理机制可以完美满足所有场景的需求.一致性.可靠性.易用性.性能等诸多方面的系统设计约束,需要用不同的事务处理机制去满足. 目前使用的流行度情况是:AT>TCC > Saga,Seata 项目最核心的价值在于:构建一个全面解决分布式事务问题的标准化平台.基于 Seata,上层应用架构可以根据实际场景的需求,灵活选择合适的分布式事务解决方案. Seata针对不同的业务场景提供了四种不同的事务模式,对比如下: AT模式:AT 模式的一阶段.二…
前言 之前某段时间在研究分布式事务过程中,对实现原理比较好奇,于是去Gitee上找了几个人气比较高的框架进行学习,其中印象深刻的有Litx,因为Litx源码不多,且都是基于Spring和Dubbo底层实现,所以理解起来比较容易,索性对这个框架分析过长进行总结如下 litx(https://gitee.com/bryan31/litx)是一个基于补偿的轻量级分布式事务框架.(目前只支持dubbo,未来计划支持http等其他rpc调用的补偿) 对代码逻辑无侵入 和spring事务无缝结合(内部实现是…
概述 定义 Spring Cloud Alibaba Seata 官网地址 https://seata.io/zh-cn/ 最新版本1.5.2 Spring Cloud Alibaba Seata 文档地址 https://seata.io/zh-cn/docs/overview/what-is-seata.html Spring Cloud Alibaba Seata GitHub源码地址 https://github.com/seata/seata Spring Cloud Alibaba…
Use​Middleware​Extensions 前言 本文编写时源码参考github仓库主分支. aspnetcore提供了Use方法供开发者自定义中间件,该方法接收一个委托对象,该委托接收一个RequestDelegate对象,并返回一个RequestDelegate对象,方法定义如下: IApplicationBuilder Use(Func<RequestDelegate, RequestDelegate> middleware); 委托RequestDelegate的定义 /// …
Fescar 是 阿里巴巴 开源的 分布式事务中间件,以 高效 并且对业务 0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题. 示例:https://github.com/windwant/spring-dubbo-service/tree/master/serverx 概览 用户指南 快速开始 API 指南 部署指南 运维指南 参数配置说明 原理与设计 事务协议 AT 模式核心原理与设计 MT 模式核心原理与设计 XA 模式核心原理与设计 配置与服务注册发现 高可用服务集群 微服务框…
导读 微服务架构体系下,我们可以按照业务模块分层设计,单独部署,减轻了服务部署压力,也解耦了业务的耦合,避免了应用逐渐变成一个庞然怪物,从而可以轻松扩展,在某些服务出现故障时也不会影响其它服务的正常运行.总之,微服务在业务的高速发展中带给我们越来越多的优势,但是微服务并不是十全十美,因此不能盲目过度滥用,它有很多不足,而且会给系统带来一定的复杂度,其中伴随而来的分布式事务问题,是微服务架构体系下必然需要处理的一个痛点,也是业界一直关注的一个领域,因此也出现了诸如 CAP 和 BASE 等理论.…
项目地址:FESCAR 以下是官网的文档.简介2019年,Fescar 是 阿里巴巴 开源的 分布式事务中间件,以 高效 并且对业务 0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题. 1. 什么是微服务化带来的分布式事务问题?首先,设想一个传统的单体应用(Monolithic App),通过 3 个 Module,在同一个数据源上更新数据来完成一项业务. 很自然的,整个业务过程的数据一致性由本地事务来保证. 随着业务需求和架构的变化,单体应用被拆分为微服务:原来的 3 个 Modul…