《分布式系统概念与设计》阅读笔记


前言

系统的学习一下分布式系统的知识,先从这本书看吧。把基础的概念学好。

一、系统模型

1.1 简介

提出三个重要且互补的解释方法,以便有效的描述分布式系统的设计:

  • 物理模型:考虑组成系统的计算机和设备的类型以及他们的互连,不涉及特定的技术细节。
  • 体系结构模型:从系统的计算元素执行的计算和通信任务方面描述系统。计算元素:单个计算机或通过网络互连的计算机集合。CS架构和P2P结构是常见的体系结构模型。
  • 基础模型:采用抽象的观点描述大多数分布式系统面临的单个问题的解决方案。

分布式系统中没有全局时间的概念,不同计算机的时钟未必有相同的时间。进程间所有通信通过消息完成

计算机网络上的消息通信会受到延迟的影响,这些问题从三个模型讨论:

  • 交互模型:处理分布式系统的性能问题并解决在分布式系统中设置的时间约束的困难,例如消息传送的时间约束。
  • 故障模型:给出进程和通信通道故障的一个精确规约。定义了可靠的通信和正确的进程。
  • 安全模型:讨论进程和通信通道的各种可能的威胁。

1.2 物理模型

四、进程间通信

分布式应用需要组播,即使没有IP组播的底层支持也必须提供组播。通常可以通过在TCP/IP网络上构建一个覆盖网络提供对组播的支持。

消息传递接口(Message Passing Interface)是一个标准,为一组具有同步和异步支持的消息传递操作提供API。

UDP的应用程序接口提供了消息传递抽象,TCP的应用程序接口提供了进程对之间的双向流抽象。

4.1 互联网协议API

4.1.1 进程间通信

  1. 同步和异步通信

每个消息目的地与一个队列相关。发送进程将消息添加到远程队列中,接收进程从本地队列中移除消息。发送进程和接收进程在每个消息上同步。

  • 同步形式通信:发送进程和接收进程在每个消息上同步,此时send和receive都是阻塞操作。
  • 异步形式通信:send操作非阻塞,只要消息被复制到本地缓冲区,发送进程就可以继续其他处理,消息的传递与发送进程并行进行;receive操作有阻塞型和非阻塞型,在不阻塞的receive操作中,接收进程在发出receive操作后可以继续执行其程序,此时receive操作在后台提供一个缓冲区,但必须通过轮循或中断独立接收缓冲区已满的通知。
  1. 消息目的地

本地端口是计算机内部的消息目的地。

  1. 可靠性

如果一个点对点消息服务在丢失了“合理”数量的数据包后,仍能保证发送消息,则该服务是可靠的。反之,丢失一个数据包就不能保证消息发送,则是不可靠的消息服务。就完整性而言:到达的消息必须是没有损坏的,且没有重复的。

  1. 排序

有些应用要求按照发送方发送的顺序送达,乱序则认为是发送失败。

4.1.2 套接字

TCP和UDP都是用套接字抽象,套接字提供进程间通信的一个端点。进程间的通信是在两个进程各自的套接字之间传递消息。套接字必须绑定于在其上运行的计算机的一个互联网地址和一个本地端口。

4.1.3 UDP数据报通信

进程先创建一个本地主机的互联网地址和本地端口号绑定的套接字,服务器将其套接字绑定在一个服务器端口上,该端口告知客户,以便客户能获得消息。

  1. 消息大小:

底层的IP协议允许的数据包长度最大为216字节,其中包括消息头和消息本身。大多数情况下,消息的大小被限制在8KB左右。

  1. 阻塞:

套接字通常提供非阻塞型的send操作和阻塞型的receive操作。


文章作者: Demerzel
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Demerzel !
评论
  目录