笔记-系统设计

Posted by YueLng Chen on 2016-03-30

九章算法的系统设计班http://www.jiuzhang.com/course/2/

网站系统架构,搜索引擎系统,数据库系统,分布式系统
开源软件架构,

重点考察内容

面向对象,接口设计,设计模式,数据库表,分布式

关于高并发系统设计。主要有以下几个关键技术点:缓存,索引,数据分片,锁粒度尽可能小。

分布式系统

分布式系统由独立的服务器通过网络松散耦合组成的
特点:可扩展性
核心理念:多台服务器协同工作
设计理念:分布式系统对硬件要求很低,横向扩展性,不允许单点失效,备份,尽量减少网络开销,分布式系统应该是无状态的

缓存系统

  • 数据一致性(存在多层缓存结构,必须保证数据一致性)
  • 缓存雪崩(当缓存系统重启或者所有缓存在同一时刻失效,会使系统承受不住压力)
  • 缓存穿透(总是请求不在缓存中的数据)

缓存数据淘汰,淘汰算法

七脉神剑(Scalability)

  1. Cache:缓存,万金油,哪里不行优先考虑
  2. Queue:消息队列,常见使用Linkedin的kafka
  3. Asynchronized:批处理+异步,减少系统IO瓶颈
  4. Load Balance: 负载均衡,可以使用一致性hash技术做到尽量少的数据迁移
  5. Parallelization:并行计算,比如MapReduce
  6. Replication:提高可靠性,如HDFS,基于位置感知的多块拷贝
  7. Partition:数据库sharding,通过hash取摸

参考资料

  1. 分布式系统的特点以及设计理念
  2. build-your-own-url-shortener
  3. 系统设计面试题思路综述
  4. 七脉神剑
  5. CS75-system-design-course-3-time
  6. system-design-interview
  7. 系统设计中的基础知识
  8. Database Sharding
  9. 各大网站的设计
  10. 系统设计类题目
  11. http://highscalability.com/
  12. 架构设计:系统间通信
  13. Introduction · 系统设计(System Design)