服务器软件
1. 前提
之前学习过Linux系统,平时所谓的服务器就是对应的服务主机装上不同的服务软件并且放在公网上被大家访问,而练习时候的主机也可以被称为内网服务器。就像我的主机假设开启了一个ftp服务,那么我的电脑就可以被称为一台ftp服务器。所对应的,Java是一门后端语言,写的大部分都是web程序,就需要一些web(http)服务器来提供服务,让大家能访问写到的javaWEB程序。
一直以来,对服务器软件没能有个较好较清晰的概念,尤其是软件层面的概念,比如:Web服务器、HTTP服务器、应用服务器等等,还有对诸如一些像Tomcat、Nginx、IIS、Apache、……等具体服务器软件比较混淆,借着本次机会,本人也好好缕一缕思路。
2. 按照提供的服务类型分类
- 静态服务:主要提供静态资源,不同用户访问到的资源相同。比如静态文件:图片、css、js等
- 动态服务:提供动态服务,不同用户访问到的资源不同。比如熟知的Tomcat提供的容器服务。
3. 服务器的几个叫法
- web服务器:广义上来说,就是响应用户的需求,提供服务,当下所有的服务器软件都可以称之为web服务器软件
- HTTP服务器(静态服务):使用HTTP协议传输资源,提供服务
- 应用服务器(动态服务):一个特定应用的承载容器
4. 常见的轻量级服务器软件
- 1、Nginx:典型的静态服务器,可做反向代理、负载均衡,一般放在最前面直面用户,和后端Tomcat打配合;纯C写的,性能贼高、内存消耗极少、稳定性也相当好,互联网公司重度使用
- 2、Tengine:阿里出品,基于Nginx服务器做的改造(加强和封装),对大流量场景做了很多高级功能,性能、稳定性优秀
- 3、Apache http server:也是静态服务器,但是不如Nginx
- 3、IIS:微软开发,只能用在Windows下,具有应用服务器能力的http服务器
- 4、Tomcat:Apache出品,典型的应用服务器软件,符合Servlet标准的应用容器,也可以提供http服务,但一般不会作为http服务器;是Spring Boot框架默认的内置服务器
- 5、Jetty:跟Tomcat是一个性质的东西,符合Servlet标准的应用容器,也是Spring Boot框架支持的服务器,但不是默认的
- 6、Undertow:红帽子出品,跟Tomcat、Jetty一样也是Spring Boot框架支持的服务器,但不是默认的;高并发时性能优于Tomcat、Jetty
5. 几款商用重量级的服务器软件:
- 1、JBoss(从8版开始更名为WildFly):不仅是Servlet应用容器,更是EJB的应用容器,整套JavaEE框架部署的解决方案
- 2、WebLogic:Oracle公司出品,用于部署企业级JavaEE应用,全能型,几乎支持JavaEE所有的应用规范
- 3、WebSphere:IBM公司出品,支持更多JavaEE的应用规范的综合应用服务器
nginx服务器采用master和work进程两个大的进程分类。其中master进程负责管理work进程,而work进程负责处理具体的网络事务 client。整体为一个异步非阻塞的、异步的处理模式,理论上一个nginx能抗住上万并发,一台主机的端口才65536个端口。
Master负责管理worker进程,worker进程负责处理网络事件。整个框架被设计为一种依赖事件驱动、异步、非阻塞的模式。