引言
事务的四个特性: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),源自对互联网系统分布式的总结
分布计算技术是构造分布式系统的基础。
现代的分布式系统架构:

进程
进程线程这些都不需要多说了,其中一个点是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存在五种失效,每种都有对应的解决方案