引论
- 目的:资源共享与协同计算
- +分布式系统:仅通过交换消息而完成通信和协作的连接网络的计算机集合。
- 特点
- 并发
- 没有全局时钟
- 独立故障(一个进程的故障不会被别的进程知晓)
- ?+挑战
- 异质性
- 开放性
- 安全性
- 可扩展性
- 错误处理
- 并发性
- +透明性
- 并发透明性
- 拷贝透明性
- 故障透明性
- 性能透明 性
- 移动透明性
- 规模透明性
- 服务质量
系统模型
物理模型
- 基线物理模型:联网计算机上的硬件和软件组分通过发送信息来完成联系和协作
三代分布式系统
早期 | 互联网级 | 现代 | |
---|---|---|---|
规模 | 小 | 大 | 极大 |
异质性 | 有限 | 在平台、语言和中间件方面显著 | 在多个维度上产生了彻底不同的架构 |
开放性 | 不是重点 | 在一些标准中是重点 | 在现存标准中是主要的研究挑战,但是尚未能用于复杂系统 |
服务质量 | 早期 | 在一些标准中是重点 | 在现存标准中是 主要的研究挑战,但是尚未能用于复杂系统 |
架构模型
架构元素
- 通信实体:通常是进程;但是对于传感器网络为结点、对于一些环境为线程
- 通信范例
- 进程间通信:低级支持,通过IP协议的直接API访问
- 远程调用:支持双向交互,包括请求-回复协、原称过程调用,远程方法触发
- 间接沟通:通过组通信(广播和组播)、发布-订阅系统(基于事件)和消息队列完成沟通
- 角色和义务
- CS架构
- P2P
- 放置
- 多服务器提供服务
- 分开放置资源
- 不同主机分别维护资源的单独拷贝
- 代理服务器和缓存
- 移动端代码(小程序)
- 多服务器提供服务
架构模式
- 分层:服务集合的纵向组织
- 平台:最底层,用于分布式系统和应用的软硬件层
- 中间件:一个软件层,掩盖异构性并为应用程序程序员提供方便的编程模型
- 垂直组织的分布式系统:UI-应用服务器-数据库服务器
- 横向组织
- 瘦客户端:提供最小的UI层,其他事情交给服务器
- 胖客户端:客户端包含应用逻辑和UI,服务器只负责权限控制和储存
基础模型
交互模型
- 通信信道的评估
- 延迟
- 带宽
- 抖动(稳定性)
- +两类交互模型
- 同步:确定的执行、传输时间,确定的时钟偏移
- 异步
故障模型
故障模型定义了可能发生故障的方式,以便于提供对故障影响的理解。
- 遗漏故障:消息未正常收到(可能根本没发送)
- 任意故障:什么都可能发生
- 计时故障:主要是超时
安全模型
可以通过保护用于交互的进程和信道,并保护它们封装的对象,以此来屏蔽未授权的访问。
+时钟和时序
时钟基础
- 计算机使用一个计数器和一个寄存器来维护时钟。OS通过中断信号来维持系统时间。
- 时钟漂移:一段时间内时钟记录的时 间与真实时间之间的误差
- 修复:如果快了,则调慢时钟直至同步(利用OS);反之亦然
- 时钟偏移:同一时刻两个不同时钟间的差距
时钟同步
- 从顶级来源(GPS等)
- 从服务器
- +Cristian算法:, 其中RTT为本地的请求发送和接收的时间差。精度(信息传播时间未知)或,其中为信息的最短传播时间。
- 伯克利算法
- NTP
+伯克利算法
- 主机定期拉取所有从机的时间
- 主机计算所有从机时间和自身的平均。计算平均的值不会包含“显然不对”的时间。
- 主机向各从机发送偏移量来调整时间
+NTP
设定A向B同步时间时: