前言

DISTRIBUTED SYSTEMS Concepts and Design Fifth Edition George Coulouris et al
因为学习推荐算法的缘故,打算系统补习一下分布式系统相关的概念。
找到了这本书,第五版,中文名:分布式系统:概念与设计

花了整整1天读下来,收获很多,没有浪费时间。确实如做这个丛书的编辑所言:计算机领域经典著作,被誉为是衡量所有其他分布式系统教材的标准,已被爱丁堡大学、伊利诺伊大学、卡内基-梅隆大学、南加州大学、得克萨斯A&M大学、多伦多大学、罗切斯特理工学院、北京大学等名校采纳为高级操作系统、计算机网络、分布式系统课程的教材。华章从第3版就开始引进这本《分布式系统:概念与设计(原书第5版)》,每个版本翻译版印量约为7000册,影印版约为5000册。虽然由于属于高级课程,销量有局限性,但本书在高等院校的师生和研究人员中具有很高的知名度,对于华章教育品牌也具有较大的支撑作用,所以确定继续做这本教材。

知识笔记

着重搞清楚三个问题:

  1. 分布式的定义
  2. 缓存机制
  3. 消息机制

分布式系统是组件分布在网络计算机上且通过消息传递进行通信和动作协调的系统。

分布式系统具备3个特征:

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

服务表示计算机系统中管理相关资源并为用户和应用提供功能的单独组成部分。

构造分布式系统的挑战是其组件的异构性、开放性(允许增加或替换组件)、安全性、可伸缩性(用户数量增加时能正常运行的能力)、故障处理及组件的并发性和透明性。

交互模型处理消息发送等的性能问题,解决在分布式系统中设置时间限制的难题。
故障模型给出进程和信道故障的一个精确规约。
安全模型讨论了对进程和信道的各种可能的威胁,它引入了安全通道的概念。

CORBA:公共对象请求代理体系结构

C-S服务模型:

  1. 数据分区或者复制
  2. 由代理服务器和客户进行数据缓存
  3. 使用移动代码和移动代理
  4. 便利地增删移动设备

最底层的硬件和软件层通常被称为分布式系统和应用的平台。

屏蔽异构性的软件层称为中间件。例如CORBA,RMI,DCOM

瘦客户指在执行远程应用程序时支持本地UI的软件层,主要缺点是高度交互时,网络和操作系统延迟。例如X11。

分布式系统使用局域网,广域网和互联网进行通信。计算机网络原理包括协议的7层分层,包交换,路由以及数据流。

进程间通信主要有2种:

  1. C-S通信模式:请求R和应答A消息是RPC和RMI的基础
  2. 组通信模式:同一消息被发送到几个进程

UDP和TCP都是用套接字抽象,一种源于BSD UNIX系统的概念。

UDP存在可能遗漏和乱序的故障。在UDP上构造可靠的C-S通信请求-应答协议需要实现doOperation, getRequest and sendReply 3个原语,然后再根据应用做优化。DNS域名服务基于UDP。

在java中,序列化指的是将一个对象或一组有关联的对象封装成适合磁盘存储或消息发送的串行格式。反序列化则是从串行格式中恢复对象或一组对象。

幂等操作是指能重复执行的操作。
RPC协议有3种:R,RA和RRA。
组播:单消息从一个进程发送到一组进程的每个成员。在应用层,IP组播仅通过UDP可用。

利用消息标识和消息重传确保一个方法最终确实执行。
分布式应用是指由运行在不同进程中互相协作的程序组成的应用。
IDL:接口定义语言。它是的不同语言实现的对象能互相调用。典型的如protobuf和thrift。

持久对象:也叫钝化对象,指那些在两次激活之间仍然保证存活着的对象。

在远程方法调用RMI编程模型中,某个对象的远程接口中的一个方法被同步地调用(调用者等待应答)。
在基于事件的编程模型中,每当关注的对象上发生一个已发布事件,就把它通过异步地传送给多个订阅者。

操作系统实现了在服务器端的资源封装和保护,同时它还支持用于访问资源的调用机制,这其中包括通信和调度。

网络操作系统的独特特点是,运行于其上的结点能独立地管理自己的进程资源。
分布式系统对系统中的所有资源只生成单一映像。

