返回

高级分布式系统

一点也不高级,只是课程罢了

引言

事务的四个特性:A(Atomicity)C(Consistency)I(Isolation)D(duration)

之后整出来了C(Consistency)A(Availability)P(Partition tolerace) 异步网络模型中只能满足其中的两项

其中CAP的C是强一致性,包括原子一致性和线性一致性

由于P是一个必选项,所以CAP理论实际是:在满足分区容错的前提下,没有算法能同时满足数据一致性(强一致性)和服务可用性

但是不是绝对的,理论上可以放宽一些要求

另一套理论是BASE(Basically Availabel, Soft state, Eventually consistent),源自对互联网系统分布式的总结

分布计算技术是构造分布式系统的基础。

现代的分布式系统架构:

image-20231124234604470
image-20231124234604470

进程

进程线程这些都不需要多说了,其中一个点是IO,主要可以分为:

  • 阻塞式IO (Socket) BIO
  • 非阻塞式IO (NONBLOCK的Socket)
  • 信号驱动IO(写个回调函数告诉调用方完成)
  • 复用式IO(调用方同时给多个给IO,然后返回一个或多个时开始调用) NIO
  • 异步IO AIO

常用的就是阻塞式IO、复用式IO和异步式IO

对于服务器端的设计,可以分为并发服务器和迭代服务器,其中并发服务器为每个客户端创建一个新的进程,之后等待下一个,迭代式就是直接按顺序处理

会话状态可以分为会话状态和永久状态,状态服务器也分为有状态服务器和无状态服务器

但是当拓展到分布式上的时候就复杂了,对于无状态的服务可以随便搞,但是对于有状态的服务,需要:单一服务节点集群,信息共享节点集群,信息一致节点集群

  • 单一服务节点集群:一个用户一个节点

  • 信息共享节点集群:所有节点连接到一个公共的信息池

  • 信息一致节点集群:数据信息是一致的

这时候就需要服务器集群的负载均衡,来调度后方的多台极其来对外提供统一的接口。基于工作的两类协议层可以分为四层负载均衡(不单单在第四层工作,根据连接信息和特征进行均衡)和七层负载均衡(在应用层工作)

四层负载均衡的工作模式都属于转发,即客户端和响应请求的真实服务器维护着同一条TCP通道

正向代理是在客户端设置的,代表客户端和服务器通信的代理服务,对客户端可知,对服务器端透明(VPN)

反向代理是服务器端设置的用来屏蔽细节的

透明代理设置在网络中间设备,通常是用来公司的行为管理等

通信

Http是无状态的,所以引用了Cookie

目前的访问远程服务可以分为RPC和REST:

  • RPC远程过程调用,可以理解成调用服务器端的函数。

  • REST(REpresentation State Transfer)表现层状态转移

    • REST是一种软件架构风格,需要满足:客户-服务器、无状态、统一接口三个原则,满足上述原则的应用程序设计就是RESTful的

分布式系统体系结构

软件视角分布式系统结构可以分为四类:

  • 分层体系结构
  • 基于对象的体系结构
  • 以资源为中心的体系结构
  • 基于事件的体系结构

但是实际上的分布式体系结构会混合几种

系统视角的分布式系统结构可以分为

  • 集中式体系结构(服务功能集中在服务器端
  • 非集中式体系结构
  • 混合体系结构(bitorrent

中间件是操作系统和软件之间的一个独立软件层

分布式系统服务架构可以分为以下阶段:

  • 原始分布式系统
  • 基于对象的分布式系统
  • 基于构件的分布式系统
  • 面向服务的体系结构SOA
  • REST风格的体系结构
  • 微服务体系结构
  • Serverless体系结构

命名

看起来很简单但实际很复杂

即如何对不同的节点进行命名,三种常用的命名结构:

  • 无结构命名
  • 结构化命名
  • 基于属性的命名

然后是两种名称解析方式(其实就是DNS解析方式)

容错

RPC存在五种失效,每种都有对应的解决方案

Licensed under CC BY-NC-SA 4.0