自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (5)
  • 收藏
  • 关注

原创 Seata源码解析9——数据源(1)

1前言之前我们分析了GlobalTransactional注解的整个生态,但是一些细节性的逻辑还没有深入去看,例如:数据源代理、各种Client的初始化、模板方法等。在这一篇里面,我们会了解一下在上一篇中没有讲完的数据源代理。数据源代理是非常重要的一个环节。我们知道,在分布式事务运行过程中,很多undo log等的记录、资源的锁定等,都是用户无感知的,因为这些操作都在数据源的代理中完成了。2...

2020-04-12 11:13:52 1790 3

原创 Linux问题排查 ——IO篇

在解决IO问题的时候,主要搞清楚三个问题:问题是否真的出现在IO哪个进程在大量使用IO这个进程访问了哪些文件通常我们在弄清楚第二个问题的时候,就已经知道IO是什么问题引起的了。如果还不能,就继续弄清楚第三个问题,当我们知道进程访问了哪些文件后,就能反推程序中哪些地方使用了。问题是否真的出现在IO这个问题比较好确定,常见的iostat就能打印出IO相关的信息:这个命令分三行,首...

2020-02-15 10:27:03 2040 2

原创 Seata源码解析8——GlobalTransactional注解

####前言之前我们过了一遍独立服务:事务协调者(TC)的部分源码,光看源码还是比较难深入理解的。后面我们直接从一个事务的流程来讲,把整个流程中用到的源码都过一遍。整个事务开始之前,肯定就要从事务注解@GlobalTransactional开始了。在讲注解的时候,我们会过一遍Spring AOP实现原理。####关系总览和GlobalTransactional相关的有GlobalTran...

2020-02-12 22:55:59 29539 4

原创 Seata源码解析7——事务协调者的启动(5)

####前言终于到了Server启动的最后一个组件,DefaultCoordinator了 。这是一个默认的事务协调者TC。DefaultCoordinator继承了很多个接口和抽象类,拥有非常大而全的能力。TCInboundHandler接口,里面定义了各种handler,主要用于处理事务协调过程中的各种请求。例如:全局事务开启的请求、全局事务提交的请求、全局事务回滚的请求。Trans...

2020-01-18 20:02:22 1818

原创 Seata源码解析6——事务协调者的启动(4)

前言上一篇文章中,我们讲解了启动中的RpcServer类。这个类的顶级父类AbstractRpcRemoting是一个抽象类,封装了Netty的各种能力。除了RpcServer的直接父类AbstractRpcRemotingServer继承了它,还有一个AbstractRpcRemotingClient类也继承了它。在这一篇里,我们会继续把这个Client的抽象类也讲解了。另外,RpcServ...

2020-01-04 22:36:47 703

原创 Seata源码解析5——事务协调者的启动(3)

前言我们在上一小节中介绍了Metric的实现原理,本小节我们继续介绍后面的流程,首先我们回顾一下协调者的启动流程1. 解析传入的参数配置2. 初始化metrics3. 初始化一个RpcServer,其实就是一个netty的server,但并不马上start4. 初始化UUID生成器5. 初始化Session管理器6. 初始化协调者模块7. 协调者作为handler设置到netty ...

2019-12-29 11:59:01 1210

原创 Seata源码解析4——事务协调者的启动(2)

前言我们在上一篇文章中,讲解了协调者启动的总体流程,也讲解了参数解析的实现。这一篇文章中,我们就要讲第二步,metrics的初始化。首先我们会介绍一下metrics初始化的过程,然后直接把整个metrics模块讲清楚。内容较多。初始化metricsmetrics的初始化,使用了MetricsManager。我们常见的"懒汉单例"初始化方式有:枚举、双检锁、静态内部类等。MetricsMana...

2019-12-24 23:18:59 1055

原创 Seata源码解析3——事务协调者的启动(1)

前言事务协调者主要负责管理整个分布式事务,每个节点的分支的本地事务在执行之前,都会在事务协调者上注册,本地事务执行结束后,还会向协调者汇报。当事务需要提交或回滚时,也协调者负责推送给各个RM。就现在的协调者代码来看,如果使用文件存储过程信息,会存在单点问题。如果使用数据库存储,所有状态保存在数据库上,则最后单点问题会落到数据库上。协调者总体架构整个协调者模块可以分为以下几大部分:协调者...

