客户端|Web 服务器与应用服务器的区别是什么?

客户端|Web 服务器与应用服务器的区别是什么?

文章图片

客户端|Web 服务器与应用服务器的区别是什么?

文章图片


“web服务器”负责响应来自用户端比如浏览器的请求 , 并向客户端返回静态资源的网页 , 比如图片 , 视频 , 网盘上分享的各种文件下载等 。 Web 服务器只处理静态的文件而不处理动态内容 , 仅接受和完成HTTP超文本传输协议的请求 。 目前流行的用来搭建Web服务可选软件有Apache , Nginx及微软的IIS等 。
应用服务器为客户端提供对业务逻辑的访问 。 这种服务器根据客户端的请求 , 将数据转换为动态内容 。 比如上面打开个人微博的例子 , 需要应用服务器执行程序 , 从数据库中找到用户的最新微博信息再把信息转换成HTML网页显示在客户面前 。 通常满足一个用户的需求还需要数据库来支持 。

简而言之 , 应用服务器处理业务逻辑 , web服务器则主要是让客户可以通过浏览器进行访问 , 处理HTML文件 , web服务器通常比应用服务器简单 。
WEB服务器:Apache、IIS、Nginx(也是反向代理服务器)Web服务器通常只需支持HTTP协议 , 单纯处理页面用的
应用服务器:Tomcat、Weblogic、Jboss , WildFly(JBossAS 更名后的社区版) 。 应用服务器提供的是客户端可以调用的方法 , 需要支持EJB JNDI JMX 等J2EE API 。比如 , Apache属于Web服务器 , Weblogic属于应用服务器 。不过 , 现在大多数应用服务器也包含了Web服务器的功能

应用服务器的搭建很多时候依赖于应用程序的开发语言 , 各种编程语言生态下对应不同的软件 , 比如使用java语言开发的项目 通常选择tomcat 或JBoss等作为程序运行的应用服务器 , 而使用python语言开发web应用一般会选择 django等Python框架下的软件 , 来作为它的应用服务器 。
很多游戏的后台服务器 , 客户端直接连接到中心网关:一种情况 , 由中心网关将其连接导向相应的逻辑服务器 , 网关完成该任务之后就不再参与客户端和服务器的对话;另一种情况 , 网关负责转发客户端的请求给相应的服务器 , 同时也负责将服务器回复的内容转发给客户端 。
可以认为 , 这种情况下 , 客户端是和服务器直接连接并会话的 , 这也是目前大多数游戏服务器采用的方式 , 通信协议也是TCP直接连接(可以在TCP层面上定义简单的自己的协议层) , 这种模型简单清晰 , 数据流(data flow)也很单纯 。

至于缓存 , 有 , 但是和web的缓存感觉很不一样 , 客户端的实时数据一般会保存在缓存里面 , 一般会是一些专用的缓存服务器 , 例如redis , memchache等 。 一些利用CC++做的游戏服务器 , 可以自己申请内存来作为缓存 , 对于这种自己申请内存做缓存管理的话 , 首先机制很复杂 ,
其次 , 如果缓存的数据过多 , 那么风险越大 , 因为如果机器掉电或者宕机的话 , 数据就会丢失 。 如果不想数据丢失的话 , 那么就要一套更复杂的机制来保存这些在内存中的数据
【客户端|Web 服务器与应用服务器的区别是什么?】
当 Web 浏览器成为主要的客户端时 , 应用服务器和 Web 服务器之间的界限变得模糊 。大多数 Web 服务器都有支持动态内容生成的脚本语言(ASP、JSP、PHP等)插件 。
例如 , 如果我们将 .NET 插件添加到 IIS 环境中 , 或者把PHP插件添加到Apache中 , 我们就可以在 Web 服务器端为客户端提供动态内容了 。 由于技术的重叠 , 最流行的服务器通常是这两种类型的混合 。 从而可以确保最佳系统速度和用户体验 。