分布式系统学习路线应该是什么样?

有python,java,C++基础,刚要入门分布式系统的学习,希望大牛能够提供一些入门和之后进阶的学习建议,可以说一说书籍,学习路线,实践项目,经典…
关注者
1,375
被浏览
246,851
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

可以分几个个层次:网络,存储和计算


网络:跟分布式系统开发直接相关的是RPC,要了解RPC的设计模式,如何用高层语言实现,然后网络原理默认要了解了,更进一步要学会网络性能的分析和优化,实践中是很重要的,要会用各种分析工具,wireshark, tcpdump, perf, strace等。

存储:这里是指分布式存储、文件系统、数据库等应用层存储服务,这部分特点是有很多原理需要了解,包括各种一致性原理、逻辑时钟和分布式系统中的因果关系、各种多副本、纠删码、自动机复制和共识算法、高可用性、容错,和数据库相关的一堆原理,如分布式事务等,还有一块是区块链。这部分最好选一个和你的工作契合的方向,有目标的钻研,没需求基本上就没必要深入了解。

计算:看做平台还是应用,如果做平台那有可能跟如下问题相关,批处理或者流处理的编程框架、面向特定计算框架的查询规划、各种任务调度、并行执行运行时、容错和检查点、性能调优和异常分析、资源分配和虚拟机调度、JVM调优和排错等等,如果做应用,那很可能是开发大规模并行数据分析算法,这部分要学点数据科学基础吧,现在Deep Learning那么火,随大流也要掌握些框架,会点GPU编程。


总的来说,原理和实践要兼顾吧,但最重要的是解决问题和搭建系统的能力了。