2019-12-08 14:56:57 951

原创 Seata源码解析2 —— SPI扩展

前言我们平时使用Spring时,由Spring来管理类,Seata没有依赖Spring,因此它自己做了一套SPI机制,用于类的管理。由于Seata里面一个接口有多个实现类,如配置中心就支持consul、etcd3、nacos等。这些实现类都继承了同一个接口,在运行时获取某一个实现类,就需要使用到SPI扩展点了。使用方式EnhancedServiceLoader类中有load方法和loadF...

2019-11-24 15:24:26 1635 2

原创 分布式事务(三)—Seata AT模式

前言我们在之前所介绍的一些分布式事务的理论,是需要通过具体的框架工程化的,这样才能在我们日常工作中使用。常见的开源分布式事务框架很多,比如: Seata、EasyTransaction等等。我们在这篇文章将会介绍阿里开源的分布式事务框架Seata。Seata这个分布式事务框架支持有多种模式,如: AT、TCC、SAGA、XA。除了AT,后面三种分布式事务模式的大致流程,我们在之前的文章中有介...

2019-11-17 21:11:25 7014 4

原创 Seata源码解析 —— 项目结构

前言我们后续解析Seata源码都是基于版本0.9.0,这个是笔者写这篇源码解析时候最新的一个tag。Seata的源码其实非常简单,后续我们会从整个服务启动、服务发现、配置加载等开始,串联起AT、TCC等事务模式,把这些过程的所有源码做一个解析。这篇文章,我们首先来了解一下Seata项目的总体概况。项目结构Seata包含的模块比较多,整个的模块划分比较清晰,很容易理解。所有模块的纯代码量加起...

2019-11-17 21:09:20 5015 1

原创 Linux问题排查 —CPU

Linux问题排查 —CPU前言在当今Docker等容器大行其道的年代,多数互联网公司的线上服务器都是使用Linux。当我们的服务部署在Linux上并出现问题时,都指望运维同学来排查是不切实际的,因此程序员必须具备一定的问题排查能力。但是,大多数程序员并不清楚要如何排查常见的Linux线上问题。当然,能直接从业务系统的日志中得知问题所在,那还比较好办,但是如果遇到CPU高、内存高、IO高、网...

2019-11-02 21:35:09 582

原创 分布式事务(二)消息事务方案

前言我们在上一篇文章中大致介绍了常见的分布式事务方案。基于消息的分布式事务虽然有很多的缺点,但是在合适的场景中还是可以使用的。该方案最大的优点可能就是不需要框架,只需要一个实现了反查事务消息的MQ就可以实现,简单粗暴。对于资源无法锁定导致后续不好回滚的问题,也可以在业务层通过“预扣除”、“加锁”等方式,实现资源锁定。方案回顾步骤1-2是在本地事务执行之前,服务A负责生成一个全局唯一的事务...

2019-10-20 19:20:14 361

原创 分布式事务(一) 常见方案

1分布式事务问题的由来​ 在传统的单体应用中,我们所有的功能都能在同一个数据库中完成。一致性自然也能由同一个本地事务保证。以一个交易系统为例,如果有个客户消费了,首先我们需要在余额中扣钱,然后增加这个客户的积分。​ 但是数据库往往会成为系统的瓶颈,因此我们引入微服务后,很可能会对数据库做垂直拆分。此时如果不使用分布式事务,就会出现数据一致性问题,因为两个服务只能保证自己本地事务的一致性。...

2019-10-10 22:59:37 575

Spark技术内幕 深入解析Spark内核架构设计与实现原理 完整版

阿里大神出品,完整版的文档,适合深入学习spark。。。。

2017-11-23

Pentaho Kettle Solutions 中文版文档

kettle学习非常权威的指南文档,适合kettle的深入学习使用

2017-11-22

WebRTC教程2015最新版v0.3

详细叙述了webrtc开发环境的搭建、编译、协议、webrtc库调用等方面。适合想为自己的系统增加视频、语音功能的初学者。

2015-01-11

SSH2框架搭建教程

基于MyEclipse8.5的struts2、spring2.5、hibernate3.2整合 (亲自动手实验了整个过程)

2013-01-23

ArcGIS 10.1 破解文件

ArcGIS 10.1 破解文件

2012-11-29

空空如也

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

TA关注的人

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