分布式系统总结
我们的系统一直是分布式的。即便在虚拟化、容器技术出现之前,我想他也是一个分布式系统。今天尝试将我对分布式的理解做一些总结。
为什么要分布式?
我想首先是money方面的问题。随着产品支持的容量增加,软件的计算量、存储的数据都变得很大。Grosch定理说CPU的计算能力与它的价格的平方成正比。也就是说如果你付出两倍的价钱,就能获得四倍的性能。这么看其实花钱买高性能的CPU更划算。很遗憾Grosch定理不再适用了。另一方面,随着计算量的增加,没有办法找到这样强大的计算机做到这么大的计算量(比如春晚摇红包的计算量估计不可能由一台计算机搞定)。这要求必须将计算能力一般的计算机组织到一起,完成超级计算。
其次,是部署和运维的考虑。所有计算都在一个计算机上,一个故障就全玩玩了。而多个计算机共同工作时,一个故障不会影响大局。在升级时,也可以先升级试用某一些计算机,效果满意再升级全部。
第三,当业务持续增长时,分布式系统能更好应对 —— 多加入一些计算机就行了。
其实不需要多说,云计算的兴起已经说明了一切。
下面聊一下分布式系统中主要考虑的问题。
总的讲,一个分布式系统必须考虑的几个大块: 接入、计算、存储, 以及这几块之间的数据通信 ——交换。
一、对外统一接口,内部结点透明,多业务并发
一个系统对外一定是接口固定的,外部用户一定要有一个固定的入口接入系统。比如提供固定的IP