自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小识的博客

放弃很容易,但坚持一定很酷

  • 博客(15)
  • 资源 (14)
  • 收藏
  • 关注

原创 seata源码解析:TM RM 客户端的初始化过程

TM和RM初始化过程上一篇文章说过,在Spring启动的过程中就会就会初始化TM和RM,建立与TC的长连接。TM,RM,TC都是用netty来处理网络连接的,初始化netty客户端和服务端的过程也非常类似。本篇文章只分析TM的初始化过程,RM和TM复用了很多方法// TmNettyRemotingClientpublic void init() { // registry processor // 注册消息处理器 registerProcessor(); if (i.

2021-10-31 20:57:52 932

原创 分布式事务解决方案:7种常见解决方案汇总

二阶段提交协议为了解决分布式事务的问题,出现了很多协议,如2PC(二阶段提交协议)、3PC(三阶段提交协议)在二阶段提交协议中有一个事务管理器和多个资源管理器。事务管理器分两阶段协调资源管理器。一阶段:事务管理器告诉资源管理器准备执行事务,并锁住需要的资源。当准备完成后,资源管理器向事务管理器报告已准备就绪。二阶段:如果所有资源管理器都准备成功,第二阶段事务管理器回要求所有的资源管理器执行提交操作。如果任一资源管理器在第一阶段返回准备失败,那么事务管理器回要求所有的资源管理器在第二阶段执行回滚操作.

2021-10-29 20:56:53 5035

原创 分布式事务解决方案:RocketMQ事务消息

用RocketMQ事务消息实现分布式事务RocketMQ实现分布式事务的流程如下producer向mq server发送一个半消息mq server将消息持久化成功后,向发送方确认消息已经发送成功,此时消息并不会被consumer消费producer开始执行本地事务逻辑producer根据本地事务执行结果向mq server发送二次确认,mq收到commit状态,将消息标记为可投递,consumer会消费该消息。mq收到rollback则删除半消息,consumer将不会消费该消息,如果收到.

2021-10-28 20:54:12 485

转载 分布式事务解决方案:TCC设计思想及其可能遇到的问题

发现网上的一个关于TCC的分享很赞,转载一下。原文地址:https://www.sofastack.tech/blog/sofa-channel-4-retrospect/1、 Seata 的 TCC 模式1.1 服务化拆分下面我们就进入第一个主题,Seata 的 TCC 模式。蚂蚁金服早期是单系统架构,所有业务服务几乎都在少数几个系统中。随着业务的发展,业务越来越复杂,服务之间的耦合度也越来越高,故我们对系统进行了重构,服务按照功能进行解耦和垂直拆分。拆分之后所带来的问题就是一个业务活动原来只需.

2021-10-26 11:18:15 1632

原创 seata源码解析:seata AT模式是如何实现的?

AT模式RM在回滚时会先跟afterImage进行比较如果一致,则执行回滚sql如果不一致,再跟beforeImage进行比较2.1 如果一致没必要执行回滚sql了,数据已经恢复2.2 如果不一致说明出现脏数据,抛出异常,让人工处理AT模式是如何保证隔离性的?参考博客[1]https://chenjiayang.me/2019/06/29/seata-at/[2]https://www.beikejiedeliulangmao.top/middleware/seata/des.

2021-10-25 09:42:10 1008

原创 seata源码解析:分支事务的提交或回滚

介绍一个全局事务是由多个分支事务组成的,而ResourceManager就是用来管理分支事务的,主要有如下3个功能向TC注册资源接收TC的commit请求,提交分支事务接收TC的rollback请求,回滚分支事务因为Seata支持多种模式,每种模式都有对应的资源管理器,如TCCResourceManager,DataSourceManager,ResourceManagerXA等DefaultResourceManagerDefaultResourceManager包含了所有Resou.

2021-10-24 13:50:24 1509

原创 seata源码解析:seata和spring是如何整合的?

介绍在seata低版本中,seata需要用户自己配置数据源代理,并且在resources目录下放2个文件,file.conf和registry.conf。其中file.conf配置了数据存储模式,registry.conf配置了注册中心的信息在最新的版本中,seata新增了一个seata-spring-boot-starter模块,让我们可以将数据存储模式和注册中心定义在application.yaml中,并且可以通过Enable注解开始数据源自动代理。因为我之前的Demo都是基于seata-sp.

2021-10-22 16:37:28 1115

原创 seata源码解析:事务状态及全局锁的存储

