使用性能模型有哪几种
发布网友
发布时间:2022-05-10 15:21
我来回答
共1个回答
热心网友
时间:2023-10-13 09:36
1.IO复用技术
IO复用是一种机制,简单说就是IO事件的到来、读写、异常等情况都有内核帮你监控了,应用程序只需要处理那些内核通知你的IO句柄即可,这种机制的前提是即使建立数万连接,某时刻可读写的fd数量只占总连接量的很小的比例,因此借助于内核事件驱动机制,就可以实现单线程的数万Socket的管理。
举个栗子:
一个大工厂很多车间,之前必须每个车间有个值班人员,per house per woker的模式,大部分情况下车间是没有异常情况的,但是为了保证万无一失,仍然需要一名工作人员。
后来引入了监控报警系统,视频音频等信息都实时传输到中控室,从而1名或数名工作人员就可以完成整个厂区的监控,大大提高效率。
IO复用就不多说了,并没有什么太多复杂之处,目前热门的epoll就是其中的悍将,至于epoll的一些详细的机制可以自行查询不再赘述了。
2.事件处理模型
网络设计模式中,如何处理各种I/O事件是其非常重要的一部分,Reactor 和Proactor两种事件处理模型应运而生,可以使用同步I/O实现Reactor模型,使用异步I/O实现Proactor模型。
Reactor事件处理模型
Reactor模型是同步I/O事件处理的一种常见模型,其核心思想:将关注的I/O事件注册到多路复用器上,一旦有I/O事件触发,将事件分发到事件处理器中,执行就绪I/O事件对应的处理函数中。
模型中有三个重要的组件:
多路复用器:由操作系统提供接口,Linux提供的I/O复用接口有select、poll、epoll
事件分离器:将多路复用器返回的就绪事件分发到事件处理器中
事件处理器:处理就绪事件处理函数
典型的Reactor模型类图结构:
Reactor 类结构中包含有的主要角色:
Handle:标示文件描述符
Event Demultiplexer:对操作系统内核实现I/O复用接口的封装等待发生事件发生
Event Handler:事件处理接口
Event Handler A/B:实现应用程序所提供的特定事件处理逻辑
Reactor:反应器定义一个接口,注册和删除关注的事件句柄、运行事件处理循环、等待就绪事件触发,分发事件到注册的回调函数。
3.并发模式
在I/O密集型的程序,采用并发方式可以提高CPU的使用率,可采用多进程和多线程两种方式实现并发。
其中包括半同步/半异步模式、半同步/半反应堆模式、半同步/半反应堆模式改进版、Follower/Leader模式。