何为分布式(Distributed)?
多次被同学问道,自己也多次疑惑,每次查后又常常会忘记,所以,特此整理。
WiKipedia上这么说:
在计算机科学中,分布式计算(英语:Distributed computing,又译为分散式计算)这个研究领域,主要研究分散系统(Distributed system)如何进行计算。
分散系统是一组电子计算机(computer),通过计算机网络相互链接与通信后形成的系统。把需要进行大量计算的工程数据分区成小块,由多台计算机分别计算,在上传运算结果后,将结果统一合并得出数据结论的科学。
下面有些摘自《分布式系统概念与设计》:
分布式系统:是组件分布在网络计算机上且通过消息传递给进行通信和动作协调的系统。
分布式系统具有以下特征:组件的并发性、缺乏全局时钟、组件故障的独立性
资源共享是形成分布式系统的主要动力。
构建分布式系统的挑战:组件的异构性、开放性(允许增加或替换组件)、安全性、可伸缩性(指用户数量增加时能正常运行的能力)、故障处理以及组件的并发性与透明性。
比如:所简单了解到的云计算框架Hadoop框架,
再者,学嵌入式的,一个PC和多个开发板(节点),每个节点相当于一个组件,那么这些组件之间运行时相对独立的,可以动态增删某个节点,它们之间是通过消息传递进行通信和动作的。
那么并行编程与分布式系统有没有关系呢?
我的理解是,并行编程,强调在并行,而分布式系统一个很大的特点就是组件的并发,组件(如果每个组件都是单核的)之间的并行,那么分布式系统的编程就是,并行编程了吧。【如果组件是多核呢,就我浅显的认识,多核可以看做多个单核,如有高见,欢迎提出】