首页 > 其他分享 >Apache 介绍

Apache 介绍

时间:2024-01-15 15:59:35浏览次数:21  
标签:HTTP MPM 介绍 Server 进程 线程 Apache

Apache 基金会

Apache基金会(Apache Software Foundation)简称ASF。是一个负责管理 Apache 项目的开源基金会。

例如:Apache HTTP Server、Apache Kafka、Apache Tomcat、Apache ZooKeeper等。

Apache 基金会官网:https://apache.org/


Apache HTTP Server

Apache HTTP Server(简称Apache),是世界上使用最广泛的Web服务器软件,起初是用来支持World Wide Web的增长。

Apache HTTP Server官网:https://httpd.apache.org/


Apache HTTP Server 起源:

Apache起源于1995年,是最早用于支持快速增长的World Wide Web的Web服务器之一。

Apache最初是基于NCSA HTTPd服务器的补丁和扩展,后来发展成为一个独立的项目。它的名称“Apache”源自“a patchy server”,意即由许多补丁组成的服务器,但后来这个名字也与美国原住民部落Apache联系在一起,象征自由和力量。


Apache HTTP Server 和 WWW 的关系:

Apache HTTP Server 和 WWW是相互促进的关系。

  • WWW的发展促进了Apache的诞生:WWW的发明和快速增长需要可靠的、易于使用的服务器软件来托管网站和网络服务。这种需求催生了Apache HTTP Server的开发,它是为了改进当时已存在的Web服务器技术而创建的。

  • Apache的普及推动了WWW的增长:Apache的出现为WWW的扩展提供了强大的支持。作为一个开源、免费且功能强大的Web服务器软件,Apache使得个人和组织更容易地在互联网上发布内容和提供服务。


Apache HTTP Server 和 Apache 基金会关系:

Apache HTTP Server的出现早于 ASF 基金会的成立,当 Apache HTTP Server 被创造出来后,为了更好地管理和支持这个项目以及其他相关开源项目,Apache 基金会随后成立。


Apache 和 HTTPD

Apache HTTP Server有些时候也简称为 httpd,目的是为了和Apache 软件基金会进行区分。

httpd 是 HTTP daemon 的缩写。daemon 是指在后台运行的服务或进程。因此,httpd可以翻译为为“HTTP服务程序”,它代表着运行在服务器上,负责处理HTTP请求的服务进程。


Apache 特点:

  • 开源免费:Apache 是开源软件,遵循 Apache 许可证,可以免费使用、修改和重分发。

  • 模块化设计:Apache是基于模块化设计的,通过加载不同的模块可以实现不同的功能。

  • 跨平台:支持在Unix、Windows、Linux、MacOS上运行


Apache 工作模式:

Apache通过启用不同的MPM模块,就可以切换不同的工作模式。

Aapache为了解决各种场景下的并发处理需求,引入了一个叫作“多处理模块(Multi-Processing Module,简称 MPM)”的概念,不同的模块定义了 Apache 如何处理并发请求

Prefork MPM 模块

Apache 启动时创建一个父进程。这个父进程主要负责管理子进程,不直接处理客户端请求。父进程根据对应的配置创建一定数量的子进程,没有请求时这些子进程是空闲的,当一个请求到达时,父进程将其分配给一个空闲的子进程。

特点: 因为每个子进程独立运行,它们之间没有共享状态,所以非常稳定,但是内存占用可能会更多。

Worker MPM 模块

Apache 启动时创建一个父进程。这个父进程负责监控和管理子进程,但不直接处理客户端请求。会根据配置创建对应的子进程数量,每个子进程可以创建并管理多个线程。每个线程可以独立处理一个客户端请求。

特点: 适合处理高并发请求,且资源消耗低。

Event MPM 模块

Event MPM 是对 Worker MPM 的一个优化,特别是在处理持久连接方面。一个持久连接占用一个线程,直到连接关闭。


Event MPM 模块工作原理:

通过引入监听线程,通过监听线程来负责接收新的连接请求,并将这些请求分配给子进程中的工作线程。

  • 接收新请求:所谓的新请求就是客户端首次尝试建立与服务器的连接,新请求到来时,首先被监听线程接收,由监听线程将该请求分配给一个工作线程进行实际的处理。

  • 管理现有连接:会监控那些处于持久连接状态(如 HTTP Keep-Alive)的连接,一般工作线程完成请求后,将这个工作线程转入空闲状态,随时准备处理新的分配给它的请求。

MPM WinNT 模块

专门給Windows设计的一个模块,使用单个固定的父进程,该父进程创建多个子线程来处理请求。


常见的web服务器软件:

  • Apache:在动态内容和复杂配置环境中表现良好,且社区支持完善。

  • ISS:Microsoft开发的一种Web服务器软件,专为Windows服务器环境设计。

  • NGINX:高性能的Web服务器和反向代理服务器,适用于处理大量并发连接环境。


C10K 问题:

C10k指的是"concurrent 10,000"(同时1万个连接),即一万个客户端同时向web服务器发起请求。

这个问题在1999年由丹·基斯勒(Dan Kegel)提出,在当时这被视为一个重要的技术挑战,因为当时的服务器软件和操作系统通常难以应对这种高并发水平。

提出这个问题的目的是指出当时许多网络服务器(包括但不限于Apache)在面对成千上万的并发客户端连接时的性能局限性。

