书籍阅读《分布式系统》

第一章 特征

分布式系统特征

  1. 并发
  2. 缺乏全局时钟
  3. 故障独立性

例子:Web、大型多人在线游戏MMOG、金融交易

趋势

  1. 泛在联网技术:设备可在任何时间地点连接 Ubiquitous Computing
    什么是UbiComp普适计算(泛在计算)?它与IoT物联网有哪些联系与区别?-云社区-华为云
  2. 无处不在计算:任何设备都可以计算
  3. 分布式多媒体系统:音频、视频、电话支持;编解码支持、QoS、资源调度
  4. 公共设施化:用户可租聘;SaaS、云计算;网格计算
  5. 资源共享

挑战

  1. 异构性:不同的OS、HW
  2. 开放性:共同的接口
  3. 安全性:机密(信息不泄露)、完整(防止被破坏)、可用(防止资源访问被干扰);
  4. 可伸缩性:合理的硬件资源申请;控制性能损失(DNS查找);软件资源耗尽(IP);避免性能瓶颈(分布式访问)
  5. 故障处理
  6. 并发性:对对象的处理可能会有冲突,必须保证其在并发环境下操作正确
  7. 透明性:对用户及开发程序人员对其他分布式组件分离,系统被认为是一个整体
  8. 服务质量:可靠性、安全性、性能;要有满足变化的系统配置和资源可用性的适应性;如在处理时间关键性数据(视频),连续帧需要有顺序且在限定时间内发送给用户

基础知识
html http
URL 统一资源定位器
发布资源

专业术语

环境计算(Ambient computing),通常也被称为无处不在的计算(ubiquitous computing),是以一种嵌入我们周围的方式,将计算能力融入我们日常生活的概念——看不见但很有用。 其目标是让用户更容易充分利用技术,而不必拘泥于键盘和屏幕。 术语“环境”是指周围环境。 环境计算的界面是透明的、直观的,这意味着计算在幕后不为用户所知地进行。

事件,分布式系统中的感兴趣数据项。在金融系统中的例子为,股价下跌、失业数据发布。

服务,计算机系统中管理相关资源并提供功能给用户和应用的一个单独部分。服务将资源访问限制为一组良好的操作。

服务器客户,指联网的计算机上的一个程序/进程。注意是进程。

中间件,屏蔽不同系统的不同,在中间软件层中提供编程抽象。如公共对象请求代理CORBA,Java远程方法调用RMI。其提供了一致的计算模型,远程对象调用、远程事件通知、远程SQL访问、分布式事务处理。

移动代码,Java applet 在目的计算机运行的java程序。移动代码可能会不安全,如电子邮件内程序。

发布接口:接口标准化

RFC征求意见文档,工作接口标准

拒绝服务攻击:DoS 大量无意义的请求攻击服务

掩盖故障:故障可以被隐藏或降低严重程度。如:消息在不能到达时进行重传,将文件写入两个磁盘。若其中一个损坏,另一个磁盘数据依旧正确

容错:试图检测并隐藏故障

故障恢复:永久数据的状态能够恢复或者回滚。在这之中要保证数据一致性。

冗余:让服务实现容错的重要手段。如:在任意两个路由间应存在两个不同路由。在域名系统中名字表应复制到两个不同服务器上;数据库被复制到多机器上。在这之中,保证数据副本最新及不过度损失网络性能是一个挑战。

动态页面:填写表单后有post,返回不同的页面及结果。如搜索引擎

CGI公共网关接口:web服务器上运行的为客户生成内容的程序
下载的代码;
JavaScript可以仅更新网页的部分情况并重新显示。其在点击按钮等情况下,对页面重新渲染。该异步操作由Ajax实现(Asychronous Javascript And XML)
applet:用Java写的程序可以在浏览器对应页面自动下载并运行。比如聊天服务器

Web服务

第二章 模型

有三种模型描述分布式系统

  1. 物理模型:计算机硬件设备及其互联
  2. 体系结构模型:CS、对等模型
  3. 基础模型:描述单个问题的解决方案

关键词

物理模型

通信实体:(谁在发消息?)
对象
组件
Web服务

通信泛型:

  1. 进程间通信:消息传递原语、直接访问、多播通信支持
  2. 远程调用:远程调用操作、过程、方法。请求应答协议是一个有效模式
  3. 间接通信RPC:隐藏了分布的重要方面,包括参数和结构的编解码,消息传递及保持过程调用所要求的语义。不过,技术可以支持发送者和接受者不一定要同时存在,也不用知道谁是谁

发布订阅系统:发布者会向订阅者定时发送自己的更新
消息队列:提供点对点服务
元组空间:提供了间接通信服务
对等体系结构:P2P,不区分客户和计算机

放置:部署在哪里

NIS(Network Information System)提供复制数据服务

缓存,代理服务器(在显示前用一个特殊的HTTP请求查看原服务器的共享数据是否是最新的)

移动代码 applet

体系结构模型

分成

应用
中间件
OS
HW

用户视图 -> 应用逻辑 -> 数据库管理器

AJAX:
客户通过JavaScript XmlHttpRequest 对象发送请求,该对象管理一个服务器进程的HTTP交互,

Ajax.Request 发送请求,给服务器上scores.php程序,其将返回一个控制,让浏览器应答动作

应用:早期google 地图。存储为256*256

瘦客户
一个软件层,在执行程序/访问远程服务时,由该层提供基于窗口的本地界面

虚拟网络计算VNC
VNC Viewer,远程桌面。将鼠标及键盘界面在ip上传输(KVM-over-IP)

代理 proxy
一个代理会在本地地址空间中被创建,用于代表远程对象

业务代理
在分布式系统中的代理

反射
一种支持内省(动态发现)及从中调停(修改结构)的技术

基础模型

一些定义:
交互 通信
故障 宕机
安全 暴露

交互模型
描述进程交互情况的模型。在此之中有两个问题:

  1. 通信性能是一个限制特性:带宽、抖动
  2. 没有全局时钟:时钟漂移率

由于没有全局时间,演变出了两种系统:
同步系统:进程执行都有上下限,本地时钟漂移率被控制
异步系统:进程随便执行,时间无上下限

逻辑时间
不再依靠时钟作为真实时间,而是根据事件执行的情况推断顺序

故障
遗漏故障:
进程崩溃;如果其他进程能看到它崩溃了,该崩溃称为故障-停止
消息丢失;面对通信故障时达成协定的不可能性

随机故障:进程发送随机信息,造成拜占庭式故障
时序故障:时间错误
故障屏蔽:可以利用存在故障的组件搭建可以提供服务的程序

安全模型
分布式系统概念和设计——安全模型中的设计和思考落地_分布式系统安全-CSDN博客
通信通道
敌人
解除安全威胁:密码学与共享秘密;认证;安全通道(VPN、SSL)
加密