了解Web服务器的种类有哪些吗?各自有哪些优缺点?

了解Web服务器的种类有哪些吗?各自有哪些优缺点?,第1张

现在的Web服务器种类繁多,大家在做项目的时候可以根据自己的需求灵活选择。下面和大家分享一下有哪些Web服务器,以及它们的优缺点。

操作方法

01街头流氓

Apache又称httpd server,是目前应用最广泛的web服务器,应用于各种平台。当Apache首次推出时,它有许多缺陷。现在已经修复完善了。如果你是一名web服务器研究人员,边肖建议你必须学会使用Apache。

优点:紧凑、灵活、可扩展、稳定。

缺点:软件是开源的,所以很多漏洞可能很容易被发现。

02Nginx

Nginx是Linux平台下优秀的Web服务器。边肖以前使用过这种服务器,它大大提高了运行缓慢的应用程序的速度。

优点:压缩率高,负载均衡,速度快。

缺点:应用需要熟练的Linux命令。

03(同ImmigrationInspectors移民检查)

IIS是微软平台的Web服务器,是Windows平台的服务器。它和网文很匹配,初学者可以很快掌握。

优点:安装配置简单,简单易学。

缺点:平台适用性单一,安全性有待提高。

04中间件

WebLogic是专门用于企业开发的web服务器。一般搭配Java语言,使用上类似Apache。同时,它的架构也很优秀。

优点:安全性高,专业性强,耦合度低。

缺点:不容易掌握,需要一定的专业积累才能熟练应用。

05雄猫

Tomcat是许多Java学习者非常熟悉的web服务器。一般刚开始学习Java Web开发的人都会练习使用Tomcat作为服务器。它既有可视化的操作界面,又有命令语句,是一款不错的入门级服务器。

优点:简单易掌握,易于部署,应用广泛。

缺点:扩展性弱,可配置性弱,大并发能力弱。

06Lighttpd

Lighttpd是一个开源的web服务器,比较轻便,功能很多。目前使用率比较低,还没有普及。

优点:小巧精致,功能强大。

缺点:漏洞多,学习资源少。

07太阳

Sun是一个面向Solaris的web服务器,应用并不广泛,只应用于Sun公司相应的web产品。其他开发者也不能轻易使用这个服务器。

优点:针对性强,高并发,高速高效。

缺点:难掌握,适应性低。

08码头

Jetty是一个专用于Java Web的服务器。它用于运行Servlet程序,是众多服务器中最受限制的。边肖不建议你掌握这个服务器。

优点:内容简单,容易掌握。

1.IIS

IIS是英文Internet Information Server的缩写,译成中文就是"Internet信息服务"的意思。它是微软公司主推的服务器,最新的版本是Windows2008里面包含的IIS 7,IIS与Window Server完全集成在一起,因而用户能够利用Windows Server和NTFS(NT File System,NT的文件系统)内置的安全特性,建立强大,灵活而安全的Internet和Intranet站点。

2.ApacheApache

ApacheApache在世界上的排名是第一的,它可以运行在几乎所有广泛使用的计算机平台上。Apache源于NCSAhttpd服务器,经过多次修改,不仅简单、速度快、而且性能稳定,还可以用来做代理服务器。

3.Nginx

Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。

4.Zeus

Zeus是一个运行于Unix下的非常优秀的Web Server,据说性能超过Apache,是效率最高的Web Server之一。

5.Sun

Sun的Java系统Web服务器也就是以前的Sun ONE Web Server。主要出现在那些运行Sun的Solaris操作系统的关键任务级Web服务器上。它最新的版本号是6.1,可以支持x86版本Solaris,Red Hat Linux,HP-UX 11i, IBM AIX,甚至可以支持Windows,但它的大多数用户都选择了SPARC版本的Solaris操作系统。

Tomcat 或者 Jetty 就是一个“HTTP 服务器 + Servlet 容器”,我们也叫它们 Web 容器。

Spring 框架就是对 Servlet 的封装,Spring 应用本身就是一个 Servlet,而 Servlet 容器是管理和运行 Servlet 的。

Servlet 接口和 Servlet 容器这一整套规范叫作 Servlet 规范。Tomcat 和 Jetty 都按照 Servlet 规范的要求实现了 Servlet 容器。

Servlet 容器工作流程:

当客户请求某个资源时,HTTP 服务器会用一个 ServletRequest 对象把客户的请求信息封装起来,然后调用 Servlet 容器的 service 方法,Servlet 容器拿到请求后,根据请求的 URL 和 Servlet 的映射关系,找到相应的 Servlet,如果 Servlet 还没有被加载,就用反射机制创建这个 Servlet,并调用 Servlet 的 init 方法来完成初始化,接着调用 Servlet 的 service 方法来处理请求,把 ServletResponse 对象返回给 HTTP 服务器,HTTP 服务器会把响应发送给客户端。

Servlet 规范提供了两种扩展机制:Filter和Listener。

Tomcat 要实现 2 个核心功能:

因此 Tomcat 设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责内部处理。

1,连接器

连接器需要完成 3 个高内聚的功能:

因此 Tomcat 的设计者设计了 3 个组件来实现这 3 个功能,分别是 EndPoint、Processor 和 Adapter。

Endpoint 和 Processor 放在一起抽象成了 ProtocolHandler 组件,连接器用 ProtocolHandler 来处理网络连接和应用层协议。

EndPoint 是一个接口,它的抽象实现类 AbstractEndpoint 里面定义了两个内部类:Acceptor 和 SocketProcessor。其中 Acceptor 用于监听 Socket 连接请求。SocketProcessor 用于处理接收到的 Socket 请求。

EndPoint 接收到 Socket 连接后,生成一个 SocketProcessor 任务提交到线程池去处理,SocketProcessor 的 Run 方法会调用 Processor 组件去解析应用层协议,Processor 通过解析生成 Request 对象后,会调用 Adapter 的 Service 方法。

2,容器

Tomcat 设计了 4 种容器,分别是 Engine、Host、Context 和 Wrapper。这 4 种容器不是平行关系,而是父子关系。

Context 表示一个 Web 应用程序;Wrapper 表示一个 Servlet,一个 Web 应用程序中可能会有多个 Servlet;Host 代表的是一个虚拟主机,或者说一个站点,可以给 Tomcat 配置多个虚拟主机地址,而一个虚拟主机下可以部署多个 Web 应用程序;Engine 表示引擎,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine。

请求定位 Servlet 的过程:Tomcat 会创建一个 Service 组件和一个 Engine 容器组件,在 Engine 容器下创建两个 Host 子容器,在每个 Host 容器下创建两个 Context 子容器。由于一个 Web 应用通常有多个 Servlet,Tomcat 还会在每个 Context 容器里创建多个 Wrapper 子容器。

每一个容器都有一个 Pipeline 对象。

3,一个请求在 Tomcat 中流转的过程

4,startup.sh 启动 tomcat 的过程:

粉丝福利,需获取Tomcat、spring等架构资料


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/58724.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-27
下一篇2023-02-27

发表评论

登录后才能评论

评论列表(0条)

    保存