Reference:
学习规划-分布式系统入门_哔哩哔哩_bilibili
一、理论基础
1.目标:能够脱稿讲明白核心论文
- 分布式计算框架:MapReduce/Spark/Flink
- 分布式存储系统:GFS/BigTable/Spanner
- 一致性协议与存储引擎:Raft/Chubby/etcd/LSM
- 集群协调与一致性:Tree Paxos/multi-paxos/Zookeeper
- 云原生架构与部署:Brog/docker/微服务/服务网格/faas
2.参考材料
- 《数据密集型应用系统设计》
- 《深入理解分布式系统》
- 6.5840 Home Page: Spring 2023(论文+实验)
二、系统设计
1.目标:对主流大公司的核心业务场景有深入思考
- 滴滴打车:乘客和司机的匹配完成路程
- 淘宝电商:浏览 / 购物车 / 交易 / 订单 / 物流
- 抖音视频:信息流推荐 / 直播
- 美团外卖:浏览 / 下单 / 匹配 / 送货
- 微博:粉丝大 v 信息流
- 微信:大规模 IM 通信
- 飞书 / 钉钉:万人群聊
- 百度:推荐 / 搜索 / 广告
- 腾讯游戏:王者荣耀 / 英雄联盟
- 机器学习系统 ->GPT/LLM/ 搜 / 广 / 推
- TIDB/milvus/GraphDB/MongeDB
2.任务:进行系统设计联系
- 体验功能:以真实用户视角完整使用产品,摸清全流程的操作路径、使用场景和用户痛点。
- 功能描述:将用户需求转化为清晰无歧义的文档,明确系统要实现的功能边界、业务规则与输入输出。
- 技术约束:明确系统设计必须遵守的限制条件,如用户规模、延迟要求、成本预算、技术栈与合规要求。
- tradeoff:在不同技术目标(如一致性 vs 可用性、延迟 vs 吞吐量)间合理取舍,找到适配场景的最优平衡方案。
- 架构设计:基于需求与约束,搭建系统整体蓝图,明确分层结构、核心组件、交互流程与关键技术选型。
- 任务分解:将整体架构拆分为独立可执行的子任务,明确每个任务的目标、依赖关系与交付标准。
- 项目排期:根据任务优先级与依赖,制定合理的时间计划,明确各阶段的里程碑与交付节点。
- 测试&上线:通过单元、集成、压测等验证系统稳定性,再按灰度策略逐步发布上线。
- 效果评估:上线后通过监控数据与业务指标,评估系统性能、稳定性与用户体验,指导后续优化。
三、基本技能
1.目标
- 数据库 / 存储系统:redis/mysql/TIDB/MongeDB/GraphDB
- 嵌入式存储引擎:levelDB/RocksDB
- 消息队列:Kafka/RocketMQ
- 大数据计算 / 存储框架:Hadoop/Hive/Spark/Flink
- 容器化与云原生技术:K8s/Docker/Serverless
- 负载均衡与 API 网关:LVS/Nginx/Evovy/API Gateway
- 分布式协调服务:zk/etcd/consul
- 深度学习框架:tensorflow/pytorch
2.任务
- 环境部署与搭建:完成目标组件的单机环境部署与基础配置。
- 案例实践与验证:跑通官方或项目中的典型示例,验证功能可用性。
- 原理解析与阐述:深入理解组件底层架构原理,具备清晰的讲解与输出能力。
- 参数调优与认知:掌握组件核心功能配置及参数机制,理解其对运行时性能的影响。
- 横向对比与调研:对同类组件进行多维度对比分析,输出完整的技术调研分析报告。
- 功能梳理与盘点:全面梳理并归纳组件所支持的全部功能特性及应用场景。
- 分布式架构实践:通过源码编译,完成组件分布式集群版本的部署与验证。
- 源码深度贡献:精读组件源码,参与社区讨论或代码贡献,实现深度技术进阶。
四、编码能力
1.数据结构与算法
2.其他语言
- 快速上手:菜鸟教程
- 通用架构师:Go+Java+Python+SQL+Shell
- 大数据架构师:Scala
- 云原生 / 底层架构师:C/C++Rust
- 全栈架构师:TypeScript