分布式系统案例课
杨波
前携程 / 拍拍贷技术总监,微服务技术专家
11809 人已学习
新⼈⾸单¥59
课程目录
已完结/共 66 讲
第一章 课程介绍 (2讲)
时长 09:20
时长 04:42
第二章 如何设计一个分布式计数服务 - 系统设计面试案例 (7讲)
第五章 如何设计一个高并发无状态的会话缓存服务 - 携程SessionServer案例 (5讲)
第十章 课程回顾&结课测试 (1讲)
分布式系统案例课
登录|注册
留言
10
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 24 | 阿里分布式事务中间件Seata解析
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 需求收集和总体架构设计
04 | 存储设计
05 | 计数服务设计(上)
06 | 计数服务设计(下)
07 | 查询服务设计
08 | 技术栈选型
09 | 进一步考量和总结
10 | PMQ 2.0项目背景
11 | PMQ 2.0的设计解析(上)
12 | PMQ 2.0的设计解析(中)
13 | PMQ 2.0的设计解析(下)
14 | PMQ 3.0的演进
15 | Kafka的动态重平衡是如何工作的?(上)
16 | Kafka的动态重平衡是如何工作的?(下)
17 | 消息队列设计和治理最佳实践
18 | 第四章目录和大纲
19 | 微服务的四大技术难题是什么?
20 | 如何解决微服务的数据一致性分发问题?
21 | 如何解决微服务的数据聚合Join问题?
22 | 如何解决微服务的分布式事务问题?(上)
23 | 如何解决微服务的分布式事务问题?(下)
24 | 阿里分布式事务中间件Seata解析
25 | Uber微服务编排引擎Cadence解析
26 | 如何理解Uber Cadence的架构设计?
27 | 如何实现遗留系统的解耦拆分?
28 | 拍拍贷系统拆分项目案例
29 | CQRS/CDC技术在Netflix的实践
30 | 第四章总结
31 | SessionServer项目背景
32 | 总体架构设计
33 | 如何设计一个高性能基于内存的LRU Cache?
34 | 如何设计一个高性能大容量持久化的ConcurrentHashmap?
35 | 设计评估和总结
36 | SaaS项目healthchecks.io的背景和架构(上)
37 | SaaS项目healthchecks.io的背景和架构(下)
38 | 如何设计一个轻量级的基于DB的延迟任务队列?
39 | 如何设计一把轻量级的锁?
40 | 如何设计一个分布式限流系统?
41 | 如何设计一个分布式TopK系统实现实时防爬虫?
42 | 第七章目标和大纲
43 | 为什么说ServiceMesh是微服务的未来(上)
44 | 为什么说ServiceMesh是微服务的未来(下)
45 | 解析Envoy Proxy(上)
46 | 解析Envoy Proxy(下)
47 | Envoy在Lyft的实践
48 | 解析Istio
49 | K8s Ingress、Istio Gateway和API Gateway该如何选择?(上)
50 | K8s Ingress、Istio Gateway和API Gateway该如何选择?(下)
51 | Spring Cloud、K8s和Istio该如何集成?
52 | 第八章目标和大纲
53 | 拍拍贷案例:大型网站架构是如何演进的?
54 | 最小可用架构:Minimum Viable Architecture(上)
55 | 最小可用架构:Minimum Viable Architecture(下)
56 | 如何构建基于OAuth2/JWT的微服务架构?(上)
57 | 如何构建基于OAuth2/JWT的微服务架构?(下)
58 | 拍拍贷案例:如何实现数据中心机房的迁移?
59 | 携程/Netflix案例:如何实现同城双活和异地多活?
60 | 第九章大纲
61 | 学习开源项目的6个层次和8种方法(上)
62 | 学习开源项目的6个层次和8种方法(中)
63 | 学习开源项目的6个层次和8种方法(下)
64 | 百万年薪架构师是如何炼成的?
65 | 解读一份大厂的研发岗职级体系
66 | 结课测试&结束语
登录 后留言

全部留言(10)

  • 最新
  • 精选
雨中漫步
老师,请教下,在AT模式下,创建前置镜像和后置镜像的目的是不是就是为了生成对应的undo log?如果是的话,就有点困惑了,感觉完全没有必要生成后置镜像,直接根据前置镜像生成一条update 语句,在需要回滚时update 回原来的状态就好了,这样可以避免多一次的数据库查询

