配置httpd2.4与常见的I/O模型说明

                                        作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.httpd2.4访问控制
1.基于IP访问控制:
  允许所有主机访问:Require all granted
  拒绝所有主机访问:Require all deny
  基于IP控制某主机的访问
    Require ip IPADDR
    Require not ip IPADDR
    IPADDR:
    单个IP地址,例如172.16.100.7
    network/netmask 例如172.16.0.0/255.255.0.0
    network/Length 例如172.16.0.0/16
    Net 172.16
    完整写法:Require ip 172.16.0.0/16 (表示允许172.16.0.0/16网段访问)
配置实例如下
[root@yinzhengjie ~]# more /yinzhengjie/etc/http24/httpd.conf
DocumentRoot "/yinzhengjie/apache/htdocs"
<Directory "/yinzhengjie/apache/htdocs">
Options None
AllowOverride None
Require ip 192.168.1.0/24
</Directory>
.......
[root@yinzhengjie ~]#
2.基于域名控制某主机的访问
  允许所有主机访问: Require host HOSTNAME
  拒绝所有主机访问: Require not host HOSTNAME
  HOSTNAME:
    FQDN:具体的主机
    DOMAIN:域名,例如:yinzhengjie.org.com
 
 
 
 
二.I/O模型:
调用者如何被处理的:
a>.阻塞:
  进程发起I/O调用,未完成之前,当前进程会被挂起(意味着你不能执行其他的操作);
b>.非阻塞:
  进程发起I/O调用,被调用函数完成之前不会阻塞当前进程而是立即返回(意味着在这个调用完成之前,你可以干其他的事情);
 
被调用者如何响应请求者的调用的:
a>.同步:
  进程发起一个过程调用(功能、函数)调用后,在没得到结果之前,该调用将不会返回;
b>.异步:
  进程发起一个过程调用,即便调用者不能立即得到结果,但调用却会返回,返回是未完成状态,当调用完成后,内核会自行通知调用者已经OK;
 
 
 
三.常见的I/O模型
1.同步阻塞
  当客户端需要访问一个服务端的资源时,我们称客户端为调用者,响应服务的为被调用者。而资源都是存放在磁盘的,服务端请求数据时,服务端不会直接去硬盘取数据,而是告诉内核它要访问的资源。然后内核从磁盘上取出来数据在内存中加载,然而加载出来的内存是属于内核专属的,这个时候进程的内存是没权限访问内核内存的,内核内存可以将数据拷贝到进程内存中。好了,让我们说一下内核将数据从磁盘加载到内核内存的这个过程我们叫做等待数据,而将数据从内核内存拷贝到进程内存的过程我们叫做等待复制的过程,等到复制完成后服务端就可以响应啦。而在这个过程中,调用者始终处于阻塞状态(也就意味着它不能干其它的事情了,一直等待服务端响应),因为它要等待数据加载到内存,然后从内存拷贝到服务端的进程内存去,最后再由服务端提供服务。而被调用者始终处于同步状态,因为它需要等待数据全部被加载到进程内存中去。

2.同步非阻塞
  这个过程并不是真正的非阻塞。我们刚刚说了客户单等待服务端响应需要两个过程,即等待数据和等待复制完成。而所谓的同步非阻塞就是服务端依然处于同步状态,而客户端可以一直做别的事情,比如客户端可以去抽根烟,逛一下朋友圈然后再去问一下内核是否加载数据完毕,如何内核说数据记载完也就意味着等待数据的步骤已经完成,接下来会将内核中的内存复制到进程内存中去。也就是等待复制完成的过程。此时服务端响应了第一个请求之后就会等待内存加载数据到进程内存,当第二个请求进来之后,它同样的会去请求内核做相同的步骤与此同时还会询问第一个请求的数据加载完成进度,如果加载完毕则服务端陷入阻塞状态,知道将第一个请求处理完毕之后才回去响应第二个请求。

