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

  • 最新
  • 精选
夏至
和谷歌的Bigtable有点像

作者回复: 这个和bigtable还是有本质区别的,bigtable要复杂很多,bigtable可以对标开源的hbase。

2021-06-10
2
托尼斯威特
波波老师, 问两个问题, 视频中没有提到. 1. PersistentMap 是要一致和 LRUCache 保持一致, 还是只有 LRUCache发生 Eviction的时候才写入 PersistentMap? 2. Write Behind 的时候要遍历所有的key, 把所有的key, value 都往 DB 写一遍吗? 还是记录了 dirty bit ?

作者回复: 1. LRUCache发生Eviction时才写入PersistentMap 2. Write Behind可以简单理解为将对应的insert/update写入一个queue,后台线程定期刷这个queue,写入DB

2021-04-04
红糖白糖
我在想如果为了备份,数据备份到了Redis。那为啥不支持基于Reids来做这个分布式的缓存系统,Redis也支持高可用、持久化、扩展等等。想到的不足可能就是节点宕机后,节点上的数据不可用了,因为数据分片是一致性hash来实现的。如果是基于数据库来备份,异步写SQL也不一定100%成功,这个是允许部分数据的丢失得嘛?

作者回复: 采用Redis也可以实现SessionServer,只是需要重新设计另外一套架构。携程当时还没有引入Redis,没有相关的运维团队,所以我们最终考虑自研Cache服务,这样把控粒度也会更好(尤其是监控埋点)。

2021-01-03
Vincent_
没有理解到这些的应用场景,bigcache也好halodb也好,最后就是想取代redis这类缓存吗?

作者回复: 并没有说要取代redis,这边的SessionServer场景,只是需要一种大容量的能够持久化Value的缓存,我们自己定制了一个bigcache,实现并不复杂,功能刚好够用,我们可以把控,而且可以细粒度埋点监控。 当然,整个SessionServer的实现,也可以考虑基于redis来实现,只是总体架构设计会有不同。

2020-08-29
约书亚
HaloDB这种实现方式基本和大数据方案的存储异曲同工,说明它更适合写操作多的场景

作者回复: 属于log structured KV存储结构

2020-08-23
青阳
和etcd挺像的,不过etcd实现了mvcc,并且用B+Tree替换了HashMap
2022-07-12
1
苏云
leveldb, rocksdb. 这两个也很不错
2021-07-29
1
冬风向左吹
对于session这个场景来说刚好比较特殊,可以通过session中存储ip定位缓存节点,但如果是其它缓存的场景呢,还是得用一致性hash这类算法吧
2022-04-05
收起评论