1. CS泛型
1.1. CS泛型(paradigm)和CS架构(Architecture)
1.1.1. 泛型指的是进程
1.1.2. 架构指的是计算机
1.2. CS泛型中的issue
1.2.1. Session
1.2.1.1. 一个S可能并发服务多个C,对于每一个C,S都维护一个独立的session
1.2.2. protocol
1.2.2.1. 服务定位方法
1.2.2.1.1. 主机名+端口号
1.2.2.2. 进程间通信和事件同步
1.2.2.2.1. request-response模式
1.2.2.2.2. 通信协议的内容
1.2.2.3. 数据表示
1.2.2.3.1. 数据表示的方式决定于协议的属性和要求
1.3. 三层业务逻辑
1.3.1. 表示逻辑(presentation)
1.3.1.1. 用于UI
1.3.2. 应用逻辑(application)
1.3.2.1. 用于CS之间数据的传输
1.3.3. 服务逻辑(server)
1.3.3.1. 封装了socket底层的方法
1.4. 面向连接和无连接的CS
1.4.1. 无连接
1.4.1.1. 无连接的有会话交错
1.4.2. 面向连接
1.4.2.1. 面向连接无会话交错,只有一个CS的session完成之后另一个才能占用这个session
1.4.2.2. 迭代(iterative)并发(concurrent)服务器
1.4.2.2.1. 迭代服务器为S服务的C以队列的形式进行,一次只能服务一个
1.4.2.2.2. 并发服务器为C可以并发,方式主要是监听/轮询或是衍生子进程
1.4.2.3. 有状态(stateful)和无状态(Stateless)服务器
1.4.2.3.1. 无状态
1.4.2.3.2. 有状态
2. 组播
2.1. 组播原型
2.1.1. join
2.1.1.1. 需要有命名方案标识不同的组播组
2.1.2. leave
2.1.3. receive
2.1.4. send
2.2. 面向连接?无连接?
2.2.1. 一般用无连接
2.2.2. 面向连接建立的连接开销太大n*(n-1)/2条连接
2.3. 可靠组播?不可靠组播?
2.3.1. 不可靠组播
2.3.1.1. 书上写的是废话
2.3.1.2. 发过去的没被[所有人][以正确格式]接收
2.3.2. 可靠组播
2.3.2.1. 定义
2.3.2.1.1. 要求对于一条信息接收且仅接收一次,顺序没有限制
2.3.2.2. 分类(按到达的顺序分)
2.3.2.2.1. 无序(unordered)
2.3.2.2.2. FIFO
2.3.2.2.3. 因果顺序(casual)
2.3.2.2.4. 原子顺序(atomic)
3. 分布式计算介绍
4. 进程间通信(IPC)
4.1. 事件同步机制
4.1.1. 同步与异步的发送和接收
4.1.2. 进程的阻塞
4.1.3. 监听机制和轮询机制
4.2. 超时机制与衍生子进程机制
4.2.1. 超时
4.2.2. 衍生子进程:父进程衍生一个子进程进行阻塞的监听而父进程依然活动
4.3. IPC的死锁
4.4. 数据封装(marshaling)
4.4.1. 数据串行化(扁平化)
4.4.2. 数据表示的改变
4.4.2.1. 为了能够让不同表示的两个终端进行有效沟通,需要借助另外一种数据表示的方式对于数据进行编码和解码
4.5. request-response protocol
4.5.1. 一系列连续的req和res操作
4.6. 面向连接的和无连接的IPC
4.6.1. 面向连接的IPC一旦建立连接在发送时无需指定接收方
4.6.2. 无连接的IPC发送时应当指定接收方
5. 分布式计算的泛型
5.1. 泛型和抽象的含义
5.1.1. 泛型
5.1.2. 抽象
5.1.2.1. 隐藏了内部实现的具体细节
5.2. 分布式计算的泛型
5.2.1. 消息传递(Message Passing)
5.2.1.1. sender和receiver之间的信息传递
5.2.2. CS泛型
5.2.2.1. 非对等实体
5.2.2.2. 事件同步机制
5.2.2.2.1. server等待request
5.2.2.2.2. client等待respose
5.2.3. peer-to-peer泛型
5.2.3.1. 对等实体
5.2.3.1.1. 相同角色,相同的能力和职责
5.2.3.2. 应用场景
5.2.3.2.1. 即时消息
5.2.3.2.2. p2p文件传输
5.2.3.2.3. 视频会议
5.2.3.2.4. 协同工作
5.2.4. Message System泛型
5.2.4.1. 特点
5.2.4.1.1. 使用中间件
5.2.4.1.2. receiver维护一个消息队列
5.2.4.1.3. 通过中间件实现了发送和接收的解耦和
5.2.4.2. point-to-point
5.2.4.2.1. 提供了消息暂存功能
5.2.4.3. publish/subscribe
5.2.4.3.1. 提供了一种组播或是组通信的机制
5.2.5. 远程过程调用(Remote Procedure Call)
5.2.5.1. 调用远端的过程
5.2.5.2. 与message passing的不同
5.2.5.2.1. MS是data-oriented
5.2.5.2.2. RPC为action-oriented
5.2.6. 分布式对象泛型
5.2.6.1. 远程方法调用(Remote Method Call)
5.2.6.2. 对象请求代理(Object Request Broker)
5.2.6.2.1. 作为一个中间件来处理不同的requestor的请求
5.2.6.3. 对象空间(object Space)
5.2.6.3.1. 类似于将某个对象作为一个实体放入一个room里
5.2.6.3.2. room里的对象都可以被用户进行访问
5.2.6.3.3. 用户的取用是互斥的
6. socket API
6.1. 作用环境
6.1.1. 对通讯时间有要求
6.1.2. 系统能提供的资源有限