1.分类
狭义的分布是指,指多台PC在地理位置上分布在不同的地方。
分布式操作系统:负责管理分布式处理系统资源和控制分布式程序运行。它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。
分布式文件系统具有执行远程文件存取的能力,并以透明方式对分布在网络上的文件进行管理和存取。
分布式计算:利用分布式系统解决来计算问题。在分布式计算里,一个问题被细化成多个任务,每个任务可以被一个或者多个计算机来完成。
分布式程序设计语言:用于编写运行于分布式计算机系统上的分布式程序。一个分布式程序由若干个可以独立执行的程序模块组成,它们分布于一个分布式处理系统的多台计算机上被同时执行。它与集中式的程序设计语言相比有三个特点:分布性、通信性和稳健性。
分布式数据库:由分布在不同地方(地理位置上的分布)的多个数据库(称为站点)连接(基于计算机网络来连接)而成。利用分布式DBMS对各个站点统一管理,各个站点逻辑上统一起来。基于数据分布的透明性,仿佛在管理单个站点上的数据。其优点在于:容错,提高访问速度。
2.特征及挑战
特征:
*并发:对共享资源的并发执行程序的协调(性能及死锁及缓存一致性)。
*缺乏全局时钟:在程序需要协作时,他们需要时钟来统一的交换信息来协调他们的动作。
*故障独立性:所有的计算机系统都可能出故障,系统设计者必须为可能的故障设计应对方案。
挑战
1)异构性
计算机之间存在多样性和差别,比如网络,硬件,操作系统,编程语言,不同开发者。
统一的网络协议,统一的应用编程接口解决了一些问题,但还有很多问题存在。
中间件就是为了解决异构性而出现的,它是一个软件层,提供了一个编程抽象,同时屏蔽了底层网络、硬件、操作系统和编程语言的异构性。还为程序员提供了一致的计算模型。eg:RMI和CORBA。
2)开放性
是决定系统能否以不同的方式被扩展和重新实现的特征。取决于新的资源共享服务能被增加和供多种客户程序使用的程度。
3)安全性
机密性、完整性和可用性。
主要防御,拒绝服务攻击和移动代码的攻击。
4)可伸缩性
如果资源数量和用户数量激增,系统仍能保持其有效性,那么该系统就称为可伸缩的。
包括:控制物理资源的开销,控制性能损失,防止软件资源用尽,避免性能瓶颈。
5)故障处理
检测故障,掩盖故障,容错,故障恢复,冗余(冗余数据来实现容错等控制出错的机制)。
6)并发性
并发的操作必须在数据保持一致的基础上同步。
7)透明性
对用户和应用程序员屏蔽分布式系统的组件的分离性,使系统被认为是一个整体而不是组件的集合。
8)服务质量
影响客户和用户体验的服务质量是可靠性,安全性和性能。
每个关键性资源必须被需要QOS的应用保留,并且必须有一个提供保障的资源管理器。不能满足的资源保留请求将被拒绝。
3.hadoop
参考:http://blog.csdn.net/cuidiwhere/article/details/7882244
分布式系统概念与设计