学习计划|分布式系统

Reference:
学习规划-分布式系统入门_哔哩哔哩_bilibili

一、理论基础

1.目标:能够脱稿讲明白核心论文
  • 分布式计算框架:MapReduce/Spark/Flink
  • 分布式存储系统:GFS/BigTable/Spanner
  • 一致性协议与存储引擎:Raft/Chubby/etcd/LSM
  • 集群协调与一致性:Tree Paxos/multi-paxos/Zookeeper
  • 云原生架构与部署:Brog/docker/微服务/服务网格/faas
2.参考材料

二、系统设计

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

发表评论