进程由执行环境和线程组成。执行环境包括地址空间、通信接口和其他像信号量这样的本地资源
线程是执行环境中的活动抽象。

保密密钥加密算法更适合大量数据加密任务。混合型协议,例如SSL,安全套接字层,用公开密钥加密算法先建立一个安全通道,然后使用通道交换密钥,并将此保密密钥用于后继的数据交换。

加密就是将消息编码以隐藏原有内容的一个过程。

安全机制基于公开密钥或保密密钥。密码算法以某种方式对消息进行交换和混乱,使之在不知道解密密钥情况下不可逆。
ACL:访问控制列表

分布式文件系统主要设计问题包括:

  1. 有效使用客户缓存
  2. 当更新文件时,维持多个副本的一致性
  3. 出错后的恢复
  4. 读写不同数据量的文件的高吞吐量
  5. 可伸缩性

LDAP:轻量级目录访问协议
命名服务存储了分布式系统中的对象的属性,特别是它们的地址,并在用一个文本名查询时,返回这些属性。
命名服务的主要需求是处理任意数量的名字的能力,服务应具有长期性、高可用性、故障隔离性与不信任容忍性。
命名服务的主要设计问题:首先,名字空间的结构,名字管理的语法规则;其次,绑定名的集合必须被管理。再次,导航问题;最后,复制与缓存的使用。

Lamport时钟是一个计数器,它们依照事件之间的发生在先关系进行更新。时钟向量是Lamport时钟的改进,通过检查时间戳向量,可以决定两个事件是否是按发生在先关系排序或是并发的。

分布式互斥服务有3种算法:

  1. 中央服务器算法
  2. 基于环的算法
  3. 基于组播的使用逻辑时钟的算法

事务所服务器上的一个操作序列,由服务器保证这些操作序列在多个客户并发访问和服务器出现故障情况下的原子性。

并发控制协议基于串行相等的标准,起源于用于解决操作间冲突的规则,主要有以下3种方法:

  1. 锁用于在多个事务访问同一个对象时,根据这些操作访问同一个对象的先后次序给事务排序
  2. 乐观并发控制不会阻塞事务运行,只是在提交时通过检查来确定已执行的操作是否存在冲突
  3. 时间戳排序利用时间戳将访问同一个对象的事务根据其起始时间进行排序

一个分布式事务是指涉及多个不同服务器的事务。

利用两阶段加锁方式的分布式事务会导致分布式死锁。分布式死锁检测的目的是在全局等待图中寻找环路。一旦某个环路被发现,一个或者多个事务被放弃来解除死锁。

在分布式系统中,复制是高可用和容错的关键技术。
定义线性化和顺序一致性作为容错服务的正确准则。
在被动(主备份)复制中,通过直接将所有的请求发送到一个选出的副本管理器,并在其出故障时选出一个备份代替它,可以获得容错。
在主动复制中,所有副本管理器独立地处理所有的请求。
通过组通信,可以方便地实现这两种复制形式。
多媒体应用程序实时地生成和消耗连续的数据流,因而需要新的系统机制。这些机制中最重要的是服务质量管理。
QoS请求指定了多媒体数据流可接受的带宽,延迟和丢失率。
DSM:分布式共享内存,它是在不共享物理内存的不同计算机进程之间共享数据的一个抽象。

DSM主要的设计问题和实现问题包括:

  1. DSM结构
  2. 应用程序实现同步的方法
  3. 内存一致性模型
  4. 使用写-更新还是写-失效协议
  5. 共享力度
  6. 系统颠簸