3.I/O复用(系统调用select(),poll())
  我们知道客户端向服务端请求资源时,服务端会发起系统调用将数据从磁盘加载出来,加载过程分为两个阶段,一个是等待数据的阶段,一个是等待数据复制完成的阶段。但是这个过程是需要时间的,如果这个时候又一个程序可以帮我们做一件监控I/O状态的神器就好了,当这两个阶段完成之后自己标识一下,然后服务端来检查它的表示就知道哪个进程是现在可以处理的了,这样服务端就可以请求多个请求,而等待I/O操作的时间都是由这个监控工具给搞定的。这样服务端就不需要问每个进程的进度了,而是只问这个监控I/O状态的工具了就可以了,当这个进程是处于完成的状态时,服务端就可以操作这个进程I/O啦,从而增加了工作效率。这个道理就好像老师要统计班上的学生姓名,老师可以一个一个统计,也可以选出一个班长帮助他统计,然后班长将统计的表交个老师,而老师在这个过程中是可以干其它事情的。
 

4.事件驱动(系统调用epoll() ,wqueue())
  事件驱动就比较人性化了,它的意思是当客户端想要访问一个资源时,资源会从磁盘加载到内核内存,在这个加载过程中客户端时可以做其他的事情的,等到内核将数据从磁盘加载到内核内存之后,就会通知客户端加载完毕。然后由客户端自己协调将内核内存拷贝到进程内存的过程。在访问数据被加载到内核内存之后,内核可以只通知客户端一次,这种机制我们叫做边缘触发。当然内核也可以多次向客户端发送通知说数据以及成功记载到内核内存了的消息,这种机制我们称之为水平触发。这种模式就好像老板做晚饭,但是它会把饭放在柜台上需要我们自己去拿,等你拿到你的座位上就可以吃了。Nginx和httpd2.4版本都有event工作模式,就是用到了事件驱动的epoll()方法。
 
5.异步非阻塞(系统调用AIO)
  这种方式是最人性化的,它的意思是当客户端发起请求之后,客户端就可以做别的事情了,服务端需要等待数据和等待复制完成的过程,等到数据加载到进程内存之后才会去唤醒客户端。然后再和其进行操作。这种模式就好像我们去饭店叫碗饭。老板讲饭端在我们的桌上,我们只负责吃即可。
 

  异步非阻塞模式需要向把数据加载到内核内存,然后从内核内存复制一份到进程内存中去,这样明显降低了效率,如果有一种机制,只需要加载到内核内存,之后客户端就可以访问,这样的效果就非常good啦,当然,我们就可以基于内存映射的关系来实现,可以用nmap技术。
 
 
 
 
 

配置httpd2.4与常见的I/O模型说明的更多相关文章

  1. 在centos6编译配置httpd2.4的N种方法

    前言 我们使用linux的过程中,一定会用到httpd这个服务,在centos7上,默认安装的httpd就是2.4版本,大家都知道,2.4版本相对之前的版本已经做了改进,用起来更加方便,但是我们的ce ...

  2. 01-01java概述 doc命令、jdk\jre下载安装、path、classpath配置、开发中常见小问题

    1:计算机概述(了解) (1)计算机 (2)计算机硬件 (3)计算机软件 系统软件:window,linux,mac 应用软件:qq,yy,飞秋 (4)软件开发(理解) 软件:是由数据和指令组成的.( ...

  3. 关于配置httpd2.4.18+php5.6

    关于httpd2.4.18下载之前一直很烦php官网上的点半天看不到下载链接,直到看到这么几句话 大意是Apache http server 不提供二进制版本,只提供源代码.....如果你不能自己编译 ...

  4. 配置使用EF6.0常见的一些问题及解决方案

    前言 最近做了个winform小项目,为方便快速开发,后台框架使用了ef6.0+sqlserver2008架构,遇到各种问题,真是伤脑筋.现将遇到问题和解决方案写下来,方便查阅 提示未注册,找不到驱动 ...

  5. webpack常见的配置总结 ---只是一些常见的配置

    早期的构建工具grunt ,gulp 帮助我们配置一些开发环境,省去一些我们调试和重复的工作 现在我们的构建工具一般是webpack ,目前建议大家用3.0以上的版本 现在市场上比较优秀的构建工具,个 ...

  6. Xampp配置本地域名及常见错误解决

    本地域名配置 1.计算机-->C盘-->Windows-->System32-->drivers-->etc-->hosts 127.0.0.1       loc ...

  7. RBAC 几种常见的控制权限模型

    1. 几种常见的权限模型 2. ACL 和 RBAC 对比 3. RBAC 权限模型的优势 (1)简化了用户和权限的关系 (2).易于扩展 易于维护 4.优势(给权限和收回权限) 5.架构

  8. 小程序的目录结构/配置介绍/视图层wxml数据绑定/双线程模型/小程序的启动流程

    安装好微信小程序开发软件,创建项目 小程序文件结构和传统web对比 结构 传统web 微信小程序 结构 HTML WXML 样式 CSS WXSS 逻辑 Javascript Javascript 配 ...

  9. cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)

    在cips2016出来之前,笔者也总结过种类繁多,类似词向量的内容,自然语言处理︱简述四大类文本分析中的"词向量"(文本词特征提取)事实证明,笔者当时所写的基本跟CIPS2016一 ...

