通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

Web应用开发中常见的HTTP Server和技术组件有哪些

Web应用开发中常见的HTTP Server有:1、Apache;2、Nginx。Apache是世界使用排名名列前茅的Web服务器软件。技术组件有:1、Web框架;2、数据库;3、缓存系统;4、消息队列。Web框架提供工具和库来实现简单、常见的开发任务。

一、Web应用开发中常见的HTTP Server有哪些

1、Apache

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名名列前茅的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。

Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

特性:

  • 支持最新的HTTP/1.1通信协议
  • 拥有简单而强有力的基于文件的配置过程
  • 支持通用网关接口
  • 支持基于IP和基于域名的虚拟主机
  • 支持多种方式的HTTP认证
  • 集成Perl处理模块
  • 集成代理服务器模块
  • 支持实时监视服务器状态和定制服务器日志
  • 支持服务器端包含指令(SSI)
  • 支持安全Socket层(SSL)
  • 提供用户会话过程的跟踪
  • 支持FastCGI
  • 通过第三方模块可以支持JavaServlets

2、Nginx

Nginx是一款轻量级的HTTP WEB服务器、反向代理web服务器、电子邮件代理服务器(MAP/POP3/SMTP)。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,于2004年10月4日发布了名列前茅版,其源代码以类BSD许可证的形式发布。其特点是占内存少、并发能力强、运行稳定、功能集丰富、配置简单。

  • 作为Web服务器:Nginx处理静态文件、索引文件,自动索引的效率非常高。
  • 作为代理服务器:Nginx可以实现无缓存的反向代理加速,提高网站运行速度。
  • 作为负载均衡服务器:Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡。

优势:

  • 在性能方面,Nginx是专门为性能优化而开发的,在实现上非常注重效率。它采用内核Poll模型(epoll and kqueue),可以支持更多的并发连接,最大可以支持对50 000个并发连接数的响应,而且只占用很低的内存资源。
  • 在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持10 000个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的。
  • 在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7×24小时不间断地运行。

二、Web应用开发中常见的技术组件有哪些

1、Web框架

服务器端框架 (亦称 “web 应用框架”) 使编写、维护和扩展 web 应用更加容易。它们提供工具和库来实现简单、常见的开发任务,包括 路由处理,数据库交互,会话支持和用户验证,格式化输出 (e.g. HTML, JSON, XML), 提高安全性应对网络攻击。

功能:

  • 直接处理 HTTP 请求和响应
  • 将请求路由到相关的 handler 中
  • 使从请求中获得数据变得简单
  • 抽象和简化数据库接口
  • 渲染数据

如何选择一个 web 框架:

  • 学习代价:学习一个 web 框架取决于你对底层语言的熟悉程度,它的 API 的一致性与否,文档质量,社区的体量和活跃程度。如果你完全没有编程基础的话,那就考虑 Django 吧(它是基于上面几条标准来看最容易学习的了)。如果你已经成为开发团队的一部分,而那个开发团队对某一种语言或者某一个框架有着很重要的开发经历,那么就坚持相关框架。
  • 效率:效率是指一旦你熟悉某一个框架之后,你能够多块地创造一个新功能的衡量方式,包括编写和维护代码的代价(因为当前面的功能崩掉之后,你没法编写新的功能)。影响效率的大多数因素和学习代价是类似的——比如,文档,社区,编程经历等等。
  • 框架/编程语言的表现:通常来讲,“速度”并不是选择中最重要的因素,甚至,相对而言,运行速度很缓慢的 Python 对于一个在中等硬盘上跑的中等大小的网站已经足够了。其他语言(C++/Javascript)的明显的速度优势很有可能被学习和维护的代价给抵消了。
  • 缓存支持:当你的网站之间变得越来越成功之后,你可能会发现它已经无法妥善处理它收到的大量请求了。在这个时候,你可能会开始考虑添加缓存支持。缓存是一种优化,是指你将全部的或者大部分的网站请求保存起来,那么在后继请求中就不需要重新计算了。返回一个缓存请求比重新计算一次要快得多。缓存可以被植入你的代码里面,或者是服务器中(参见反向代理)。web 框架对于定义可缓存内容有着不同程度的支持。
  • 可扩展性:一旦你的网站非常成功的时候,你会发现缓存的好处已经所剩无几了,甚至垂直容量到达了极限(将程序运行在更加有力的硬件上面)。在这个时候,你可能需要水平扩展(将你的网站分散到好几个服务器和数据库上来加载)或者“地理上地”扩展,因为你的一些客户距离你的服务器很远。你所选择的框架将会影响到扩展你的网站的难易程度。
  • 网络安全:一些 web 框架对于解决常见的网络攻击提供更好的支持。例如,Django 消除所有用户从 HTML 输入的东西。因此从用户端输入的 Javascript 不会被运行。其他框架也提供相似的功能,但是通常在默认情况下是不直接开启的。

