S'S ALGORITHM

角度:

——- 回答框架 ——-

— Requirements/收集信息 —

明确需求: func,non-func,cost,time,stakeholder

— High-Level/假设和理论 —

1. 系统组件划分/components

2. 数据库设计/objects

— Design Action/执行计划 —

— Verify system/测试系统 —

1. scalability: 扩展性与负载均衡

  - scalability

2. performance: 缓存与优化

3. reliability: 故障处理与容错

4. availability: 可用性,降低延迟,提高用户体验

5. security: 安全性设计

— Improve and documentation/提升和记录 —

1. log and alarm: 性能监控与日志

2. devops and improve 总结与扩展,永远可以进化的系统

——- 学习案例 ——-

Dropbox

Rate Limiter

components:

algorithm:

TinyURL

functional:

components:

Twitter

functional:

components:

Discord/Slack/Teams

Funtional

Non-Functional

Youtube

Google Drive

Requirements

high level design

Google Map

这个主题的线索,使用数据即可,分为四种数据:routing/map数据,traffic数据,结合map数据进行最短路径的计算,地理位置location数据记录用户自己的位置,静态image数据将图片传送给用户的手机 Requirements:

Web server:(logical parts)

Data:

Non-functional:

Key-value store

Functional:

Non-Functional:

details:

Distributed Message Queue

任何一个云端的或者OSS应用的构架都是一个有趣的系统设计的范例。所以不如学习一下kafka。

系统要素设计要点

DNS

LoadBalancer

Distrubuted database

Key-Value Store(Redis,Cassandra)

CDN

Unique ID Generator

Client-Side Monitoring

Distrubuted Cache