1、几种IO模型的原理
2、实现基于域名PC端和移动端
------------------------------------------------------------------------------------------------------------------
1 几种IO模型的原理
1.1
#调用者:应用程序进程 被调用者:内核 #同步/异步 同步:应用程序进程发起系统调用后,程序进程需要主动询问内核是否处理完成,未完成则一直询问 异步:应用程序进程发起系统调用后,内核会通过通知机制告知程序进程是否处理完成,不需要程序进程一直询问 #阻塞/⾮阻塞 阻塞:应用程序进程发起系统调用后,在内核返回处理结果之前,程序进程不能处理其他请求 非阻塞:应用程序进程发起系统调用后,在内核返回处理结果之前,程序进程可以处理其他请求 -------------------------------------------------------------------
#系统I/O模型: 1)同步阻塞:应用程序进程发起系统调用后,程序进程需要主动询问内核是否处理完成,未完成则一直询问;在内核返回处理结果之前,程序进程不能处理其他请求。 2)同步非阻塞:应用程序进程发起系统调用后,程序进程需要主动询问内核是否处理完成,未完成则一直询问;在内核返回处理结果之前,程序进程可以处理其他请求。 3)异步阻塞:应用程序进程发起系统调用后,内核会通过通知机制告知程序进程是否处理完成,不需要程序进程一直询问;在内核返回处理结果之前,程序进程不能处理其他请求。 4)异步非阻塞:应用程序进程发起系统调用后,内核会通过通知机制告知程序进程是否处理完成,不需要程序进程一直询问;在内核返回处理结果之前,程序进程可以处理其他请求。
1)同步阻塞型IO模型(blocking IO) 与系统I/O模型的同步阻塞型相同,整个过程处于阻塞状态。 2)同步⾮阻塞型I/O模型(nonblocking IO) 与系统I/O模型的同步非阻塞型相同,进行数据拷备时才处于阻塞状态,其余时间不阻塞。 3)IO多路复⽤型(IO multiplexing) 优点:单个进程可以处理多个网络连接的IO 应用程序进程调用select/poll/epoll函数,由函数不断轮询所负责的socket,当某个socket有数据到达后,由内核通知应用程序进程,应用程序再发起系统调用进行数据拷备,整个过程处于阻塞状态。 Apache prefork:相当于主进程+多进程/单线程+select模式 Apache work:相当于主进程+多进程/多线程+poll模式 4)信号驱动式IO(signal-driven IO) 应用程序进程调用信号处理函数,内核处理完成后通过信号通知机制返回结果,应用程序再发起系统调用进行数据拷备,进行数据拷备时才处于阻塞状态,其余时间不阻塞。 Apache event:相当于主进程+多进程/多线程+信号驱动模式 5)异步(⾮阻塞) IO(asynchronous IO) 与系统I/O模型的异步非阻塞型相同,整个过程处于非阻塞状态。 Nginx默认为此模式。
2 实现基于域名PC端和移动端
#yum安装nginx # yum -y install nginx #创建基于域名PC端配置文件 # cat /etc/nginx/conf.d/pc.conf server { server_name www.pc.com; location / { root /data/www/pc; access_log /data/www/pc/access.pc.log main; } } #创建基于域名移动端配置文件 # cat /etc/nginx/conf.d/mobile.conf server { server_name www.mobile.com; location / { root /data/www/mobile; access_log /data/www/mobile/access.mobile.log main; } } #准备访问资源 # mkdir -p /data/www/pc /data/www/mobile # echo pc.html > /data/www/pc/index.html # echo mobile.html > /data/www/mobile/index.html #设置开机自启并立即启动服务 # systemctl enable --now nginx #客户端访问测试 # tail -n1 /etc/hosts 10.0.0.27 www.pc.com www.mobile.com # curl www.pc.com pc.html # curl www.mobile.com mobile.html
浙公网安备 33010602011771号