随机推荐

  1. LOJ#6503.「雅礼集训 2018 Day4」Magic[容斥+NTT+启发式合并]

    题意 \(n\) 张卡牌 \(m\) 种颜色,询问有多少种本质不同的序列满足相邻颜色相同的位置数量等于 \(k\). 分析 首先本质不同不好直接处理,可以将同种颜色的卡牌看作是不相同的,求出答案后除以 ...

  2. 【ORACLE】oracle11g RAC搭建

    --安装好操作系统(rhel-server-6.7 on vmware) 注意事项: 1.磁盘配置lvm 2.账号密码 root/oracle ---------------------------- ...

  3. nginx 新增域名访问

    nginx 新增域名访问 1.申请阿里云域名 2.指向阿里云主机 3.配置nginx文件 server { listen 80; server_name zlx.test.com; set $root ...

  4. DRF框架QQ登录功能

    用户模块---QQ登录 流程图 QQ登录文档:http://wiki.connect.qq.com/%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C_oauth2-0 流程简述 ...

  5. 微软职位内部推荐-Senior Program Manager

    微软近期Open的职位: Title: Senior Program Manager – Bing Multimedia Relevance Group: Search Technology Cent ...

  6. (第十二周)新功能WBS

    项目名:食物链教学工具 组名:奋斗吧兄弟 组长:黄兴 组员:李俞寰.杜桥.栾骄阳.王东涵 新增加的功能:背景音乐 功能 子功能 二级子功能 预计花费时间(小时) 实际花费时间(小时) 背景音乐 界面组 ...

  7. This is me

    This is me 爱琴棋 爱书画 也爱格物 爱跋山 爱涉水 也爱深林 This is me. 刘伯承的诗词有曰“高耸入云”,于是“李入云”便成为了我一生的标记,也造就了一个时而安静,时而疯狂的我 ...

  8. 第五次Scrum meeting

    第五次Scrum meeting 会议内容: 连接方面:确定封装成json的文本格式,尽量在满足在线组和手机客户端两组的情况下,降低自身的难度 测试方面:进行新一轮测试,主要测试程序的稳定性和可靠性, ...

  9. 20135202闫佳歆--week6 进程的描述与创建--学习笔记

    此为个人学习笔记存档! week 6 进程的描述与创建 一.进程的描述 1.进程控制块task_struct 以下内容来自视频课件,存档在此. 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述 ...

  10. 20135202闫佳歆--week4 课本第5章学习笔记

    第五章 系统调用 一.与内核通信 系统调用在用户控件进程和硬件设备之间添加了一个中间层,作用如下" 为用户空间提供了一种硬件的抽象接口 系统调用保证了系统的稳定和安全 每个进程都运行在虚拟系 ...