Liquibase Erueka延迟注册(四)
(1). 概述 能不能在Liquibase执行完成之后,再让我们的程序向注册中心(Eureka)进行注册呢(即服务正确初始化之后,再提供服务)?答案是可以的,这里提供大概思路: 扩展EurekaAutoServiceRegistrat...
(1). 概述 能不能在Liquibase执行完成之后,再让我们的程序向注册中心(Eureka)进行注册呢(即服务正确初始化之后,再提供服务)?答案是可以的,这里提供大概思路: 扩展EurekaAutoServiceRegistrat...
(1). Wrk是什么? wrk是一款简单的HTTP压测工具,它能用很少的线程压出很大的并发量.原因是它使用了一些操作系统特定的高性能io机制,比如:select/epoll/kqueue等.
(1). Sysbench是什么?Sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.
(0). 前言 需要搞压测,自然,少不了有一套实时监控工具,让运维帮忙搭建一下,结果,只用了10分钟就给我搭建完成.不得不促使我学习Prometheus+Grafana.
(0). 前言 需要搞压测,自然,少不了有一套实时监控工具,让运维帮忙搭建一下,结果,只用了10分钟就给我搭建完成.不得不促使我学习Prometheus+Grafana.
(1). Seata是什么? Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata将为用户提供了AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案.
(1). 看下Executor类的实现
(1). 概述 前面了解到GlobalTransactionalInterceptor,它主要负责拦截@GlobalTransactional(@GlobalLock).并把请求委派给:TransactionalTemplate.
(1). TransactionManager 在这一小节,我主要分析:DefaultTransactionManager,因为它是:TransactionManager的实现类.
(1). 先看下TMClient类的结构图
(1). 概述 在前面的内容,剖析到:TccActionInterceptor的代码织入,仅在消费端生效(@LocalTCC除外).
(1). 分支事务是何时commit和rollback 和AT模式是一样的,分支事务都是要等待TC大体流程如下: RmBranchCommitProcessor接受TC发送过来的事件. DefaultRMHandler.onRe...
(1). 查看下DefaultRemotingParser的类图
(1). GlobalTransactionScanner GlobalTransactionScanner类在前面Seta-AT模式的源码时,有分析过了,在这里只关注有差别的地方.
(1). ActionInterceptorHandler.proceed```public Map<String, Object> proceed( Method method, Object[] argume...
(1). 概述 这一节,主要分析:TC通知所有的参与者(RM),进行rollback.
(1). 概述 这一节,主要分析:TC通知所有的参与者(RM),进行commit.
(1). 概述 前面分析到:DataSourceProxy在构建时,会向TC进行注册,但未深入到里面去剖析.这一小节,深入剖析:ResourceManager
(1). 先看下RMClient类的结构图
(1). 先聊一下Spring GlobalTransactionalInterceptor在什么时候创建的?GlobalTransactionalInterceptor是在GlobalTransactionScanner.wrapIfNece...
(1). spring-cloud-alibaba-seata-2.1.0.RELEASE(spring.factories) 查看seata是如何与Spring Boot结合的(找到入口文件): spring-cloud-alibaba-s...
(1). 概述 前面分析到:TransactionalTemplate会把请求委派给:GlobalTransaction处理.在这里我将分析:DefaultGlobalTransaction,因为它是:GlobalTransaction的实现类.
(1). 先看下DataSourceProxy的类图 RM的类图有点多,不过,对于Java开发人员都很清楚的几个类(DataSource/Connection/Statement/PreparedStatement).RM就是以DataSour...
(1). AT模式下切入口在呢? AT模式的切入口在: 以JDBC编程为例(Connection/PreparedStatement/ResultSet). 业务端(JdbcTemplate/MyBatis/Hibernate…...
(1). 概述 前一节,分析到在UpdateExecutor方法里,会调用:ConnectionProxy.commit()方法,没有进入到里面进行详解,这一小节,主要分析commit/rollback方法.
(1). TCC模式 TCC是业务层面的分布式事务,最终一致性,不会一直持有资源的锁. TCC相关信息,请参考这篇文章: http://www.tianshouzhi.com/api/tutorials/distributed_transact...
(1). transfer-tcc-sample项目下载并编译$ git clone https://github.com/seata/seata-samples.git$ cd seata-samples$ mvn clean install ...
(1). 下载源码```seata源码$ git clone -b v1.4.0 https://github.com/seata/seata.git seata-v1.4.0
(1). Saga模式 在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现.从这句话里也能看到:Saga也是业务层进行处理,和TCC类似,只是相...
(1). AT模式(一阶段之提交) 首先,在对某条数据进行操作之前(INSERT/DELETE/UPDATE),先查询出这条数据(INSERT除外),我们称该操作为:镜像之前数据. 然后,执行业务SQL操作. 再次,查询这条...