九章算法的系统设计班http://www.jiuzhang.com/course/2/
网站系统架构,搜索引擎系统,数据库系统,分布式系统
开源软件架构,
重点考察内容
面向对象,接口设计,设计模式,数据库表,分布式
关于高并发系统设计。主要有以下几个关键技术点:缓存,索引,数据分片,锁粒度尽可能小。
分布式系统
分布式系统由独立的服务器通过网络松散耦合组成的
特点:可扩展性
核心理念:多台服务器协同工作
设计理念:分布式系统对硬件要求很低,横向扩展性,不允许单点失效,备份,尽量减少网络开销,分布式系统应该是无状态的
缓存系统
- 数据一致性(存在多层缓存结构,必须保证数据一致性)
- 缓存雪崩(当缓存系统重启或者所有缓存在同一时刻失效,会使系统承受不住压力)
- 缓存穿透(总是请求不在缓存中的数据)
缓存数据淘汰,淘汰算法
七脉神剑(Scalability)
- Cache:缓存,万金油,哪里不行优先考虑
- Queue:消息队列,常见使用Linkedin的kafka
- Asynchronized:批处理+异步,减少系统IO瓶颈
- Load Balance: 负载均衡,可以使用一致性hash技术做到尽量少的数据迁移
- Parallelization:并行计算,比如MapReduce
- Replication:提高可靠性,如HDFS,基于位置感知的多块拷贝
- Partition:数据库sharding,通过hash取摸
参考资料
- 分布式系统的特点以及设计理念
- build-your-own-url-shortener
- 系统设计面试题思路综述
- 七脉神剑
- CS75-system-design-course-3-time
- system-design-interview
- 系统设计中的基础知识
- Database Sharding
- 各大网站的设计
- 系统设计类题目
- http://highscalability.com/
- 架构设计:系统间通信
- Introduction · 系统设计(System Design)