网络应用的体系结构
- 客户端-服务器模式
- 服务器(所有资源都在服务器,服务器是中心)
- 一直运行
- 固定的IP地址和周知的端口号(约定)
- 扩展性差
- 数据中心进行扩展
- 扩展性差(太多用户请求服务就无法运行)达到一定程度用户量性能断崖式下降
- 客户端
- 主动与服务器通信
- 与互联网有间歇性的链接
- 可能是动态IP地址
- 不直接与其他客户端通信
- 服务器(所有资源都在服务器,服务器是中心)
- 对等模式
- 每个节点及请求别人的服务又向别人提供服务
- 请求节点的增加的时候提供服务的节点增加,这样用户量增加的时候性能是平滑的下降的
- 问题:管理起来复杂,要知道每个节点状态,是上线还是下线
- 混合体
- 比如Napster
- mp3音乐分发系统:客户端运行起来,向服务器发出注册命令。客户端告诉服务器ip多少,有哪些mps3共享,每个节点上线的时候都是这个过程。下载音乐之前想服务器查询音乐,因为每个客户端上线的时候都注册,所以服务器知道哪些节点有资源然后就按照协议请求下载。
- 目录查询是集中式,文件分发是p2p
- 比如Napster
进程通信
- 应用对网络最本质要求是提供不同段系统之上远程的应用进程之间的通讯。不同主机,通过交换报文(message)来通信,首先使用OS提供的通信服务然后借助传输层提供的服务按照应用协议交换报文。
- 如果两个应用进程在一台机器上,通讯不需要符合网络标准可以借助操作系统本身所提供应用进程通讯的方式通讯(管道、消息队列、共享缓冲区等)但是要是在不同机器上就要符合网络标准。
- 客户端进程是发起通信的进程,服务器进程是等待连接的进程。(P2P架构在每个会话上也有客户端进程和服务器进程之分)
- 分布式进程通信需要解决的问题:
- 进程标识自己,用标识位作为唯一的标识。还要寻址:让别人找得到自己。(服务用户)比如淘宝发货需要知道你是谁,地址,电话号码等等,就相当于关系型数据库的主键。
-
应用的标识和寻址包括:
①哪个机器哪个设备(唯一的32位主机ip地址) ②所用的传输层协议:进程在tcp还是udp ③在tcp和udp上有好多进程,需要提供tcp或者udp端口号 -
一个进程:用IP+port
-