什么是分布式计算?所谓分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。----百度百科
这就是说我们一台机器不能完成这样的工作量,需要将数据和计算分到多台机器上才能更加高效的处理请求。
接下来首先需要决策的就是,要选择什么样子的分布式模型进行系统的设计,一般有两种模型供参考:
a) 心化的分布式模型
简单理解就是所有的命令都会被发送到中心节点,由中心节点统一的分析,将经过分析的事件拆分,发送到每一个非中心节点上。
这样,所有的命令都先发送到中心节点,然后转发到非中间节点。但是,这有一个问题就是,中间节点的分析与转发的能力有限,当请求达到一定的程度以后,增加非中心节点的数量的作用就会非常小。
对于上述中间节点的分析和转发能力有限的问题,如果只是分析能力有限,一个优化的方式是通过添加二级中心节点来分担一级中心节点的压力。所有的命令都被发送到中心节点,中心节点做少量的分析就转发到二级节点,由二级节点进一步分析,再发送到非中心节点。
在上述的情况中,中心节点的转发能力也是致命缺点,那么如何再一次提升系统的性能呢?这就要引入非中心化去解决问题。
b) 去中心化的分布式模型
去中心化的模型就是, 没有中心的模型。各个节点只按照自己的逻辑进行传递消息。如下所示
这就是去中心化的模型,模型并不会在意哪些节点和那些节点能够联通,每个节点只会去负责自己的那一方面事情。
中心化的分布式模型就像是:中国古代王权,是所有的权利都是大王来控制。
去中心化分布式模型就像是:平民自家过自家的日子,需要连同作业的时候通过自己的组织作业进行。
由上述分析引出我们需要了解的技术内容,只列举一部分,请大家自行扩展:
这两种模型有哪些例子?
MySQL的一主双从(MSS),MangDB Master, MapReduce Jobtracker?
zookeeper, cassandra?