-
为了性能扩展——系统负载高,单台机器无法承载,希望通过使用多台机器来提高系统的负载能力
-
为了增强可靠性——软件不是完美的,网络不是完美的,甚至机器本身也不可能是完美的,随时可能会出错,为了避免故障,需要将业务分散开保留一定的冗余度
在以提供 Service 为主的服务端软件开发过程中常常遇到这些问题。
五、一些分布式方案能解决你的问题,另一些却不能,要学会的其实是选择
笼统的讨论分布式没有太大的意义,就如我刚才所谈的,实际上分布式很容易实现。真正难的地方在于如何选择正确的分布方案。
例如,当你想要建立一个分布式的数据管理系统的时候,你就必须得面对“一致性”问题。如果你对数据一致性要求很高,你就不得不容忍一些缺陷例如规模伸缩困难;而如果你放弃它,你可以轻松伸缩规模,但你必须解决好由此带来的一系列数据不一致导致的问题。(CAP 问题)
于是你会意识到,有许多种分布方案,为了正确解决你的问题,你需要对每一个方案都进行了解,并评估,选择不同的方案有时候区别不大,有时候却会深刻的影响整个系统中其他部分的工作方式,甚至影响用户界面中用户操作时的流程。这是我们学习分布式系统的重点所在。
六、分布式学习入门——基础知识要点
如我前面所讲,分布式入门不难。主要包含如下知识点:
-
Process(进程)。在分布式系统中,进程是基本单元
-
通信协议。Process 间需要相互配合才能完成工作,因此通信协议是最基本要解决的问题。这部