介绍public class Server { public static void main(String[] args) throws IOException { // 省略部分代码... // SessionHolder负责事务日志的持久化存储 // 设置存储模式,有三种可选类型,file,db,redis SessionHolder.init(parameterParser.getStoreMode()); .

2021-10-21 21:34:58 1621

原创 seata源码解析:seata server各种消息处理流程

介绍上一篇文章我们分析了seata-server端启动流程以及消息处理流程。这篇我们就来看第二个比较重要的内容,全局事务管理器是如何工作的?seata中有一个全局事务协调器DefaultCoordinator,它主要是处理来自RM和TM的请求来做相应的操作,但是实际的执行者并不是DefaultCoordinator,而是DefaultCoreDefaultCore的继承关系如下图,从继承图中我们可以看到其实Core类的实现类才是一个事务管理器。在seata中有4种事务管理模式,所以每种模式有一个具.

2021-10-21 21:31:54 499

原创 seata源码解析:全局事务id是如何传递的?

Dubbo想在Dubbo应用之间进行参数传递,其实非常简单。通过Dubbo提供的隐式传递功能即可实现。使用方式如下所示。// A服务设置参数RpcContext.getContext().setAttachment("name", "小明");// A服务通过RPC调用B服务// B服务可以获取到A服务设置的参数RpcContext.getContext().getAttachment("name");所以我们可以把全局事务id放在RpcContext(rpc)中,然后在下游取出来。但.

2021-10-21 20:16:35 1863

原创 面试官:生产环境发生问题,你一般怎么排查?(网络篇)

网络篇计算机网络的性能指标常用数据量单位一个比特就是二进制数据中的一个1或01Byte = 8 bitKB = 210BMB = KKB = 220BGB = KMB = 230BTB = K*GB = 240B常用速率单位kb/s = 103b/s (bps) (一秒传输1000个比特)Mb/s = kkb/s = 106b/s (bps)Gb/s = kMb/s = 109b/s (bps)Tb/s = k*Gb/s = 1012b/s (bps)有一个待发送的数据块,大小.

2021-10-17 20:52:57 1615

原创 面试官:生产环境发生问题,你一般怎么排查?(Linux工具篇)

CPU篇平均负载本篇文章是我看了极客时间《Linux性能优化实战》专栏做的一个总结当系统变慢时,我们经常用uptime或者top命令来查看系统的负载情况,如下命令所示[root@VM-0-14-centos ~]# uptime 15:30:04 up 108 days, 23:29, 1 user, load average: 0.07, 0.05, 0.05值含义15:30:04当前时间up 108 days, 23:29系统运行时间1 user.

2021-10-13 10:01:05 2191

原创 seata源码解析:seata是如何支持TCC模式的?

最常应用的模式TCC模式应该是企业应用最广的一种模式,主要分为2个阶段prepare,锁定相关的资源,保证事务的隔离性commit/rollback,根据全局事务的执行状态来执行分支事务的提交和回滚TCC模式不需要进行数据源代理,因为提交和回滚操作在业务层面都已经定义好了,不需要通过数据源代理生成对应的回滚操作当然事务的执行状态还是会通过seata server记录在global_table和branch_table表中通过TccActionInterceptor对方法进行增强当使用TC.

2021-10-05 23:54:26 579

原创 seata源码解析:seata-server启动时都做了哪些操作?

seata-server的主要功能有哪些?当我们启动一个seata-server的时候,只需要执行一下seata-server.sh脚本即可,这个脚本其实就是调用了io.seata.server.Server的main方法,我们来看一下这个main方法做了哪些操作?public class Server { public static void main(String[] args) throws IOException { // get port first, use to.

2021-10-05 23:25:30 534

原创 seata源码解析:只需一个注解就能开启分布式事务?

介绍给加了@GlobalTransactional,@GlobalLock,@GlobalLock注解的方法生成代理类protected Object wrapIfNecessary(Object bean, String beanName, Object cacheKey) { try { synchronized (PROXYED_SET) { // 已经处理过就不在处理 if (PROXYED_SET.contains(be.

2021-10-05 22:24:00 3726

mybatis-generator-core-1.3.5.jar

支持接口和XML更名的mybatis-generator,具体使用参考 https://blog.csdn.net/zzti_erlie/article/details/99606620

2019-08-15

MongoDB权威指南第2版(书签,高清).zip

MongoDB权威指南第2版(书签,高清).zip,MongoDB权威指南第2版(书签,高清).zip

2019-05-14

Linux系统命令及Shell脚本实践指南

Linux系统命令及Shell脚本实践指南,书签,清晰,完整版

2019-04-17

Maven实战(高清完整带书签)

Maven实战高清完整带书签,Maven实战高清完整带书签,Maven实战高清完整带书签,Maven实战高清完整带书签

2018-01-09

将doc文件批量转为docx文件,用python将doc文件批量转为docx文件

用python将doc文件批量转为docx文件,用python将doc文件批量转为docx文件,

2017-12-28

Spring MVC学习指南

Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。, 本书重在讲述如何通过Spring MVC来开发基于Java的Web应用。全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、上传文件、下载文件多个角度介绍了Spring MVC。除此之外,本书还配有丰富的示例以供读者练习和参考。, 本书是一本Spring MVC的教程,内容细致、讲解清晰,非常适合Web开发者和想要使用Spring MVC开发基于Java的Web应用的读者阅读。

2017-10-13

用Python将Word中的内容写入Excel

用Python将Word中的内容写入Excel

2017-08-28

Qt实现多语言的切换

Qt实现国际化,能切换程序的语言

2017-02-25

Qt加载字体文件删除字体文件

Qt加载自己的字体,不用系统提供的QFontComboBox

2017-02-25

Qt实现字体文件的加载和删除

Qt实现字体文件的加载和删除

2017-02-25

Qt实现语言切换

Qt实现语言切换

2017-02-23

Qt5串口助手V2.0(能记录上次打开的文件)

Qt5串口助手V2.0(能记录上次打开的文件)

2016-09-27

Qt5串口助手

用Qt5自身的类库开发的串口助手

2016-09-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除