SpringBoot-事务源码分析

复习总结:

  • 注解式事务是通过aop实现的,底层是cglib动态代理实现的
    • 事务aop场景中的Advice是TransactionInterceptor
    • PointCut是TransactionAttributeSourcePointcut,它通过TransactionAttributeSource来检测@Transactional注解,因此注解可以理解为切面

查看更多

SpringCloud-分布式事务Seate-AT

Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布 式事务服务。在 Seata 开源之前,Seata 对应的内部版本在阿里经济体内部一直扮演着分布式一 致性中间件的角色,帮助经济体平稳的度过历年的双11,对各BU业务进行了有力的支撑。经过多 年沉淀与积累,商业化产品先后在阿里云、金融云进行售卖。2019.1 为了打造更加完善的技术生 态和普惠技术成果,Seata 正式宣布对外开源,未来 Seata 将以社区共建的形式帮助其技术更加 可靠与完备。

Seata 将 为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

1、基本流程

Seata AT模式实际上是2PC协议的一种演变方式,也是通过两个阶段的提交或者回滚来保证多节点事务的一致性。

  • 第一个阶段, 应用系统会把一个业务数据的事务操作和回滚日志记录在同一个本地事务中提交, 在提交之前,会向TC(seata server)注册事务分支,并申请针对本次事务操作的表的全局锁。

查看更多

分库分表-mycat进阶

目标:

1、掌握不同数据分片策略的配置方式与特点

2、Mycat扩缩容与数据导入导出

3、理解Mycat注解的作用于应用场景

1. 分片策略详解

1.1 Mycat分片策略详解

总体上分为连续分片和离散分片,还有一种是连续分片和离散分片的结合,例如先范围后取模。比如范围分片(id 或者时间)就是典型的连续分片,单个分区的数量和边 界是确定的。离散分片的分区总数量和边界是确定的,例如对 key 进行哈希运算,或者再取模。

查看更多

分库分表-mycat基础

目标:

1、通过实际案例掌握 Mycat 特性与详细配置含义

2、了解 Mycat 监控与日志查看

1. Mycat 概念与配置

1.1 Mycat介绍与核心概念

1.1.1 基本介绍

历史:从阿里 cobar 升级而来,由开源组织维护(兼职)。

定位:运行在应用和数据库之间,可以当做一个 MySQL 服务器使用(不论是在工具 还是在代码或者命令行中都可以直接连接)。实现对 MySQL 数据库的分库分表,也可以通过 JDBC 支持其他的数据库。

查看更多

分库分表-为什么要分库分表

目标:

1、理解分库分表的意义

2、理解数据切分的不同方式,以及带来的问题与解决方案

1、为什么要分库分表

随着业务变得越来越复杂,用户越来越多,集中式的架构性能会出现巨大的问题,比如系统会越来越慢,而且时不时会宕机,所以必须要解决高性能和可用性的问题。

不仅仅是应用,作为所有业务数据的管理者,数据库也会遇到一样的问题,而且很 多时候应用系统出现问题,就是数据库变慢了或者数据库挂掉了导致的。

查看更多

MyBatis-给源码加中文注释(转)

我们在看框架源码的时候,如果没有注释,看起来会比较吃力。所以如果能够一边看源码一边自己加中文注释,下次阅读的时候就会轻松很多。

问题是:通过maven下载的jar,查看源码,实际上看到的是经过反编译的class文件,是不能够修改的(提示:file is read only)。
如果把当前maven下载的jar包强行关联到自己下载的源码,又有可能会出现字节码跟源码文件不一致的情况(提示:Library source does not match the bytecode for class),导致debug的时候无法进入代码。

如果要保证源码和字节码一致,最好的办法当然是在本地把下载的源码编译生成jar包,上传到本地maven仓库,再引用这个jar。

以MyBatis为例,如果我们要给MyBatis源码加上中文注释(以IDEA操作为例)

原文连接

查看更多

RPC-手写RPC调用过程

rpc 全称remote procedure call 远程过程调用,是一种分布式服务调用协议。

需求:分布式环境下,服务A想要调用服务B的某方法,就像调用自己本地的方法一样

分析:

  • 首先,服务A需要知道服务B提供了哪些方法,并且知道这些方法的调用方式(参数列表,返回类型)
查看更多

CSRF攻击与防御(转)

转载地址

CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。

CSRF攻击攻击原理及过程如下:

  1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

查看更多