apache模块化体系结构简析
- 格式:docx
- 大小:288.43 KB
- 文档页数:11
Apache模块开发指南1000字Apache是一款非常流行的开源Web服务器,它的支持模块化架构设计使其可以扩展其功能,增加一些自定义的操作。
而Apache模块开发则是开发者可以根据业务需求自定义功能与处理方式。
Apache模块开发主要有两种形式,一种是编写模块,另外一种是编写模块的扩展。
编写模块编写模块起用比较简单,只需按照Apache的模块接口格式,将其添加到源代码中即可。
开发一个Apache模块,需要掌握以下几个知识点。
1. Apache的模块结构Apache上的模块采用模块函数表结构,在这个结构中定义了一组指向具体实现代码的函数指针。
因此,开发人员需要在模块函数表结构中,添加自己的模块函数。
这里所定义的模块函数在挂载模块和模块的时候会被调用,实现对模块的对应的控制操作。
2. 请求的处理方式Apache处理请求的方式随请求的不同而不同,常见的是处理静态请求和动态请求。
当处理静态请求时,Apache从磁盘上读取所需的静态文件;当处理动态请求时,Apache则转向Perl、PHP等脚本处理器,处理所需的请求。
我们在实际开发中需要针对不同的请求,实现对应的处理方式。
3. 访问请求的内存池Apache为每个请求都创建了一个内存池,开发者可以在该内存池中分配内存空间,以便在请求被处理的各个阶段使用。
4. 访问请求前的验证环节Apache提供了一个验证模式,允许模块在允许或拒绝请求前进行验证。
验证的方法可以是基于用户的,也可以是基于请求URL的。
实现这一验证功能需要针对验证模式,实现特定的验证函数。
编写模块的扩展Apache模块的扩展,通常是一组函数包,用于向开发者提供一些辅助处理方法。
在Apache的扩展中,扩展者通常需要实现以下几个方面的内容:1. 实现驱动函数Apache扩展的驱动函数通常负责初始化和清除扩展时所需要的一些内存。
为了保证扩展的正常运作,开发者需要注意以确保驱动函数被正确的使用。
ApacheTomcat服务器架构分析Apache Tomcat服务器架构分析Apache Tomcat(简称Tomcat)是一个开源的Java Servlet容器,也是Java Server Pages(JSP)规范的一个实现。
本文将对Tomcat服务器的架构进行分析。
一、概述Tomcat基于Java语言开发,提供了一个轻量级的Web服务器环境,可用于运行Java Web应用程序。
其架构主要包括以下几个组件:1. Catalina:负责处理Servlet请求和管理Servlet的生命周期。
它是Tomcat的核心组件,通过HTTP Connector和Servlet容器(包括Engine、Host和Context)与客户端进行通信。
2. Coyote:作为Tomcat的HTTP/1.1协议的处理器,处理传入的HTTP请求,将请求转发给Catalina进行处理。
3. Jasper:用于编译JSP页面,将其转换成可执行的Servlet。
Jasper也负责处理JSP页面的热部署、预编译和缓存等功能。
4. Cluster:用于实现Tomcat服务器的集群部署,提供负载均衡和故障容错的功能。
5. Security:提供安全机制,用于认证和授权用户,保护Web应用程序的安全性。
6. Manager:用于管理Web应用程序的生命周期,支持部署、启动、停止和重载Web应用程序。
二、Tomcat的架构详解1. Connector层:Connector用于处理传输层和应用层之间的通信,主要负责IO操作,提供了多个Connector实现,包括HTTP Connector、AJP Connector、WebSocket Connector等。
- HTTP Connector:用于处理HTTP/1.1协议的请求和响应,支持多种处理模式,如阻塞模式和非阻塞模式。
- AJP Connector:用于与Apache Web服务器进行通信,通过AJP协议来传输请求和响应数据。
Apache的工作原理引言概述:Apache是一款广泛使用的开源Web服务器软件,被广泛应用于互联网中。
本文将详细阐述Apache的工作原理,包括请求处理、模块化架构、多进程模型、负载均衡和缓存机制等方面。
正文内容:1. 请求处理1.1 连接处理:Apache通过监听端口接受客户端的连接请求,并为每个连接创建一个独立的进程或线程。
1.2 请求解析:Apache根据请求的URL和HTTP头部信息,解析出请求的资源路径和请求方法等信息。
1.3 路由匹配:Apache根据配置文件中的规则,将请求的URL与已配置的虚拟主机、目录或文件进行匹配,确定请求的处理方式。
1.4 访问控制:Apache可以根据配置文件中的访问控制规则,对请求进行身份验证和授权,确保只有合法用户可以访问资源。
1.5 请求处理:Apache将请求交给相应的模块进行处理,如静态文件处理、动态脚本解析等。
2. 模块化架构2.1 核心模块:Apache的核心模块负责基本的请求处理和连接管理,如核心处理模块、连接处理模块等。
2.2 功能模块:Apache提供了丰富的功能模块,如SSL模块、代理模块、重定向模块等,可以根据需求进行动态加载和配置。
2.3 第三方模块:Apache支持第三方开发者编写自定义模块,扩展Apache的功能,满足特定需求。
3. 多进程模型3.1 主进程:Apache启动时创建的主进程负责监听端口、接受连接请求和管理子进程。
3.2 子进程:主进程根据配置文件中的设定,创建一定数量的子进程,每个子进程独立处理连接请求,提高并发处理能力。
3.3 进程池管理:Apache使用进程池管理子进程,根据负载情况动态调整子进程的数量,实现资源的高效利用。
4. 负载均衡4.1 代理模块:Apache的代理模块可以将请求转发给多个后端服务器,实现负载均衡。
4.2 负载均衡算法:Apache支持多种负载均衡算法,如轮询、加权轮询、最少连接等,根据配置文件中的规则选择后端服务器。
ApacheCamel集成框架原理剖析Apache Camel集成框架原理剖析Apache Camel 是一个开源的企业级集成框架,它旨在简化应用程序之间的消息传递和通信。
本文将深入探讨Apache Camel的原理和机制,帮助读者更好地理解和使用这个强大的集成框架。
一、简介Apache Camel是一个基于企业集成模式(Enterprise Integration Patterns)的开源框架。
它提供了一个优雅的、简化的方式来连接不同的应用和系统,通过消息传递和路由来实现各种集成场景。
二、核心概念1. 路由(Route)在Apache Camel中,路由是最基本的概念。
它代表了一条从起始点到目的地的路径,可以包含多个环节。
每个环节都定义了消息的处理逻辑,可以进行转换、过滤、聚合等操作。
2. 组件(Component)组件是Apache Camel的基本构建块,用于与系统和应用程序进行通信。
它们负责消息的接收和发送,包括连接协议、数据格式转换等功能。
Apache Camel提供了丰富的组件,如HTTP、JMS、FTP等,同时也支持自定义组件。
3. 路由器(Router)路由器是Apache Camel中定义路由逻辑的组件。
它负责将消息从一个组件传递到另一个组件,根据配置的规则进行路由和转换。
路由器可以根据消息内容、标头、路由策略等条件进行决策,以确保消息的正确路由和处理。
4. 转换器(Transformer)转换器是Apache Camel中用于消息转换的组件。
它负责将消息从一个格式转换为另一个格式,以满足系统和应用程序的需求。
Apache Camel提供了丰富的转换器,支持XML、JSON、CSV等格式的转换。
三、工作原理Apache Camel的工作原理可以简单概括为以下几个步骤:1. 定义路由首先,需要定义一个路由来描述消息的流动路径。
路由可以通过Java DSL或XML DSL进行定义,具体的语法和配置方式取决于用户的喜好和应用场景。
Apache的工作原理Apache是一种常用的开源Web服务器软件,它是基于HTTP协议的,用于响应客户端的HTTP请求并传送相应的Web页面或其他资源。
Apache的工作原理主要包括请求处理、模块化架构和并发处理。
1. 请求处理:当客户端发送一个HTTP请求到Apache服务器时,Apache会按照一定的处理流程进行处理。
首先,Apache会解析请求的URL,获取请求的文件或资源路径。
然后,Apache会根据配置文件中的规则,确定如何处理该请求,包括文件的位置、是否需要进行权限验证等。
2. 模块化架构:Apache采用模块化的架构,这意味着它的功能可以通过加载不同的模块来扩展。
Apache服务器的核心功能由一些基本模块提供,如核心模块、日志模块、认证模块等。
此外,还可以通过加载第三方模块来增加额外的功能,如PHP模块、SSL模块等。
模块化的架构使得Apache具有高度的灵活性和可扩展性,可以根据需求选择加载不同的模块。
3. 并发处理:Apache采用多进程或多线程的方式来处理并发请求。
当有多个请求同时到达时,Apache会创建多个子进程或线程来处理这些请求。
每个子进程或线程独立运行,互不干扰。
这样可以提高服务器的并发处理能力,同时也增加了服务器的稳定性和可靠性。
在Apache的工作过程中,还涉及到一些重要的概念和技术,如虚拟主机、URL重写、缓存等。
1. 虚拟主机:虚拟主机是指在一台物理服务器上运行多个独立的网站。
Apache可以通过配置虚拟主机来实现这一功能。
每个虚拟主机有自己独立的域名或IP地址,并且可以有自己独立的配置文件。
Apache根据请求的域名或IP地址,将请求分发到相应的虚拟主机进行处理。
2. URL重写:URL重写是指将URL地址进行修改或重定向的过程。
Apache可以通过配置URL重写规则来实现这一功能。
例如,可以将带有特定后缀的URL重写为另一个URL,或者将某个URL重定向到另一个URL。
ApacheHadoop框架详细分析Apache Hadoop框架详细分析Apache Hadoop框架是一种用于大规模数据处理的开源软件,它通过分布式存储和计算能力来解决大数据处理的问题。
本文将对Apache Hadoop框架进行详细分析,包括其核心组件、架构以及应用场景等。
一、Hadoop框架概述Apache Hadoop是一个能够处理大规模数据的分布式计算框架,它由Apache软件基金会下的Hadoop项目开发和维护。
Hadoop的设计目标是以廉价的硬件构建可靠的、可扩展的分布式系统,并且能够对大规模数据进行高效的分布式处理。
Hadoop主要包括两个核心组件:分布式文件系统Hadoop HDFS和分布式计算框架Hadoop MapReduce。
HDFS用于存储大量数据,并将其分布在集群的多个节点上,实现高容错性和高可靠性。
MapReduce是一种分布式计算模型,通过将任务分解为多个片段并在多个节点上并行执行,实现对大规模数据的并行处理。
二、Hadoop框架架构Hadoop框架的架构由主节点(Master)和多个从节点(Slave)组成,其中主节点包括一个名称节点(NameNode)和一个资源管理器(ResourceManager),从节点包括多个数据节点(DataNode)和节点管理器(NodeManager)。
名称节点负责管理文件系统的命名空间和数据块的位置信息,资源管理器负责协调集群中的资源分配和任务调度。
数据节点负责存储和管理数据块,节点管理器负责管理从节点上的计算资源和任务执行。
Hadoop框架的工作流程如下:首先,客户端将输入文件划分为多个数据块,并将这些数据块分布存储在HDFS中的不同数据节点上;然后,客户端向资源管理器提交MapReduce任务,资源管理器根据集群的资源情况进行任务调度,并将任务分配给可用的从节点;接下来,从节点通过数据节点读取数据块,并由节点管理器负责执行Map和Reduce任务;最后,任务输出结果写入HDFS,并由客户端读取和处理。
ApacheSpark框架详细介绍Apache Spark框架详细介绍Apache Spark是一个快速、通用的大数据处理框架,由加州大学伯克利分校的AMPLab开发。
它提供了一种高级的分布式编程模型,可以处理包含数十亿行数据的大规模数据集。
本文将详细介绍Apache Spark框架的核心组件、特点和使用场景。
一、Spark的核心组件Apache Spark框架由以下核心组件构成:1. Spark Core:Spark的基础功能模块,提供了任务调度、内存管理、错误恢复等核心功能。
它还包含了RDD(弹性分布式数据集)的实现,RDD是Spark的主要数据结构,它是一个可分区、可并行计算的数据集合。
2. Spark SQL:提供了对结构化数据的查询和分析功能,支持SQL查询、数据流处理和机器学习等操作。
Spark SQL可以将结构化数据映射成DataFrame,DataFrame是一种类似于关系型数据库的数据结构。
3. Spark Streaming:用于实时流式数据的处理和分析,可以处理实时生成的数据流,并将其划分成小批次进行计算。
Spark Streaming支持各种数据源,如Kafka、Flume等。
4. MLlib:为Spark提供了机器学习功能,包括常见的分类、回归、聚类和推荐算法等。
MLlib提供了丰富的机器学习工具和算法库,能够处理大规模的机器学习任务。
5. GraphX:用于图计算的组件,支持图的创建、操作和分析。
GraphX提供了图的基本算法和图计算的API,可以用于社交网络分析、推荐系统等领域。
二、Spark的特点Apache Spark相比于其他大数据处理框架,具有以下几个显著特点:1. 快速性能:Spark采用内存计算,能够将数据存储在内存中,从而加速数据处理的速度。
它还支持并行计算,能够在多个节点上同时执行任务,提高了处理效率。
2. 容错性:Spark具有良好的容错能力,能够在节点故障时自动恢复任务,保证计算的可靠性。
Apache Hadoop架构Apache Hadoop 是一个由Apache 基金会所开发的分布式系统基础架构。
可以让用户在不了解分布式底层细节的情况下,开发出可靠、可扩展的分布式计算应用。
Apache Hadoop 框架,允许用户使用简单的编程模型来实现计算机集群的大型数据集的分布式处理。
它的目的是支持从单一服务器到上千台机器的扩展,充分利用了每台机器所提供本地计算和存储,而不是依靠硬件来提供高可用性。
其本身被设计成在应用层检测和处理故障的库,对于计算机集群来说,其中每台机器的顶层都被设计成可以容错的,以便提供一个高度可用的服务。
Apache Hadoop 的框架最核心的设计就是:HDFS 和MapReduce。
HDFS 为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
正如上一节MapReduce所提到的那样,Apache Hadoop 受到了Google 的GFS 和MapReduce的启发,而前者产生了Apache Hadoop 的分布式文件系统NDFS (Nutch Distributed File System) ,而后者也被纳入到Apache Hadoop 作为核心组件之一。
Apache Hadoop 的雏形开始于2002年的Apache 的Nutch。
Nutch是一个开源Java 实现的搜索引擎。
它提供了我们运行自己的搜索引擎所需的全部工具,包括全文搜索和Web 爬虫。
随后在2003 年Google 发表了一篇技术学术论文关于Google 文件系统(GFS)。
GFS 也就是Google File System,是Google 公司为了存储海量搜索数据而设计的专用文件系统。
2004年Nutch创始人Doug Cutting(同时也是Apache Lucene的创始人)基于Google 的GFS 论文实现了分布式文件存储系统名为NDFS。
Apache Hadoop 它主要有以下几个优点:•高可靠性。
Apache的工作原理Apache是一个开源的、跨平台的Web服务器软件,被广泛用于互联网和内部网络中。
它是目前最流行的Web服务器软件之一,具有稳定性、安全性和灵活性等优点。
本文将详细介绍Apache的工作原理。
一、Apache的架构Apache的架构采用了模块化设计,它由多个模块组成,每个模块负责不同的功能。
这种设计使得Apache可以根据需要扩展和定制功能,提高了灵活性和性能。
Apache的核心模块(Core Module)是最基本的模块,它处理HTTP请求和响应的基本功能,如解析请求、生成响应等。
其他模块则提供了各种功能,如身份验证、URL重写、缓存等。
二、请求处理流程当Apache接收到一个HTTP请求时,它会按照以下流程进行处理:1. 连接处理:Apache首先接受客户端的连接请求,并建立与客户端的TCP连接。
2. 解析请求:Apache会解析客户端发送的HTTP请求,包括请求行、请求头和请求体等部分。
解析后的请求会被保存在内存中,供后续处理使用。
3. 访问控制:Apache会根据配置文件中的访问控制规则判断是否允许该请求访问服务器上的资源。
如果请求被拒绝,Apache会返回相应的错误信息给客户端。
4. URL映射:如果请求通过了访问控制,Apache会根据配置文件中的URL映射规则,将请求映射到对应的文件或处理程序上。
5. 模块处理:Apache会根据URL映射结果,调用相应的模块来处理请求。
每个模块负责特定的功能,可以对请求进行处理、修改或生成响应。
6. 响应生成:经过模块处理后,Apache会生成HTTP响应,包括响应头和响应体。
响应头包含了状态码、响应内容类型等信息,响应体则包含了实际的响应内容。
7. 发送响应:最后,Apache将生成的HTTP响应发送给客户端,并关闭与客户端的连接。
三、模块的工作原理Apache的模块是按照特定的顺序进行处理的,每个模块可以在请求的不同阶段进行处理。
Apache的工作原理Apache是一个开源的Web服务器软件,被广泛用于互联网上的网站和应用程序的部署。
它是一个模块化的软件,可以通过加载不同的模块来实现各种功能。
在本文中,我们将详细介绍Apache的工作原理。
1. 请求处理流程当用户在浏览器中输入一个URL并按下回车键时,浏览器会向服务器发送一个HTTP请求。
Apache作为Web服务器,会接收到这个请求并进行处理。
下面是Apache处理请求的流程:1.1 接收请求Apache通过监听一个指定的端口(通常是80端口)来接收HTTP请求。
一旦接收到请求,Apache就会启动一个处理线程来处理该请求。
1.2 解析请求Apache会解析HTTP请求的各个部份,包括请求方法(GET、POST等)、请求头、请求参数等。
这些信息将被用于后续的处理。
1.3 查找请求的资源Apache会根据请求的URL和配置文件中的规则来确定请求的资源。
这可能是一个静态文件(如HTML、CSS、JavaScript文件),或者是一个动态资源(如PHP脚本、Java Servlet等)。
1.4 处理请求如果请求的资源是一个静态文件,Apache会直接将文件返回给客户端。
如果请求的资源是一个动态资源,Apache会将请求转发给相应的处理程序(如PHP解释器),并将处理结果返回给客户端。
1.5 返回响应Apache会将处理结果封装成HTTP响应,包括响应头和响应体。
响应头包含了响应的状态码、响应的类型等信息,响应体包含了实际的响应内容。
1.6 关闭连接一旦响应发送完成,Apache会关闭与客户端的连接,释放资源,并等待下一个请求的到来。
2. 虚拟主机虚拟主机是Apache的一个重要特性,它允许在一台物理服务器上托管多个域名或者网站。
每一个虚拟主机都有自己独立的配置文件和根目录,就像是一台独立的服务器一样。
虚拟主机的工作原理如下:2.1 根据域名匹配虚拟主机当Apache接收到一个请求时,它会根据请求的域名来匹配对应的虚拟主机。
apache模块化体系结构简析目录APACHE勺体系结构概述 (1)APACH核心功能层 (3)APACH核心组件 (4)APACH核心处理框架 (4)APACH可选功能层(模块) (5)挂钩(HOOK (6)预定义标准挂钩 (6)挂钩使用 (6)挂钩声明 (6)挂钩数组声明 (7)挂钩结构 (7)挂钩注册 (8)挂钩使用 (8)APACHE 2.0系列的模块结构 (9)模块与核心的交互 (11)APACHE勺体系结构概述APACH采用了分层与模块化的体系结构,如图1所示。
图1 Apache分层与模块化体系结构加上操作系统层,整个 Apache 可以被分隔为五层,各层次的功能如下:(1) 操作系统支持层,操作系统本身提供的底层功能,比如进程和线程、进程和线程 间的通信、网络套接字通信、文件操作等。
(2) 可移植运行库层,不同的操作系统提供的底层 API 存在着很大的差异。
对于Apache 设计者而言,除了考虑WW 和服务器功能的实现之外,还必须考虑不同操作系统的 API 细节 问题。
显然,合理的做法就是将不同操作系统的底层细节封装起来形成操作系统API 的适配 并将其隐藏起来。
从Apache 2.0开始,Apache 就将专门封装不同操作系统API 的任务独立出来形成一个 新的项目 APR 全称为 Apache 可移植运行库(Apache Portable Runtime ,APR 。
APR 的任 务就是屏蔽底层的操作系统 API 细节,对于所有的操作系统,提供一个完全相同的函数接口。
这样,Apache 开发者 就不必顾虑操作系统细节,而只要开发上层功能即可。
比如对于进程不同的操作系统提供的创建进程的API 是不同的,Unix 下通用的是fork() , Windows 下则是 CreateProcess() ,OS/2、Netware 及BeOS 中的API 也迥然不同。
APR 将所有的创建 细节封装起来,提供了统一的对外接口 apr_proc_create()。
这样,APR 的使用者如果要创建进程,则只须调用 apr proc create(),不管它将要运行于哪个操作系统平台。
APR 的独立带来的另一个潜在的益处就是它将最终形成一个独立的可移植运行库。
因此, pqi=-Jar puu实际上任何应用程序如果要考虑跨平台,都可以使用它作为底层的支持。
(3)核心功能层,包括两大部分:Apache核心程序和Apache核心模块。
Apache的核心程序主要用于实现Apache作为HTTP服务器的基本功能,这些基本功能包括:启动和停止Apache,处理配置文件(config.c ),接受和处理HTTP连接,读取HTTP 请求并对该请求进行处理,处理HTTP协议。
核心模块,Apache中大部分模块都是可选择的,这意味着对于Apache而言是可有可无的。
这些模块的缺失至多影响Apache功能的完整性,并不影响运行,比如mod_ssl、mod_alias等。
但是有两个模块则是必需的,即mod_core和mod_so。
前者负责处理配置文件中的大部分配置指令,并根据这些指令运行Apache,而后者则负责动态加载其余的模块,缺少了该模块,其余的模块就无法使用。
这两个模块都必须静态编译。
对于Apache而言,另外一个重要的模块就是MPM即多进程处理模块。
尽管MPM也是属于可选择的,但是它通常负责处理Apache中的并发模型,或者是Prefork,或者是线程池(ThreadPool),或者是Worker模型等。
大多数情况下,它们总是会被加载,因此我们也将其视为核心的模块。
Apache核心(第三层)主要有以下两个作用。
基本的HTTP服务功能,Apache核心必须提供最基本的资源处理,或者通过文件描述符,或者通过内存段等来提供;维护多进程运行模型;在配置好的虚拟主机上侦听TCP/IP套接字;将接收到的客户端请求传递给特定的处理进程,处理HTTP协议状态,提供基本的读入和写入缓冲区等。
另外,核心部分还提供一些通用的功能,比如URL及MIME头部解析,DSO模块加载等。
Apache Module API ,Apache最基本的核心功能由Apache核心完成,除此之外,核心无法提供的功能则全部由模块提供。
为了允许这些模块能够完全控制Apache的处理,Apache核心必须提供对应的API。
在Apache中,这些API是指每个模块中包含一系列的函数(核心在处理HTTP请求的时候用来将消息传递给模块),以及一系列的以"apr"开始的函数。
(4)可选功能层,可选功能层通常指Apache模块。
按需载入,比如,如果需要Apache 服务器支持安全套接字层(Secure Socket Layer , SSL),那么毫无疑问,我们必须将mod_ssl 模块加载到核心中。
目前,Apache中的模块很多,Apache能够支持的完整的注册过的模块信息可以在 上查看。
(5)第三方支持库,在Apache的一些模块中会使用到第三方的开发库,比如mod_ssl 就使用了OpenSSLmod_perl则使用了Perl开发库。
这些第三方支持库虽然被Apache使用,但严格来说它们并不属于Apache的一部分。
APACHE体系结构的模块化特点主要体现在第三层(核心功能层)与第四层(可选功能层),Apache采用的模块化的体系结构,使它作为一个HTTP服务器的大部分功能都被分割为相互独立的模块,这样,通过增加或删除模块就可以扩展和修改Apache提供的功能。
APACHE核心功能层APACHES心功能层实现了APAPCH作为一个HTTP服务器应具备的基本功能,包括:启动和停止Apache,处理配置文件,接受和处理HTTP连接,读取HTTP请求并对该请求进行处理,处理HTTP协议等。
APACHE核心组件从实现这些基本功能的源代码来看,Apache的核心功能层可以有以下的几个组件组成:配置文件组件(HTTP_CONFI)进程并发处理组件(MPM,连接处理组件(HTTP_CONNECTION HTTP协议处理组件(HTTP_PROTOC)L HTTP请求处理组件(HTTP_REQUE$T HTTP核心组件(HTTP_CORE核心模块组件(MOD_CORE HTTP配置文件组件(HTTP_CONF)。
(1)HTTP_CONFI组件主要位于http_config.h 和config.c 中,对配置文件进行解析、处理和保存。
另外,HTTP_CONFI(组件还必须提供对配置数据访问的接口,其余组件在配置数据的任何时候都能够快地返回配置信息。
(2)进程并发处理组件(MPM,MPM!件主要位于mpm i录下的各个文件中,比如Prefork MPM 寸应的就是prefork.c 。
MPM负责为Apache系统提供可靠、稳定、高效的进程和线程的并发处理。
任何时候,Apache中只能有一个MPM在运行,而且MPM、须在编译的时候指定,不允许动态加载。
(3 ) HTTP 连接处理组件( HTTP_CONNECTION HTTP_CONNECTIO组件主要位于http_connection.h 和connection.c 中。
该组件主要负责处理与HTTP连接相关的事情。
(4)HTTP协议处理组件(HTTP_PROTOC)L 在Apache 2.x 系列中,HTTP_PROTOCOL组件主要位于http_protocol.h 和http_protocol.c 中,主要负责处理HTTP/1.0 及HTTP/1.1协议的解析,比如解析http请求头、生成返回给客户端的响应包等。
所有与协议相关的处理都由该组件完成。
(5)HTTP请求处理组件(HTTP_REQUE$THTTP_REQUES!件主要位于http_request.h 、http_request.c 及request.c 三个文件中。
与Apache 1.3 相比,它增加了request.c 文件。
与请求相关的函数全部定义在http_request.h 中,函数实现则分散在两个.c中。
(6)HTTP核心组件(HTTP_CORE,在APACHE2.X系列中,还增加了一个HTTP_CORE 模块,它位于文件http_core.h 和http_core.c 中,该组件主要是将与HTTP协议相关的内容从原来的核心模块中提取出来的。
最早的时候,一些与HTTP协议相关的指令(如KeekpAliveTimeout、、MaxKeepAliveRequests 及KeepAlive )都是直接有core.c 核心模块完成的,这样导致核心模块与HTTP协议的耦合度过高,而APACHE勺设计者想要把APACHE设计为一个通用的服务器,而不仅仅是一个Web服务器。
(7)核心模块组件(MOD_CORE核心模块(MOD_CORE由mod_core.h和core.c 组成,该模块的主要任务就是对核心需要的指令进行比较,比如<Directory> 、<Location>、DocumentRoot等。
该模块在HTTP_CONFl(中被调用。
APACHE核心处理框架最终,APACHE的核心功能层构造了HTTP服务器的基本功能的一个处理框架(流程) ,如图3所示。
图3 APACHE核心处理框架这个框架包含了APAPCH对一个HTTP青求的不同的处理阶段。
模块扩展APACHE勺功能的实现是通过APACHES供的一种机制:允许模块针对特定的HTTP请求,在这个框架里的已有的一些阶段中增加一些额外的处理;允许模块增加新的处理阶段。
APACH可选功能层(模块)APACHES心层构造了一个基本的处理框架,并且为这个框架的各个分支(即HTTP请求处理的各个阶段)提供了默认的实现,从而实现了APACHES为一个HTTP服务器应具有的最基本的功能。
也就是说,如果只有核心层的话,APACHE寸一次HTTP的请求只做默认的处理,例如:在这个处理框架的内容生成阶段,APACHES是简单的将服务器上的文件(不管是html 还是PHFP直接返回个客户端,不做额外处理。
这显然不是我们想要的,应该是根据文件类型的不同做不同的处理之后再返回给客户端。
APACHES心层通过一种机制(接口)让他构造的处理框架及其各个分支是可以扩展的:可以增加额外的分支;可以在分支上增加额外的处理或者直接替代默认的处理行为。
APACHE模块就是通过这个接口要么增加新的分支(如日志模块),要么为新的分支增加额外的处理(如PHP模块为内容生成分支增加了对php文件进行处理的功能)。
挂钩(HOO K之前,我们反复提到APACHES心层提供了一种机制,这种机制使得APACHE S块能够扩展核心层的功能。