文章目录
1. 动机:
- 资源共享
- 计算机是被网络连接的,它们共享资源
- 硬件、软件、数据、服务、媒体流共享
- 协同计算
- 并行计算、分布式计算
2. 定义:
什么是分布式系统?分布式系统被定义为其中联网计算机上的组件仅通过传递消息来通信和协调动作的系统。
组成:
- 分布式应用
- 中间层:分布的核心层(RMI、CORBA、DCOM)
- 网络
3. 特征
- 并发:多核或者多线程并发的执行及共享资源
- 无全局锁:程序通过发送信号来协作
- 不可靠的错误:某些过程发生错误,其它过程并不知道
4. 分布式系统的案例:
- 大规模分布式系统:因特网
- 典型的分布式系统:
- DNS服务
- 分布式文件系统 ceph?
- 全球定位系统
- 分布式系统的新趋势:
- 移动计算
- P2P
- 云计算
5. 挑战:
5.1 异质性:Heterogeneous
- 中间件:提供程序抽象以及掩盖底层(网络、硬件、操作系统和编程语言)的异构性的软件层。
- 移动代码:
- 程序代码可以从一台计算机转移到另一台,并运行在目标设备上。
- JVM可以提供一种在多种宿主设备上使程序可执行的方式。
5.2 开放性:Openness
- 计算机系统的开放性:决定了系统是否能被用多种方式拓展或者重新实现
- 分布式系统的开放性:
- 新的资源共享服务能被添加和被多种客户端程序可用的程度
- RFC – Request For Comments
- 安全性的挑战:Security
- 机密性 Confidentiality:防止泄露给未授权方
- 完整性:防止替换和破坏
- 可用性:防止干扰访问资源的手段
5.3 伸缩性:Scalability
- 控制物理资源的开销:随着需求的增长,系统应该能够以合理的开支拓展
- 控制性能损失:考虑管理一组数据,其大小正比于系统中用户或者资源的数量。
- 避免系统资源耗尽
- 避免性能瓶颈:通常,算法应该被去中性化来避免性能瓶颈。
5.4 错误处理:Failure Handling
- 侦测错误
- 遮蔽错误:某些已经被侦测的错误可以被隐藏或者降低损害
- 容忍错误
- 从错误中恢复:系统设计时应考虑到系统在崩溃后,其永久性数据的状态应该能够回滚。
- 冗余:Redundancy —— 冗余的组件来容忍错误
5.5 并发:Concurrency
- 一致性:多线程访问共享资源
- 性能
5.6 透明性:Transparency
- 访问透明性:通过相同方式访问本地和远程的资源。
- 位置透明性:无需物理和网络位置的访问资源。
- 并发透明:多个过程访问共享资源而其间不会出现干扰。
- 复制(replication)透明:允许多个资源实例能够被用来增长可靠性和性能,而用户和程序员无需了解副本。
- 失败透明:允许隐藏(concelment)失败,允许用户和程序完成其任务,即使硬件或者软件组件出现失败。
- 移动透明:允许资源或者终端在系统中的移动,而不会影响用户或者程序的操作。
- 性能透明:允许系统重新配置,以随着负载变化而提升性能。
- 缩放透明:运行系统不改变系统结构和应用算法来改变尺度。
5.7 系统质量:Quality of Service
- Reliability
- Security
- Perfemance
- Adapability