2、数据库

数据库技术诞生于上个世纪60年代,是计算机科学的一个重要分支。当时计算机开始广泛地应用于数据管理,对数据的共享提出了越来越高的要求。传统的文件系统已经不能满足人们的需要。能够统一管理和共享数据的数据库管理系统(DBMS, Database Management System)应运而生。

功能:

  • 数据定义功能:提供数据定义语言(DDL,Data Definition Language),用以定义数据库中的数据对象
  • 数据操纵功能:提供数据操纵语言(DML,Data Manipulation Language),用以实现对数据的基本操作(查询、插入、删除和修改)
  • 数据库的运行管理和维护等:如数据的安全、完整性、并发和恢复等控制

发展阶段:

  • 层次数据库与网状数据库
  • 关系数据库
  • 非关系型数据库

目前,非关系型数据库正在蓬勃的发展中,比如MongoDB、Redis、BigTable等非关系型数据库已经被很多领域广泛的应用。

关系型数据库依然是Web开发中的主流数据库。关系型数据库,是指使用关系模型来组织数据,使用集合代数等数学概念和方法来处理数据的一种数据库。在关系型数据库中,现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。不过我们这里先不深入其数学原理,我们以更形象的方式来理解关系型数据库的几个基本概念。

3、缓存系统

客户端浏览器在显示一个完整网页前,需要去服务器获取一些必要的数据(js,css,image等),因为浏览器的数据处理和渲染速度很快,而通过网络传输的方式去服务器取数据的过程却很慢(虽然现在网速还算比较快,下载1M的文件都用不了1s,但相较于处理器,这就非常慢了),所以页面显示出来前都有一段时间的白屏,如果每次打开相同的页面,获取相同的资源都要等待一段时间的白屏,作为用户,岂能忍。如果把已经获取过的资源存在本地,下次用的时候就不用从服务器去取了,这样速度就要快很多了。这种机制便是web缓存。

优点:

  • 减轻服务器压力
  • 减少数据传输
  • 节省网络带宽和流量
  • 缩短页面加载时间
  • 提升用户体验

分类:

  • 数据库缓存
  • 服务器缓存
  • 客户端缓存

4、消息队列

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。

应用场景:

  • 异步处理:用户注册后,需要发注册邮件和注册短信。传统的做法有两种:串行的方式,并行方式。
  • 应用解耦:用户下单后,订单系统需要通知库存系统。传统的做法是,订单系统调用库存系统的接口。
  • 流量削锋:流量削锋也是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。
  • 日志处理:日志处理是指将消息队列用在日志处理中,比如Kafka的应用,解决大量日志传输的问题。

延伸阅读1:什么是web应用

WEB应用是多个Web资源的集合,是供浏览器访问的程序,也称为Web应用程序,一个Web应用由多个静态web资源和动态web资源组成。目前流行的应用软件架构模式有两种:C/S、B/S。Web应用程序则属于B/S结构的软件系统。

相关文章