看过这部电影的人都老了。。。
很多人都知道我是一名后端开发底层小码农,平时打交道最多的就是服务器,而关于服务器,又有一堆名词,看起来好像是一个意思,仔细想想又好像不对。
不信?
先放三个名词「Web 服务器」、「HTTP 服务器」、「应用服务器」。这三种服务器有谁能现在立刻马上区分开么。
反正我是区分不开。这个问题要是扔到一堆程序员中间,指不定还能引发一场菜鸡争夺战。
虽然我不会,不会可以度娘啊,希望经常看我文章同学可以有我这种敢于承认自己菜的精神,没啥好丢人的,不会可以学,学完了下次就会了,总比不会装会死鸭子嘴硬,下次还不会要强。
经过我一翻度娘 + 整理后,基本上这三个名词解释有了:
「Web 服务器」它一般指的是网站服务器,可以向浏览器( PC 端或者移动端)等 Web 客户端提供服务,供请求数据或者下载数据。
而由于 Web 服务器主要支持的协议就是 HTTP 或者 HTTPS ,所以通常情况下 Web 服务器和 HTTP 服务器是等同的,这两种服务器之间是可以画上等号的。
而应用服务器是一个很大的概念,微软对它的定义是「我们把应用程序服务器定义为:作为服务器执行共享业务应用程序的底层的系统软件。 就像文件服务器为很多用户提供文件一样,应用程序服务器让多个用户可以同时使用应用程序(通常是客户创建的应用程序)」。
讲的通俗一点就是一种特定应用的承载容器,一般来讲,它需要有运行时环境的支持,比如说在 Java 领域,比较常用的应用服务器 Tomcat ,它就必须要 Java 的环境支持。
站在我的角度上,一名 Java 底层码农从业人员的角度上来看,「Web 服务器」、「HTTP 服务器」、「应用服务器」之间的界限是非常模糊的,因为同样一个 Tomcat 服务器,我叫它「Web 服务器」或者「HTTP 服务器」没有问题,叫它「应用服务器」也没有半毛钱问题。
常见的「Web 服务器」有 Nginx 、 Apache 、 IIS (这个做 .Net 的同学应该不陌生),常见的「应用服务器」软件包括 WebLogic、JBoss,前者更轻量级,后者更重量级。
静态服务和动态服务接下来科普另一个概念:「静态服务」和「动态服务」。
「静态服务」返回的是一些静态资源,比如图片、HTML 、 CSS 、 JavaScript 等资源,这些静态资源有一个显著的特点是在我们的电脑上,只要路径写对了,可以在浏览器里面直接访问。
比如我在电脑上新建一个文件,把后缀改成 html ,里面使用 html 随便写点内容:
<html> <h1>Hello World!</h1> </html>静态服务就是每个人访问,得到的内容都是一样的,而动态服务就比较牛逼了,能做到每个人访问,得到的内容都是不一样的。
最直接的例子就是经常用的淘宝京东这些网站,登录以后,访问自己账号的个人中心,肯定每个人得到的结果都是不一样的结果。
还有就是我的博客,最开始我的博客是使用 Hexo 搭建的静态博客,托管在腾讯云的文件服务上,后来开了一台云服务器,就换成了使用 WordPress 构建的动态博客。
NginxNginx 是一款轻量级的 Web 服务器 / 反向代理服务器及电子邮件( IMAP / POP3 )代理服务器。
不查还真不知道,原来 Nginx 还提供了 IMAP / POP3 / SMTP 服务,设置过邮箱客户端的同学对这三个名词应该不陌生。
关于 Nginx ,比较令人遗憾的一件事是,它的作者伊戈尔·赛索耶夫进了监狱。
Nginx 的特点是占有内存少,并发能力强,在同类型的网页服务器中表现较好,国内比较有名的公司,比如说百度、京东、新浪、网易、腾讯、淘宝等都在使用。
Nginx 现在用途最多的应该是作为反向代理服务器在使用,因为它的特性稳定、占用系统资源少、并发能力强,一般都直接放在直面用户的最外层应对用户流量。
用户的访问请求先落到 Nginx 上,由 Nginx 进行代理转发,负载均衡到后续的 Tomcat 应用服务器上,尽可能的提升系统的稳定性。
至于 Nginx 如何复杂均衡到后面的应用服务器上,这就是另一个问题了, Nginx 有很多种的负载均衡方案,这里我就不展开介绍了。
Nginx 是一个典型的静态服务,把图片等内容放在 Nginx 上,可以通过固定的链接直接访问。
不过现在通过 Lua 的加持,我们也可以在 Nginx 做一些动态服务才能做的事情,这就是大名鼎鼎的 OpenResty 。
至于 Nginx 安装或者是 OpenResty 的安装以及简单的使用,大家可以访问各自的官网查看,我就不演示介绍了(反正都不难)。
Tomcat在我的码农生涯中,使用最多的莫过于 Tomcat ,没有之一。
Tomcat 启动成功的话,访问它的首页,正常情况下是能看到一只猫的,虽然这只猫长得实在是有点抽象,但人家确实是只猫。
Tomcat 是 Apache 软件基金会( Apache Software Foundation )的 Jakarta 项目中的一个核心项目,由 Apache 、 Sun 和其他一些公司及个人共同开发而成。
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,这也是为什么它可以风靡全球的重要原因。