分布式系统的构建原因
资源共享
硬件、软件、数据、服务
流媒体
计算机通过网络连接
协同计算
并行计算
分布式计算
分布式系统的定义、特征
定义
一个其硬件或软件组件分布在联网的计算机上(空间上的距离不等),组件之间通过传递消息进行通信和动作协调的系统
特征
组件的并发性
多个进程、线程并发执行,共享资源
缺乏全局时钟
机器有各自的时间,难以精确同步,程序间的协调靠交换消息
故障独立性
组件独立出故障,其它组件正常运行
一些进程出故障,别的进程不一定知道
分布式系统举例
Web搜索
分布式存储系统
分布式文件系统:GFS
大型多人在线游戏 — 快速响应,对共享世界的一直视图
王者
金融交易
区块链系统
分布式账本
语音系统
数据库系统
分布式系统面临的挑战
异构性
网络、计算机硬件、OS、编程语言、开发者实现方式均存在异
使用公共标准
中间件:软件层,提供编程抽象,屏蔽了底层网络、硬件、OS、编程语言的异构性
移动代码:能在不同机器间移动并执行 → 虚拟机方法
开放性
能否以不同的方式被扩展和重新实现
分布式系统的开放性主要取决于新的资源共享服务能被增加和供多种客户程序使用的程度
安全性
机密性(防止未经授权访问资源)
完整性(防止数据被篡改破坏)
可用性(防止对所提供服务的干扰)
未解决:拒绝服务攻击、移动代码的安全性
可伸缩性
资源数量和用户数量激增,系统仍能保持其有效性
控制物理资源的开销
控制性能损失
防止软件资源用尽(IP地址)
避免性能瓶颈
故障处理
检测故障
掩盖故障
容错
故障恢复
冗余(冗余组件,容错)
组件的并发性
透明性
访问透明性(相同方式访问远程和本地资源)
位置透明性(不需要知道物理或网络位置就能访问资源)
并发透明性
复制透明性
移动透明性
性能透明性
伸缩透明性