分布式系统概念与设计
1. 课程信息
- 学校选课专题
- 参考书籍
2. 分布式特征
-
什么是分布式系统
- 分布式系统是其组件分布在连接网络的计算机上,组件之间通过传递消息进行通信和动作协调的系统
-
计算机网络和分布式系统的区别
-
计算机网络
空间分离,联通的计算机通过具体的协议去交换信息的集合, 计算机拥有独立的IP地址
-
分布式系统
多样的计算机在网络上工作的像一个系统,但是用户感觉不到计算机的空间分离感和信息交互
-
-
分布式出现的原因
- 构造和使用分布式的主要动力是对共享资源的期望,这里的资源从硬件比如硬盘,打印机到软件的实体如文件,数据库和所有的数据对象。
-
分布式的显著特征
-
Concurrency 并发 在一个计算机网络中,执行并发程序是常见的行为。 在分布式系统设计时,需要将并发当作重点,并且采取合适的技术处理并发问题
-
no block clock 缺乏全局时钟 在程序需要协助的时候,需要通过交换信息协调工作。但是计算机和时钟同步所到达的准确性时有限的,即没有一个正确时间的全局概念。
-
故障独立性 Independent failures 系统中的一个组件可能出现故障,但是其他组件还在运行。失败运行的组件不会立即被其他组件知道。
-
-
分布式系统的例子
- 互联网 Internet 就是超大的分布式系统
- 互联网主要包括了 桌面计算机 企业内部网(Intranets)和 网络连接
- 作为一个大型的分布式系统,提供给客户比如 Web,电子邮件和文件传送等服务
- 大量内部网通过主干网连接(backbones),主干网具有高传输能力
- ISPS 网络服务提供商提供了服务给用户
- 互联网通过卫星,光纤和其他高带宽的电路 交流
- 互联网 Internet 就是超大的分布式系统
-
分布式系统的挑战
-
Heterogeneity 异构性
- 分布式系统使用不同特征的硬件和软件:
- 网络
- 计算机硬件
- 操作系统
- 编程语言
- 不同开发者完成的软件实现
- 一些方法去解决异构问题
- Using standard protocols 虽然使用不同的网络,但是所有连接到互联网上的计算机使用互联网协议来通讯
- Using agreed upon message formats and data types 使用约定好的报文格式和数据类型
- adhering to an agreed upon Application Program Interfaces APIS
- Using middleware 中间件是一个软件层,在分布式应用和操作系统之间。它提供了编程抽象,同时屏蔽了底层网络,硬件,操作系统和编程语言的异构性。但是所有的中间件都要解决操作系统和硬件的不同。 例如RMI, Java的RMI就不能解决编程语言的异构性
- Mobile code 异构性和移动代码 能从一台计算机发送到另一台计算机,并且在目的计算机运行的代码。 JVM就是一个很好的例子,跨平台性
- 分布式系统使用不同特征的硬件和软件:
-
Openness 开放性
-
何为开放性
-
Openness refers to the ability of extend the system in different ways by adding hardware or software resources.
开放性是指系统能否以不同的形式被扩展和重新实现
-
-
实现扩展性的方式:
-
发布关键接口 publish key interfaces
-
开放的分布式系统是基于一致的通信机制和发布接口访问共享资源的 allowing a uniform communication mechanism机制 to communicate over the publish interfaces
-
验证每个组件和发布的标准之间的一致性
Ensuring all implements adhere to the published standards
-
-
-
Security 安全性
- 安全分为三部分:
- 机密性 confidentiality 防止泄露给未授权的个人
- 完整性 Intergrity 防止被改变或者被破坏
- 可用性 Availability 防止对访问资源手段的干扰
- 安全机制 Security Mechanisms:
- 加密技术 Encrytion e.g. RSA
- 认证 Authentication password public key authentication
- 授权 Authorization access control lists
- 未解决的问题:
- 拒绝服务攻击
- 大量的无意义请求攻击服务,使得重要的客户无法使用它
- 移动代码 mobile code
- 发送过来的可执行文件的安全性检测
- 拒绝服务攻击
- 安全分为三部分:
-
Scalability 可扩展性
-
什么是可伸缩性
分布式系统在不同规模的下都可以有效且高效的运转。如果资源数量和用户数量激烈增长,系统仍能够保持其有效性
-
面临的问题
-
控制物理资源的开销:
如果一台服务器可以满足20个用户,那么两台就应该满足40个用户
-
控制性能损失
比如使用层次性的数据结构搜索例如树的复杂度就是logn 但是如果使用线性的就是n 甚至有更复杂的n**2。
-
防止资源耗尽
比如互联网IP地址耗尽
-
避免性能的瓶颈
分散型的算法去避免性能瓶颈
-
-
-
故障处理 Failure Handling
-
解决故障的方法
-
检测故障 detaching
有些故障可以被检测到,校验和可用于检测消息或者文件中出错的数据
-
掩盖故障 Masking
有些被检测到的故障能后被隐藏起来或者降低他的严重程度
-
容错 tolerating
例如当Web不能语另一个Web服务器相连接时,它不会一直等待建立连接,而是直接通知用户这个问题
-
故障恢复 recovery
恢复设计软件的设计,以便在服务器崩溃后永久数据的状态能够被恢复或者回滚
-
冗余 redundancy
利用冗余组件实现容错 多个服务器提供相同的功能
-
-
-
并发性 Concurrency
- 多个用户可以访问同一个资源在同一时刻
- 操作系统的信号可以解决并发问题 Java的 syncronized嘛??
-
透明性 transparency
-
透明性被定义为对用户和应用程序员屏蔽分布式系统的组件的分离性,使系统被认为是一个整体
-
有哪些透明性:
-
访问透明性
用相同的操作访问本地资源和远程资源
-
位置透明性
不需要知道资源的物理和网络位置,就能访问它们
-
并发透明性
几个资源能并发的使用共享资源进行操作且不互相干扰
-
复制透明性
使用资源的多个实例提升可靠性和性能,而用户和应用程序猿无须知道副本的相关信息
-
故障透明性
屏蔽错误,无论是硬件故障还是软件故障,用户和应用程序都能完成他们的任务
-
移动透明性
资源和客户能够在系统内移动而不影响用户和程序操作
-
性能透明性
当负载变化时,系统能被重新配置以提升性能
-
伸缩透明性
系统和应用能进行扩展而不改变系统结构和算法
-
-
-
3. 模型
-
简介
-
Pyhsical model
- 物理模型考虑组成系统的计算机和设备的类型以及他们的互联,不涉及特定的技术细节
-
Architectural model
- 体系结构模型是从系统的计算元素执行的计算和通信任务方面来描述系统
-
Fundamental models define:
采用抽象的观点描述大多数分布式系统面临的单个问题的解决方案
- 三个基础模型:
- 交互模型 处理分布式系统的性能问题并解决在分布式系统中设置时间约束的苦难,例如消息传送的时间约束
- 故障模型 试图给出进程和通信通道故障的一个精确的规约。它定义了可靠的通信和正确的进程
- 安全模型 讨论对进程和通信通道的各种可能的威胁,它引入了安全通道的概念,安全通道能保证上述威胁中的通信安全
- 三个基础模型:
-
-
体系结构模型
- 分布式系统中的通信实体是什么? Communicating Entities
- 从系统角度考虑
- 进程
- 线程
- 节点
- 从编程的角度
- 对象 Objects
- 组件 Components
- Web服务
- 从系统角度考虑
- 分布式系统中的通信实体是什么? Communicating Entities
-
接口的概念
- 外部的进程可以通过接口调用方法的集合
- 开发人员只关注接口提供的抽象方法,不关注具体实现细节
- 开发人员无需知道接口的实现语言和物理平台
- 只要接口不变,服务的变更是透明化的 ????
-
通信的实例
- 进程间通信 如套接字sockets ,multicast communication 多播
- 远程调用 如RPC,RMI
- 间接通行 如消息队列,发布-订阅
-
Roles and responsibili
- Client: a process that initiates connections to some other process
- Server: a process that can receive connections from some other process
- Peer: can be seen as taking both the role of client and server, connecting to and receiving connections from other peers
-
placement 放置
最后要考虑的问题是诸如对象或者服务这样的实体是怎样映射到底层的物理分布式基础设施上的,物理分布式基础设施由大量的机器组成,这些机器通过一个任意复杂的网络互联。从决定分布式系统特性的角度而言,放置很关键。放置需要考虑实体间的通信模式,给定机器的可靠性和他们当前的负载,不同机器之间的通信质量等。下列放置策略可以显著改变给定设计的特征
- mapping services to multiple servers 将服务映射到多个服务器
- caching 缓存
- mobile code 移动代码
- mobile agents 移动代理
-
广泛被运用的两种分布式结构
- Clinet-server
- Peer to peer
-
Network Computers and Thin clients
- Network Computers: download their opreating system and application software from a remote file system. Application are run locally
- Thin clients: application software is not downloaded but runs on the computer server 这不就是NBA2Konline的云启动吗,对网速要求蛮高的
-
体系结构模式
体系结构模式构建于上述讨论过的相对原始的体系结构元素之上
- layer architecture 分层
a software architecture abstracts software into layers or modules in a single computer. Each layer of software provides a service to the next year. The layers can are referred to as service layers
-
两个重要的层级
- Platform
- Middleware
-
Tiered architecture 层次
- Tiered architecture are complementary to layering, layering deals with vertical organization of services
- 层次化体系结构和分层体系结构是互补的,分层将服务垂直组织成抽象层,而层次化是一项组织给定层功能的技术
-
基础模型
基础模型允许分布式系统从基础属性而非结构的角度分析,这些基础模型如何实现非功能性需求的
-
交互模型 intercatiion model
-
首先分布式系统是多个以复杂方式进行交互的进程组成的,比如多个服务器进程能够相互协助提供服务,对等进程能够相互写过获得一个共同的目标
-
分布式算法
- 分布式算法定义了组成系统的每个进程所采取的步骤,包括了他们之间消息的传递
-
影响进程交互的两个重要因素
-
通信通道的性能
- Latency 延迟
- band-width 带宽
- jitter 抖动
-
计算机时钟和时序事件
- 两个进程的时间戳不同:
- 初始化时间设置是不一样的
- 时钟偏移率是不一样的
- 两个进程的时间戳不同:
-
交互模型的两个变体
- Synchronous system model 同步模型
- 进程执行每一步时间都有上限和下限
- 传递的消息要在已知的时间范围内收到
- 每个进程都有一个本地时钟,它与实际时间的偏移率在一个已经知道的范围内
- Asychronous system model 异步
- 执行速度无限制
- 消息传递延迟无限制
- 时钟漂移率无限制
- Synchronous system model 同步模型
-
事件排序
- 逻辑时间可以被用来当作事件顺序
-
-
-
故障模型
-
遗漏故障 omission failures
- 指的是进程或者通信通道不能完成它应该做的动作
- 进程遗漏故障
- 进程的崩溃
- 重复的调用失败
- 超时可以被用来检测故障
- 故障-停止: 其他进程能确切的检测到进程已经故障
- 通信遗漏故障可能是因为:
- 发送遗漏
- 接受遗漏
- 通信管道遗漏
-
随机故障 arbitary failures
- 进程随机的省略了要做的处理或者多做了不需要的处理
-
时序故障 timing failures
- 时序故障适用于同步分布式系统,此系统中对进程执行时间等都有严格限制,超过了限制就是故障
-
一对一可靠通信
- 有效性 validty
- 外发消息缓冲区中的任何消息最终能传递到接受消息的缓冲区
- 完整性 integrity
- 接收到的消息与发送的消息一致
- 有效性 validty
-
-
安全模型
通过保障进程和用于进程交互的通道的安全以及保护所封装的对象免遭未授权访问可实现分布式系统的安全
- securing process and interaction
- Enemy
- possiable threats from a enemy
- 服务器端和客户端都不能确定自己接受到的资源是安全的
- 敌人可以拷贝或者插入,注射信息在消息传递的时候
- 拒绝服务攻击,使得服务器过载
- mobile code 就是脚本吧。。。
- 解决安全威胁
- 加密
- 认证
- 安全通道
-
本文围绕分布式系统展开,介绍了其概念、特征,如并发、缺乏全局时钟等。阐述了分布式系统面临的挑战,包括异构性、开放性、安全性等问题及解决方法。还讲解了物理、体系结构和基础模型,涉及交互、故障、安全等模型,以及常见的分布式结构和体系结构模式。
1250

被折叠的 条评论
为什么被折叠?



