- 编程语言和脚本
- C/C++: 作为核心技能,需要深入理解并熟练使用 C/C++ 进行开发。
- Shell: 掌握常用的 Shell 脚本,有助于自动化日常任务和环境配置。
- Python: 常用于脚本编写、自动化测试、数据处理等,提高开发效率。
- 计算机基础
- 数据结构和算法: 基础而必须,用于解决各种计算和逻辑问题。
- 操作系统: 深入了解操作系统原理,特别是 Linux 操作系统的内部机制。
- 网络: 掌握 TCP/IP、HTTP、以及其他网络协议的工作原理和应用。
- 多线程编程: 熟悉多线程的使用和相关的同步技术,能够处理并发和并行任务。
- 存储和I/O
-
存储 IO 栈路径:
- 理解存储系统的架构,熟悉文件系统、块设备和存储网络。
- 掌握用户态和内核态的存储开发技术。
-
存储系统客户端:
- 了解分布式存储系统的基本原理和应用场景,如 Ceph、HDFS 等。
- 掌握存储系统的安装、配置和优化技巧。
- 分布式系统
-
分布式系统设计:
- 理解分布式系统的基本概念和架构,如分布式计算、一致性、容错性和可扩展性。
- 熟悉常用的分布式系统设计模式和算法,如一致性哈希、Paxos、Raft 等。
-
分布式存储系统:
- 掌握分布式存储系统的设计和实现,了解其优缺点和应用场景。
- 学习常见的分布式存储系统,如 Cassandra、HBase、DynamoDB 等。
-
分布式计算框架:
- 熟悉分布式计算框架,如 Apache Hadoop、Spark、Flink 等。
- 理解大数据处理的基本原理和方法。
- 后端开发技术
- 数据库技术:
- 熟悉关系型数据库(如 MySQL、PostgreSQL)和 NoSQL 数据库(如 MongoDB、Redis)。
- 掌握 SQL 语言,了解数据库设计和优化。
- 虚拟化技术:
- 了解虚拟化技术的基本原理和应用场景,如 VMware、Docker、Kubernetes 等。
这里再详细描述一下重点:
3. 存储和 I/O
学习路径
- 基础知识:
- 文件系统:理解文件系统的基本概念和结构,如文件、目录、索引节点、文件系统类型(如 ext4、NTFS)。
- 块存储:了解块设备的工作原理和块存储的基本概念。
- 存储协议:学习常见的存储协议,如 SATA、SCSI、NFS、iSCSI。
- 高级知识:
- 存储网络:理解存储区域网络(SAN)和网络附加存储(NAS)的概念及其应用场景。
- 缓存和写优化:学习缓存策略(如 LRU、LFU)和写优化技术(如日志结构文件系统)。
- RAID:掌握不同 RAID 级别的特点和实现。
- 实际应用:
- 分布式存储系统:研究 Ceph、HDFS、GlusterFS 等分布式存储系统的架构和实现。
- 性能优化:了解存储系统的性能瓶颈和优化方法,如 I/O 调度、SSD 优化、缓存优化等。
学习方法
- 理论学习:
- 阅读相关书籍和文档,理解存储系统的基本原理和概念。
- 通过在线课程或讲座,系统地学习存储系统的架构和实现。
- 实践操作:
- 在实际环境中部署和配置常见的存储系统,如 Ceph、GlusterFS。
- 使用性能测试工具(如 FIO、Iometer)进行存储系统的性能测试和优化。
- 项目实践:
- 参与开源存储系统项目,贡献代码并学习其实现细节。
- 开发小型的存储系统原型,实践所学知识。
推荐资料:
-
书籍:
- 《Understanding the Linux Kernel》 by Daniel P. Bovet and Marco Cesati
- 《Modern Operating Systems》 by Andrew S. Tanenbaum
- 《Distributed Storage Systems: Concepts and Design》 by Thomas Ristenpart, Ranjit Jhala, and Mihir Bellare
-
在线课程:
- Coursera 上的 “Cloud Storage Systems” 课程
- edX 上的 “Storage Systems” 课程
-
Ceph 官方文档:https://docs.ceph.com/docs/master/
-
GlusterFS 官方文档:https://docs.gluster.org/en/latest/
4. 分布式系统
学习路径
-
基础知识:
-
分布式系统概念:理解分布式系统的基本概念和挑战,如一致性、可用性、分区容忍性(CAP 定理)。
-
网络编程:掌握网络通信的基本原理和技术,如 RPC、gRPC、HTTP/2。
-
-
核心技术:
- 一致性算法:学习 Paxos、Raft 等分布式一致性算法的原理和实现。
- 分布式存储:研究 HDFS、Cassandra、MongoDB 等分布式存储系统的架构和实现。
- 分布式计算:理解 MapReduce、Spark、Flink 等分布式计算框架的原理和应用。
-
高级应用:
- 分布式事务:掌握分布式事务的概念和实现,如两阶段提交、三阶段提交。
- 微服务架构:了解微服务架构的设计原则和实践,学习 Docker、Kubernetes 等容器化技术。
- 系统设计:研究大规模分布式系统的设计和优化方法,如负载均衡、故障处理、性能优化。
学习方法
-
理论学习:
- 阅读经典书籍和论文,理解分布式系统的基本原理和最新研究成果。
- 参加在线课程或研讨会,系统地学习分布式系统的设计和实现。
-
实践操作:
- 部署和使用常见的分布式系统,如 HDFS、Cassandra、Spark 等。
- 编写分布式系统的实验程序,实践一致性算法和分布式计算。
-
项目实践:
- 参与开源分布式系统项目,贡献代码并学习其实现细节。
- 设计和实现小型的分布式系统,实践所学知识。
推荐资料
- 阅读书籍:
- 《分布式系统原理与范型》(Andrew S. Tanenbaum, Maarten Van Steen)— 为分布式系统提供了理论和实践指导。
- 《设计数据密集型应用》(Martin Kleppmann)— 深入讨论了构建可靠、可扩展和维护的分布式系统的技术。
- 在线课程:
- MIT 的 “Distributed Systems” 课程。
- “Cloud Computing Specialization” on Coursera,涵盖了分布式系统的基础到高级应用。
- 参与开源项目:
- 参与如 Apache Hadoop、Apache Kafka 等分布式处理框架的开源项目。
- 贡献代码或文档,深入理解其架构和实现细节。