作者回复: 在二阶段回滚的时候,后镜像是用来做数据校验的:拿 UNDO LOG 中的后镜与当前数据进行比较,如果有不同,说明数据被当前全局事务之外的动作做了修改。这种情况,需要根据配置策略来做处理。 这里有一个参考例子: https://www.cnblogs.com/dalianpai/p/11864659.html

2020-07-26
6
Continue
在AT模式下,A调用B,B事务提交成功,A提交事务失败,这时候A已经回滚,但是B的数据没有回滚,哪位遇到过呢

作者回复: Seata的源码其实并不复杂,如果碰到你说的那种情况,建议要想办法在测试环境重现问题,然后调试跟踪进去才能定位问题根因。

2020-12-26
1
老师事务隔离怎么做,有一本地账户现在有100元,现在一分布式事务,有三个分支事务,其中排第二分支事务是本地账户充值50元,且此分支事务已提交,这时该账户有一个扣款150的另一事务到来了。此时账户数据库应该是150(分支事务已提交),哪么这个账户扣款事务会隔离不,怎么隔离。如果不隔离,扣款完成后,分布式事务最后分支事务失败引起分布式事务回滚,哪不引起账户不正确?

作者回复: 在Seata AT模式下,如果扣款150的事务也是一个Seata全局事务(假设称为事务B),并且分布式事务(假设称为事务A)最终决策回滚,那么A/B之间有写隔离,最终A/B都会回滚,具体原理和流程请参考Seata 官方文档中的案例,写隔离部分: https://seata.io/zh-cn/docs/overview/what-is-seata.html 如果如果扣款150的事务不是一个Seata全局事务,那么需要显示添加@GlobalLock标注,将该事务纳入Seata事务管理,这样也具有写隔离性,参考seata全局锁: https://www.cnblogs.com/lay2017/p/12528071.html

2020-10-06
Continue
老师,在用seata的AT模式时候,如果使用批量insert或者update500条以上会非常慢,十几秒,知道有哪些优化方案吗

作者回复: 你这个属于一种特例情况,数据量比较大,目前我也没有找到针对你这种情况的优化方案。 因为seata是开源的,代码也不复杂,你这个问题应该跟RM的具体数据库操作方式有关,建议,先通读seata RM的源码。然后,要优化性能,先要测量获得性能数据,看看到底慢在哪里。但是目前seata metrics只有TC支持,RM还不支持,所以你需要自己手动对RM进行埋点,可以考虑prometheus metrcis埋点,或者CAT调用链埋点,找出性能瓶颈在什么地方,然后再考虑优化,必要的时候可能需要自己定制优化一下seata RM的源码。

2020-09-26
2
creed
老师,我有一个问题。seata at模式下载二阶段回滚失败,有补偿机制吗

作者回复: seata AT模式下,如果rollback失败,应该是不可重试的。 会导致TM中的TransactionTemplate#execute抛出回滚异常。可以配置对应回滚的FailureHandler,其中可以发邮件通知进行人工介入,可参考spring下的GlobalTransactionalInterceptor.java代码。 在seata XA模式下,对于某些回滚错误,是会自动重试的,直到事务超时为止,参考rm-datasource下的ResourceManagerXA.java。

2020-09-19
2
约书亚
之前看了1.1的源码,发现tc的failover还不太完善,tcc有些问题没解决,saga用起来不太方便...另外代码也挺乱的,还是需要时间锤炼

作者回复: 可以尝试Cadence分布式工作流方案,解耦更彻底,流程状态更清晰。

2020-07-25
2
飞翔
TC 是有状态的服务那么怎么能让它高可用呀

作者回复: 看后面的视频,有例子解释。

2020-07-18
2
Geek_50d835
2pc的分布式协调器,一般会确认全部事务执行成功才会真正提交事务,数据的一致由数据库来保证。但seata貌似采用了一种乐观模式,如果发生异常通过补偿模式来进行回滚,和2pc相比,它的吞吐量会有所提升,但可能导致的问题是,提交和回滚之间数据已经发生了变化,这就需要额外的策略了,感觉这块儿比较容易出问题。 另外,就是基于乐观模式,在并发高的时候,比如秒杀活动,可能会导致大量回滚,性能反而不好。
2022-05-10
Geek_50d835
分布式环境下,在提交或回滚时,怎么保证消息不丢失呢,seata怎么保证这种情况下的一致性呢?
2022-05-10
piboye
AT, TCC 都不是强一致吧, 隔离性都是有问题的。 2PC-XA 才是强一致的吧
2022-03-07
收起评论