分布式系统案例课
杨波
前携程 / 拍拍贷技术总监,微服务技术专家
11809 人已学习
新⼈⾸单¥59
课程目录
已完结/共 66 讲
第一章 课程介绍 (2讲)
时长 09:20
时长 04:42
第二章 如何设计一个分布式计数服务 - 系统设计面试案例 (7讲)
第五章 如何设计一个高并发无状态的会话缓存服务 - 携程SessionServer案例 (5讲)
第十章 课程回顾&结课测试 (1讲)
分布式系统案例课
登录|注册
留言
8
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 23 | 如何解决微服务的分布式事务问题?(下)
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 | 结课测试&结束语
登录 后留言

全部留言(8)

  • 最新
  • 精选
原军
老师在微服务架构中,服务直接能相互调用吗,如果可以的话,通过什么方式调用的

作者回复: 微服务架构中,要么同步调用,要么异步调用,具体要看业务或者技术场景。 同步调用一般用RPC或者REST框架,异步调用一般通过MQ。

2020-07-30
4
不记年
为什么分区容错性是既成事实呢

作者回复: P分区容忍性是即成事实,意思是说在微服务场景下,或者说在数据库被拆分的场景下,系统一定是分区的(Partitioned),也就不再是只有一个独立的不分区的数据库。

2021-04-21
butterfly
saga模式和rocket mq的事务消息有什么区别? saga模式需要协调者保证消息可靠的投递到mq的吗?

作者回复: saga可以认为是一种更通用的服务编排/协调模式,偏向解决长流程性事务。而rocket mq的事务消息是实现事务性可靠消息的一种技术。saga模式也可以基于rocket mq的可靠消息来实现。 saga模式一般要求底层消息的可靠交付,但是它的编排逻辑(例如状态机)可以设计为能够自动处理底层消息交付不可靠的情况(通过重试或者回滚等机制)。

2021-02-16
Vincent_
这节课里提到的购物场景,订单service保证了订单-db的事务一致性,库存service保证了库存-db的事务一致性,但是实际大厂商城,我下一个单如果没有库存下单时直接就会提示我库存不足,而不让我的订单落库,这是要怎么实现?引入mq主要就是分隔开各个服务的细粒度,但是业务场景下,多服务协调,异步的话用户没法实时获得感知,同步的话,多个服务用rpc又会让处理时间变长。想请问老师,这种场景大厂一般是怎么解决的?异步的话,是如何在用户点击下单时,多个服务异步mq,用户一个下单request还能拿到这么多异步的最后结果的?

作者回复: 回答你的一些问题: 1. 在启动下单扣库存事务之前,可以先校验一下是否有库存,如果没有直接返回没有,如果有再启动分布式事务。 2. 有同步异步两种主要做法,国内大多用同步事务方案,也就是说事务协调器的主流程是同步的,比方说可以基于阿里seata框架的AT模式(或者TCC)模式来实现。国外有不少采用异步方案的,比方说基于uber cadence来实现,虽然是异步实现,但是调用方客户端也是可以封装成同步的,具体可以参考uber cadence的java客户端实现(底层应该使用polling轮询机制实现)。关于seata和cadence,本课程后面都有介绍。

2020-08-24
Elective9095
saga模型,中间步骤失败会对前面已完成的步骤进行补偿。如果一个业务流程比较长,还能这样搞吗?我感觉saga模型就是需要人工补偿的步骤改成了自动补偿。

作者回复: saga模式长短事务都支持,长事务更适合。 分布式事务的做法,都是把原来人工做的变成让机器自动做,就像以前银行没有计算机,都靠手工补偿。

2020-08-14
OlafOO
购物事务过程中,全局事务还未完成,但是订单已经可见了,用户此时取消订单,会对购物事务进行干扰,导致数据不一致的问题,可以使用语义锁,对未完成的订单不允许操作。
2020-10-06
2
曹操的曹🐈
老师,协同模式下在回滚的过程中其中一跳超时重试多次或者不可达是否都会破坏事务的一致性,这种应该如何避免?
2023-02-28
北极的大企鹅
来了
2022-11-11
收起评论