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

全部留言(7)

  • 最新
  • 精选
慌张而黑糖
栅栏令牌怎么有点乐观锁的意思,感觉是悲观锁和乐观锁的结合

作者回复: 栅栏令牌是悲观锁,在锁被判定超时的情况下,可能其实锁持有方并没有完全死掉,之后它又回来更新共享资源,栅栏令牌是对这种情况的一个修复。

2020-08-06
2
4
what if
老师请教个问题,数据库本身就有实现丰富的锁机制,锁管理,死锁检测,锁超时处理,这里设计乐观锁,还有悲观锁时,都把这部分逻辑放到应用侧去实现,而不是DB里实现,是因为DB不容易水平扩容以及DB锁代价高的原因吗?

作者回复: 数据库内部的锁,是为了解决数据库内部的并发控制而设计的,它并不能直接应用到数据库以外的场景。为了支持业务上一些需要锁机制的场景,某些数据库也对外提供一些锁机制。这两类锁是面向不同场景的锁。 而业务上一些需要锁机制的场景,可以借助数据库表所对外提供的一些锁机制,来实现乐观锁和悲观锁。当然,除了数据库依赖,redis或者zookeeper之类也提供锁机制。另外,除了锁的具体底层实现以外,一般业务端还要写一些封装代码。

2020-10-23
1
tenyears
请假下波波老师企业中用的分布式锁zk 实现用的多还是redis 用的多?

作者回复: 对于分布式锁场景,中大型互联网公司zk用得多,小规模公司redis/DB用得多。因为总体上小规模公司更多,所以我认为redis/DB的使用量更广泛。 打个比方,zk是重量级武器,功能更强大,运维部署成本也高。redis是轻量级武器,功能只能算够用,但是运维部署成本低。

2021-02-28
what if
悲观锁里的栅栏令牌,看上去就是基于版本号的乐观锁: )

作者回复: 有点类似

2020-10-23
Sam Fu
这里面的乐观锁机制很好用。尤其是在状态机更新的时候,校验更新时数据库中中的状态必须等于预期的状态,否则更新失败。
2021-11-14
2
九时四
栅栏令牌锁场景:如果微服务1比微服务2提前更新数据,还是有问题啊,怎么保证只更新一次?
2022-11-05
1
1
丁小明
还可以通过一种watch dog的机制,业务方主动续约延长过期时间,不过这种机制无法应对gc导致的jvm卡顿导致延期的问题。
2020-11-19
1
收起评论