责编 | Carol

头图 | CSDN下载自视觉中国

先说一句哈,自从在 B 站开始刷视频后,我就以为要学的内容实在是太多了。
这篇“做事软件大扫盲”便是我看了羊哥的一期视频后有感而发的,比如说 Web 做事器、HTTP 做事器、运用做事器这三个观点,我是见过很多次,但如果你非要我说出它们之间的差异的话,我只好哑口无言。

jbossjsp乱码办事器软件年夜扫盲 RESTful API

还有,我自己用过的 Tomcat、Nginx、Apache、Jetty、Undertow,它们之间有什么优缺陷,嗯......连续哑口无言。
可能有很多小伙伴和我一样,用过,但详细的差别还真的说不上来,以是我打算借这个机会来和大家一起学习下。

(我便是课代表,我骄傲)

先来说 Web 做事器,它一样平常指的是网站做事器,可以向浏览器(PC端或者移动端)等 Web 客户端供应做事,供要求数据或者下载数据。
做事器利用 HTTP (超文本传输协议)和客户端浏览器进行通信,因此我们也把 Web 做事器称作为 HTTP 做事器。

再来说运用做事器,它是一种软件框架,供应一个运用程序运行的环境。
常日用于为运用程序供应安全、数据、事务支持、负载平衡大型分布式系统管理等做事。

在我看来,Web 做事器和运用做事器之间的界线已经非常模糊,后者更高等一点,就彷佛公司与企业这两个名词之间的差别。

常见的 Web 做事器软件包括 Nginx、Apache、IIS,常见的运用做事器软件包括 WebLogic、JBoss,前者更轻量级,后者更重量级。

接下来,我们就来唠唠常见的一些做事器软件。

01、Tomcat

就我的程序生涯来看,Tomcat 用的算是最多了,没有之一。
如果 Tomcat 安装成功的话,可以在本地的浏览器中访问 http://127.0.0.1:8080 来展示它的默认首页,见下图。

Tomcat 是由 Apache 软件基金会属下 Jakarta 项目开拓的 Servlet 容器,实现了对 Servlet 和 JavaServer Page(JSP)的支持,并供应了作为 Web 做事器的一些特有功能。

JSP 是由 Sun Microsystems 公司主导建立的一种动态网页技能标准。
JSP 可以相应客户端发送的要求,并根据要求内容动态地天生 HTML、XML 或其他格式文档的 Web 网页,然后返回给要求者。

JSP 以 Java 措辞作为脚本措辞,为用户的 HTTP 要求供应做事,并能与做事器上的其它 Java 程序共同处理繁芜的业务需求。
我是一名三线城市的 Java 程序员,免不了要开拓一些小型网站,这也便是为什么我用 Tomcat 最多的缘故原由。

02、Nginx

Nginx 是一款轻量级的 Web 做事器、也支持反向代理,由于它的内存占用少,启动极快,高并发能力强,以是在互联网项目中广泛运用。

关于 Nginx,比较令人遗憾的一件事是,它的作者伊戈尔·赛索耶夫进了监狱。

Nginx 在官方测试的结果中,能够支持五万个并行连接,海内比较有名的公司,比如说百度、京东、新浪、网易、腾讯、淘宝等都在利用。

不知道你有没有听过虚拟主机的观点,便是在 Web 做事里有一个独立的网站站点,这个站点对应独立的域名(也可能是IP 或端口),具有独立的程序及资源,可以独立地对外供应做事供用户访问。

虚拟主机有三种类型:基于域名的虚拟主机、基于端口的虚拟主机、基于 IP 的虚拟主机。

Nginx 可以利用一个 server{}标签来标识一个虚拟主机,一个 Web 做事里可以有多个虚拟主机标签对,即可以同时支持多个虚拟主机站点。
这一点,非常的实用。

03、Apache

最开始的时候,我以为 Apache 便是 Tomcat,傻傻分不清楚。
后来知道它们完备不同,logo 就不同(说什么大实话)。

