服务器的三个主要模板:
(1)I/O处理单元
(2)逻辑单元
(3)存储单元
有关服务器的模型:
(1)C/S(客户端/服务器)模型
逻辑:
服务器启动后
1.创建一个或多个监听socket
2.调用bind函数绑定到服务器感兴趣的端口上
3.调用listen函数等待客户链接
4.服务器稳定运行后客户端可以调用connect函数向服务器发起连接了
缺陷:当访问量过大时,可能所有客户都将得到很慢的响应
(2)P2P模型
核心:摒弃了以服务器为中心的格局,让网络上所有主机重新回归对等的地位
典型:云计算群
缺陷:当用户之间传输的请求过多的时候网络的负载将加重
服务器编程框架
单个服务器程序 服务器集群
I/O处理单元 处理客户连接,读写网络数据 作为接入服务器实现负载均衡
请求队列
逻辑单元 业务进程或线程 逻辑服务器
请求队列 各单元之间通信方式 各服务器之间的永久TCP连接 网络存储单元 本地数据库,文件或缓存 数据库服务器
I/O复用函数本身是阻塞的,他们能够提高程序效率的原因在于他们具有同时监听多个I/O事件的能力
同步I/O和异步I/O的区别?
两种高效的事件处理模式
Reactor 同步 就绪
主线程负责监听
工作线程负责处理
Proactor 异步 完成
所有的I/O操作都交给主线程和内核来处理,工作线程仅仅负责业务逻辑
两种高效的并发模式
并发编程的目的:让程序"同时"执行多个任务
***
对于计算密集型的程序 ,并发编程并没有优势,反而由于任务的切换使效率降低,但是如果是I/O密集型的,比如经常读写文件,访问数据库等,则情况就不同了。
***
并发模式指的是:处理I/O处理单元和多个逻辑单元之间协调完成任务的方法
半同步/半异步 P149
变体::半同步/半反应堆
并发的同步:
程序完全按照代码序列的顺序执行
并发的异步:
程序的执行需要由系统事件来驱动
领导者/追随者
多个工作线程轮流获得事件源集合,轮流监听,分发并处理事件的一种模式。
仅有一个领导者线程
池的概念:
以空间换时间,即浪费服务器的硬件资源,以换取其运行效率,这就是池的概念
(1)I/O处理单元
(2)逻辑单元
(3)存储单元
有关服务器的模型:
(1)C/S(客户端/服务器)模型
逻辑:
服务器启动后
1.创建一个或多个监听socket
2.调用bind函数绑定到服务器感兴趣的端口上
3.调用listen函数等待客户链接
4.服务器稳定运行后客户端可以调用connect函数向服务器发起连接了
缺陷:当访问量过大时,可能所有客户都将得到很慢的响应
(2)P2P模型
核心:摒弃了以服务器为中心的格局,让网络上所有主机重新回归对等的地位
典型:云计算群
缺陷:当用户之间传输的请求过多的时候网络的负载将加重
服务器编程框架
单个服务器程序 服务器集群
I/O处理单元 处理客户连接,读写网络数据 作为接入服务器实现负载均衡
请求队列
逻辑单元 业务进程或线程 逻辑服务器
请求队列 各单元之间通信方式 各服务器之间的永久TCP连接 网络存储单元 本地数据库,文件或缓存 数据库服务器
I/O复用函数本身是阻塞的,他们能够提高程序效率的原因在于他们具有同时监听多个I/O事件的能力
同步I/O和异步I/O的区别?
同步发送的是读写就绪事件,关于事件的读写还需要程序来做
异步发送的是读写完成事件,关于事件的读写内核直接完成
两种高效的事件处理模式
Reactor 同步 就绪
主线程负责监听
工作线程负责处理
Proactor 异步 完成
所有的I/O操作都交给主线程和内核来处理,工作线程仅仅负责业务逻辑
两种高效的并发模式
并发编程的目的:让程序"同时"执行多个任务
***
对于计算密集型的程序 ,并发编程并没有优势,反而由于任务的切换使效率降低,但是如果是I/O密集型的,比如经常读写文件,访问数据库等,则情况就不同了。
***
并发模式指的是:处理I/O处理单元和多个逻辑单元之间协调完成任务的方法
半同步/半异步 P149
变体::半同步/半反应堆
并发的同步:
程序完全按照代码序列的顺序执行
并发的异步:
程序的执行需要由系统事件来驱动
领导者/追随者
多个工作线程轮流获得事件源集合,轮流监听,分发并处理事件的一种模式。
仅有一个领导者线程
池的概念:
以空间换时间,即浪费服务器的硬件资源,以换取其运行效率,这就是池的概念