[心得]分布式系统概念与设计知识整理相关推荐

  1. 分布式系统概念和设计——分布式多媒体系统

    分布式系统概念和设计 分布式多媒体系统 QoS QoS(Quality of Service,服务质量)是一种网络管理和控制技术,可以对网络流量进行管理和调度,以确保网络对不同类型的数据流的传输可以提 ...

  2. 分布式系统概念和设计 第十五章 (1)

    COORDINATION AND AGREEMENT http://www.cdk5.net/wp/ 背景知识点:Reliable failure detector 实际系统中没有reliable f ...

  3. 分布式系统概念和设计-操作系统中的支持和设计

    分布式系统概念和设计 操作系统支持 中间件和底层操作系统的关系,操作系统如何满足中间件需求. 中间件需求:访问物理资源的效率和健壮性,多种资源管理策略的灵活性. 任何一个操作系统的目标都是提供一个在物 ...

  4. 分布式系统概念和设计——特征,实例,Web,Future

    分布式系统概念和设计 分布式系统的特征 关于分布式系统的定义产生的结论 并发性,如何协调并发执行的共享资源型的程序 缺乏全局时钟,程序协作需要通过交换信息完成,紧密的协调依赖于对程序动作发生时的时间共 ...

  5. UI及交互设计知识整理(超详细 基础篇)

    首先,解决一个问题 UI是什么? UI 是 User Interface 的缩写,即界面设计. 其中 Interface 中的 inter 又有"在一起,交互"之义,所以UI设计中 ...

  6. 【AD】PCB设计知识整理(持续更新)

    文章目录 1 在区域覆铜的边缘放置过孔,在覆铜后的空白区域加大量过孔,在信号线旁边加大量过孔,有什么作用? 2 PCB覆铜的作用及规则 2.1.PCB敷铜九大注意点 2.1.1.注意分区敷铜 2.1. ...

  7. 分布式系统概念与设计分布式实例

    一.分布式系统的挑战 分布式系统的挑战,其实就是某种意义上分布式系统研究的重点内容. 1.异构性 分布式系统的运行环境,存在下列异构性(即存在多样性和差别):网络.计算机硬件.操作系统.编程语言.由不 ...

  8. 分布式系统详解--基础知识(概论)

                           分布式系统详解--基础知识(概论) 一. 引言         由于网上介绍的分布式的系统讲解并没有多少,所以在这儿就希望可以写一套系统的分布式的详解,未 ...

  9. 《分布式系统:概念与设计》一1.2 分布式系统的例子

    1.2 分布式系统的例子 本节给出能激发读者学习积极性的当代分布式系统的例子,用于说明分布式系统所扮演的无处不在的角色和相关应用的多样性. 如1.1节所提及的那样,网络无处不在,成为我们现在认为理所当 ...

  10. *Java软件开发面试知识整理*

    Java软件开发面试知识整理 围绕以下几点回答问题:是什么.为什么.什么时候用.项目实现.解决什么问题.遇到的困难 谈谈你对Java和C的理解? Java: 面向对象.Unicode:可以跨平台(JV ...

最新文章

  1. 必读 | 在转行AI之前,先了解下2018年人工智能发展的八大趋势
  2. cad字体安装_浩辰CAD与AutoCAD兼容性测评大起底!
  3. Java-IntelliJ IDEA【@Override is not allowed when implementing interface method 解决方法】
  4. C# 系统应用之窗体最小化至任务栏及常用操作
  5. php申请系统,PHP+MYSQL的文章管理系统(一)_php
  6. elk入门_ELK堆栈入门
  7. python定时任务是异步的吗_定时任务、异步任务
  8. XCode各种告警处理
  9. 此应用无法在你的电脑上运行_电脑这类问题一招搞定—无法启动此程序,因为计算机丢失......
  10. UpdatePanelAnimation
  11. Android获取用户通讯录上传,Android获取通讯录并上传(包含通讯录加密)(示例代码)...
  12. idea创建一个javaweb项目
  13. python爬取统计局数据_利用Python抓取行政区划码的方法
  14. Vlmcsd: 自建 KMS 激活服务器
  15. 获取必应每日一图网址
  16. 频率变标算法(FSA,Frequency Scaling)
  17. nlpir语义分析 java_集成nlpir语义分析
  18. win10自带的框选截图快捷键
  19. 【Arduino 连接DHT11 湿度和温度传感器】
  20. 金蝶K3生产数据管理模块术语表

热门文章

  1. 从 “C语言之父” 那里学到的一些好东西!分享给你~
  2. 史上最详细的F450四轴装机实例(无名官方推荐的)
  3. maven 压缩html,使用YUI Compressor Maven插件压缩 js,css 输出war包
  4. linux多线程编程介绍
  5. Unity Video Player(视频)
  6. vc6.0到vc 2008(vc 9.0)的变化
  7. 第七次网页前端培训(JS)
  8. PSP记忆棒文件放置结构图
  9. clientHeight、offsetHeight、scrollHeight、scrollTop的区别以及上拉加载的实现
  10. 手机屏幕坏了____怎么把里面的资料导出(18种方法)