分布式系统概览

  • Post author:
  • Post category:其他




分布式系统

分布式系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。

加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。Brewer认为在设计一个大规模的分布式系统时会遇到三个特性:一致性(consistency)、可用性(Availability)、分区容错(partition-tolerance),而一个分布式系统最多只能满足其中的2项。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。之后,CAP理论正式成为分布式计算领域的公认定理。

本博文主要参考资料:

  • 《分布式系统概念与设计》
  • “分布式系统 MIT”课程
  • 对于靠前的内容主要学习概念,靠后的内容关注具体技术



分布式系统的重要理念

  • 并行
  • 容错
  • 解决物理问题
  • 解决安全问题



分布式系统的主要挑战

  • 异构型:计算机和网络存在异构型
  • 开放性:系统组件的关键接口是否开放
  • 安全性:系统内信息的机密性、完整性和可用性
  • 可伸缩性:能够面对不同规模高效运转
  • 故障处理:故障检测、容错、故障恢复等
  • 并发性:要在并发环境中保证操作正确
  • 透明性:对用户和应用程序员屏蔽分布式系统组件的分离性
  • 服务质量:保证可靠性、安全、性能等



分布式体系结构

  • 通信实体:对象、组件、web服务
  • 通信泛型:进程间通信、远程调用(RPC)、间接通信



进程间通信

进程间通信基于传输层TCP和UDP协议,体现为套接字、消息传递、组播、覆盖网络等内容。其中组播指发送方将IP数据包传送给组成组播组的一组计算机;覆盖网络的概念指在已有网络的基础上构造不同的虚拟网络,对应特定的分布式应用。



远程调用

远程调用,是进程间函数的相互调用,是进程间通信 IPC(Inter-Process Communication)的一种方式。通过远程调用,一个进程可以看到其他进程的函数、方法等。从这一角度,根据进程是否部署在同一台机器上,远程调用可以分为如下两类:本地过程调用(Local Procedure Call,LPC),是指运行在同一台机器上的进程之间的互相通信,即在多进程操作系统中,运行的不同进程之间可以通过 LPC进行函数调用。远程过程调用(Remote Procedure Call,RPC),是指不同机器中运行的进程之间的相互通信,某一机器上运行的进程在不知道底层通信细节的情况下,就像访问本地服务一样,去调用远程机器上的服务。

最基础的请求-应答协议基于套接字实现,两种常用的远程调用机制为远程过程调用 RPC(Remote Procedure Call) ;以及远程方法调用 RMI(Remote Method Invocation)。



请求-应答协议



远程过程调用 RPC

RPC 就是调用方采用参数传递的方式,通过调用本机器上的一个函数或方法,去执行远程机器上的函数或方法(可以统称为服务),并返回结果。在整个过程中,RPC 会隐藏具体的通信细节。

注意HTTP通讯就是RPC的一个实例,后端服务器之间可以直接采用HTTP协议进行通讯,但是定制RPC可以设计更加符合应用场景的高效通讯方式。



远程方法调用 RMI

与 RPC的区别:RMI支持对象应用作为参数传递。远程一旦接收对象引用,就能够使用远程调用方法访问该对象,而不是通过网络传输对象。



间接通信



中间件



分布式文件系统



名字服务



时间和全局状态



协调和协定



事务和并发控制



关键词

  • 微服务
  • 集群
  • RPC



版权声明:本文为weixin_44478207原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。