虽然Apache是当时最受欢迎的Web服务器之一,也受到了C10K问题的影响,但这个问题并非特指Apache,而是涉及了所有类型的网络服务器软件。随后,Apache和其他服务器软件(例如Nginx)都采取了各种措施来优化它们的架构和处理机制,以更好地处理大量的并发连接。

因为Apache最初是基于进程/线程的模型设计的。在处理客户端请求时,它会为每个请求创建一个新的进程或线程。虽然这种模型在低到中等的负载下运行得很好,但在高并发场景下,会有一些限制。


Apache 解决C10K问题的方案:

切换工作模式

针对这个问题,APache进行了多次迭代和改进引入了几种多路复用和事件驱动的模型解决高并发导致的性能问题。可以使用下面两种工作模式来用于高并发场景。

  • 事件(Event)MPM:是为了提高处理大量并发连接的能力而设计的。它使用更少的线程来管理连接,并且在必要时才创建新的线程,从而减少资源消耗并提高性能。

  • 工作(Worker)MPM:这是一种多线程和多进程的混合模型,旨在提供比传统的prefork MPM更好的并发处理能力。


服务器硬件优化

提升硬件性能也是应对高并发连接,如使用固态硬盘提高数据读写速度,增加CPU核心提高服务器的并发处理能力,减少等待时间,加大内存容量,提升网络带宽,高带宽可以确保数据快速传输。

标签:HTTP,MPM,介绍,Server,进程,线程,Apache
From: https://www.cnblogs.com/heyongshen/p/17965513

相关文章

  • AI 图像自动补全 Uncrop 工具介绍
    ClipDropUncrop是一款基于AI的图像自动补全工具,由StabilityAI旗下的Clipdrop开发。通过利用StableDiffusionXL开发的算法和深度学习技术,Uncrop可以对用户上传的图片进行自动扩展和补全,改变图片尺寸,使得图像内容得到更完整的呈现。用户只需要上传需要补全的图片,选择想要的尺寸,Un......
  • 第一章 互联网基本介绍
    第一章互联网基本介绍目录第一章互联网基本介绍互联网在信息时代的作用互联网在信息时代的作用常见的三大网络:电信网络(电话),有线网络(电视),计算机网络互联网\(\neq\)互连网互连网:局部范围内连起来的计算机互联网的组成:应用和服务,工作原理(互联结构,交换技术,网络协议)互联网的......
  • flask介绍
    1.flask介绍Flask诞生于2010年,是Arminronacher用python语言基于Werkzeug工具箱编写的轻量级web开发框架Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用Flask......
  • DevOps及DevOps常用的工具介绍
    DevOps及DevOps常用的工具介绍1.什么是DevOpsDevOps这个词,其实就是Development和Operations两个词的组合。它的英文发音是/de'vɒps/,类似于"迪沃普斯"它的目标:DevOps就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠2.Dev......
  • 【云原生 • Kubernetes】k8s功能特性、k8s集群架构介绍
     序言你只管努力,其他交给时间,时间会证明一切。文章标记颜色说明:黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用来标记二级论点Kubernetes(k8s)是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下k8s日志查看相关方法希望这篇文章......
  • 50、Flink的单元测试介绍及示例
    Flink系列文章一、Flink专栏Flink专栏系统介绍某一知识点,并辅以具体的示例进行说明。1、Flink部署系列本部分介绍Flink的部署、配置相关基础内容。2、Flink基础系列本部分介绍Flink的基础部分,比如术语、架构、编程模型、编程指南、基本的datastreamapi用法、四大基......
  • JUC 异步编程利器 CompletableFuture 介绍
    1从FutureTask到CompletableFuture1.1FutureFuture接口(FutureTask实现类)定义了操作异步任务执行一些方法,如获取异步任务的执行结果、取消异步任务的执行、判断任务是否被取消、判断任务执行是否完毕等。举例:比如主线程让一个子线程去执行任务,子线程可能比较耗时,启动子线程开......
  • Apache Hudi在信息服务行业构建流批一体的实践
    个人介绍李昂高级数据研发工程师ApacheDoris&HudiContributor业务背景部门成立早期,为了应对业务的快速增长,数仓架构采用了最直接的Lambda架构对数据新鲜度要求不高的数据,采用离线数仓做维度建模,采用每小时调度binlog+每日主键归并的方式实现T+1数据更新对数......
  • Json Schema介绍 和 .net 下的实践 - 基于Lateapexearlyspeed.Json.Schema - 基础1 -
    本系列旨在介绍JsonSchema的常见用法,以及.net实现库Lateapexearlyspeed.Json.Schema的使用这篇文章将介绍JsonSchema中的type关键字,和string类型的常见验证功能。用例基于.net的LateApexEarlySpeed.Json.Schemanugetpackage。这是新创建的一个JsonSchema在.net下的高性能......
  • 大型JAVAEE医疗 项目介绍
    一项目介绍1简介云医疗项目属于微医云医疗技术部组建的项目,目前微医全科已开业八家,专注于为个人、家庭和企业提供预防、诊断、治疗、康复,高端体检等一站式的健康维护和医疗服务,打造中国医疗界的"星巴克",未来,微医全科高品质的健康医疗服务基地将继续在全国各地开枝散叶。云医疗......