Apache 一样平常是指 Apache HTTP Server,是 Apache 软件基金会(和 Tomcat 同属一家基金会,因此随意马虎稠浊)下的一个网页做事器软件。
由于其跨平台和安全性,被广泛利用,是最盛行的 Web 做事器软件之一。
它快速、可靠并且可通过大略的 API 扩展。

我是在做事器上安装 WordPress 的时候用到了 Apache,当时并不知道有 LAMP 的存在,以是安装的过程中吃了很多苦,关键是末了没有安装成功,大写的尴尬。

末了还是在青铜群里的一个群友的远程帮助下才完成安装的,他是搞 PHP 的。
LAMP 便是他见告我的,安装起来非常的傻瓜式,非常适宜我这种对命令行有抗拒生理的程序员。

LAMP 是指一组运行动态网站或者做事器的自由软件名称首字母缩写:

Linux,操作系统(一样平常做事器软件都安装在 Linux 上,性能极佳)

Apache,网页做事器(便是 Apache HTTP Server)

MariaDB 或 MySQL,数据库管理系统

PHP、Perl 或 Python,脚本措辞

这些软件合营起来利用的时候,极具活力,它的变体还有很多,其余一个比较有名的便是 LNMP,用 Nginx 代替 Apache。

04、Jetty

Jetty 和 Tomcat 有很多相似之处,比如说可以为 JSP 和 Servlet 供应运行时环境。
Jetty 是 Java 措辞编写的,它的 API 以一组 JAR 包的形式发布。

与 Tomcat 比较,Jetty 可以同时处理大量链接并且永劫光的保持这些链接,例如,一些 Web 谈天运用非常适宜用 Jetty 做事器,比如说淘宝的 Web 版旺旺。

Jetty 的架构比较大略,它有一个基本数据模型,这个数据模型便是 Handler,所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 便是帮我们管理这些 Handler 的。

05、Undertow

Undertow 是一个用 Java 编写的、灵巧的、高性能的 Web 做事器,供应基于 NIO 的壅塞和非壅塞 API。

Undertow 可以嵌入到运用程序中或独立运行,只需几行代码,非常随意马虎上手。
下面这段代码是官网供应的一个利用 Async IO 的大略 Hello World 做事器示例:

public class HelloWorldServer {public static void main(final String[] args) {Undertow server = Undertow.builder.addHttpListener(8080, \"大众localhost\"大众).setHandler(new HttpHandler {@Overridepublic void handleRequest(final HttpServerExchange exchange) throws Exception {exchange.getResponseHeaders.put(Headers.CONTENT_TYPE, \"大众text/plain\"大众);exchange.getResponseSender.send(\"大众Hello World\"大众);}}).build;server.start;}}

直接运行后,在浏览器中地址栏中输入 http://localhost:8080就可以访问到了。
是不是觉得非常轻巧?

如果有小伙伴利用过 JFinal 开拓过小型网站的话,对 Undertow 该当不会陌生,由于 JFinal 的默认容器已经切换到了 Undertow。

JFinal 是基于 Java 措辞的极速 WEB + ORM 框架,其核心设计目标是开拓迅速、代码量少、学习大略、功能强大、轻量级、易扩展、Restful。

06、企业级

至于其他的一些企业级做事器软件,我个人没有用过,就不细说了。

JBoss,红帽子收购过,后更名为 WildFly。

WebLogic,甲骨文出品。

WebSphere,IBM 公司出品。

相信小伙伴们看了出品方,就知道这些做事器软件足够的重量级,都是大佬,都是大佬。

声明:本文为作者投稿,版权归其个人所有。

☞Flash 已去世,Deno 当立?

☞OceanBase 十年:一群追梦人的发展史

☞2 年 6 个月 11 天,外包到阿里的修仙之路!
| 原力操持

☞做事器软件大扫盲!

☞绝悟之后再超神,腾讯30篇论文入选AI顶会ACL

☞中本聪并没有涌现,那原形是?