责任链模式与JVM优化场景

责任链的代码实现非常简单, 原理也很好理解, 但想用好它需要有高度抽象业务的能力.

具体来说, 责任链就是使多个对象都有机会处理请求, 从而避免请求的发送者和接收者之间的耦合关系, 并沿着这条链传递该请求, 直到有对象处理它为止.

假设一个60s的促销场景, QPS的峰值是每秒3000个订单, 每个Order对象的大小是1KB(包括对象头, 实例数据, 对齐填充), 按照  ((8:1:1) 1 : 2)   ((伊甸园:幸存者区1:幸存者区2)年轻代 : 老年代)

因此可以通过调大JVM分配的内存, 以及调大年轻代的内存比例, 让系统撑过60s的促销时间, 避免youngGC(0.8)导致FullGC产生的卡顿.

XA 模式的规范是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准,XA 模式规范描述了全局的 TM 与局部的 RM 之间的接口,几乎所有主流关系型数据库都对 XA 模式的规范提供了支持。

其实现原理就是两阶段的提交:

  • 第一阶段事务协调者通知每个事物参与者执行本地事务,本地事务执行完成后报告事务执行状态给事务协调者,此时事务不提交,继续持有数据库锁
  • 第二阶段根据第一阶段的执行结果而决定。如果一阶段都成功,则通知所有事务参与者,提交事务;如果一阶段任意一个参与者失败,则通知所有事务参与者回滚事务

总体来说,XA 模式是 Seata 中最简单的一种模式。

Seata AT模式是一个两阶段提交的事务处理过程, 在AT模式下, 如果一阶段提交成功, 这时候就表明了所有节点本地事务提交都完成了.但AT模式的二阶段回滚指的是通过undo log在本地又执行了一遍事务操作, 将数据还原, 这里的回滚并不是借助数据库实现, 而是借助Seata实现的.

这也是AT和XA的区别所在, 一方面是通过数据库实现的事务回滚, 一方面是通过Seata执行undo log还原数据实现的回滚效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值