Web 服务器与应用服务器的区别是什么?
添加评论
分享
默认排序
按时间排序
8 个回答
匿名用户
严格意义上Web服务器只负责处理HTTP协议,只能发送静态页面的内容。而JSP,ASP,PHP等动态内容需要通过CGI、FastCGI、ISAPI等接口交给其他程序去处理。这个其他程序就是应用服务器。
比如Web服务器包括Nginx,Apache,IIS等。而应用服务器包括WebLogic,JBoss等。应用服务器一般也支持HTTP协议,因此界限没这么清晰。但是应用服务器的HTTP协议部分仅仅是支持,一般不会做特别优化,所以很少有见Tomcat直接暴露给外面,而是和Nginx、Apache等配合,只让Tomcat处理JSP和Servlet部分
比如Web服务器包括Nginx,Apache,IIS等。而应用服务器包括WebLogic,JBoss等。应用服务器一般也支持HTTP协议,因此界限没这么清晰。但是应用服务器的HTTP协议部分仅仅是支持,一般不会做特别优化,所以很少有见Tomcat直接暴露给外面,而是和Nginx、Apache等配合,只让Tomcat处理JSP和Servlet部分
虽然我也不是很清楚这个问题,但是上面的回答没有一个讲解的清晰明白的。
我来回答一些非web服务器的服务器模型吧,不对的地方还望指正。
1. 后台服务器----可以提供数据API服务的应用层软件。
2. 很多游戏的后台服务器,客户端直接连接到中心网关:一种情况,由网关将其连接导向相应的逻辑服务器,网关完成该任务之后就不再参与客户端和服务器的对话;另一种情况,网关负责转发客户端的请求给相应的服务器,同时也负责将服务器回复的内容转发给客户端。
可以认为,这种情况下,客户端是和服务器直接连接并会话的,这也是目前大多数有戏服务器采用的方式,通信协议也是TCP直接连接(可以在TCP层面上定义简单的自己的协议层),这种模型简单清晰,数据流(data flow)也很单纯。
3. 至于缓存,有,但是和web的缓存感觉很不一样,客户端的实时数据一般会保存在缓存里面,一般会是一些专用的缓存服务器,例如redis,memchache等。一些利用C,C++做的游戏服务器,可以自己申请内存来作为缓存,,对于这种自己申请内存做缓存管理的话,首先机制很复杂,其次,如果缓存的数据过多,那么风险越大,因为如果机器掉电或者宕机的话,数据就会丢失。如果不想数据丢失的话,那么就要一套更复杂的机制来保存这些在内存中的数据,例如:华为的电信服务器就是用的这种超复杂,超难维护的机制来保存内存中的数据,以便在机器宕机再恢复的时候,先加载原先内存中的数据。。。。。。。(高端啊)
4. 这些缓存的数据绝对会存在一种机制,不断地往持久化的数据库存储、更新,这种机制每家的游戏都不一样。
5. 这些缓存的目的只有一个:把被用到的数据先读到缓存里,然后从缓存里面取,客户端更新的内容先写入缓存,然后再由“机制”来不断的进行持久化(写入数据库)
这个缓存很像linux系统里面的内存管理。
6. 补充一点:有些数据的存储是不利用专门的缓存来完成的,直接操作sql,但是会在sql层面上做缓存,尤其是读多写少的数据。
对于web服务器,我也不明白,什么代理服务器,什么专用缓存服务器,什么web服务器,什么app服务器,哪位大神能把一个http请求,从浏览器发出到返回,中间所有完整的数据流讲解一下啊。。。。。。。。。。。
我来回答一些非web服务器的服务器模型吧,不对的地方还望指正。
1. 后台服务器----可以提供数据API服务的应用层软件。
2. 很多游戏的后台服务器,客户端直接连接到中心网关:一种情况,由网关将其连接导向相应的逻辑服务器,网关完成该任务之后就不再参与客户端和服务器的对话;另一种情况,网关负责转发客户端的请求给相应的服务器,同时也负责将服务器回复的内容转发给客户端。
可以认为,这种情况下,客户端是和服务器直接连接并会话的,这也是目前大多数有戏服务器采用的方式,通信协议也是TCP直接连接(可以在TCP层面上定义简单的自己的协议层),这种模型简单清晰,数据流(data flow)也很单纯。
3. 至于缓存,有,但是和web的缓存感觉很不一样,客户端的实时数据一般会保存在缓存里面,一般会是一些专用的缓存服务器,例如redis,memchache等。一些利用C,C++做的游戏服务器,可以自己申请内存来作为缓存,,对于这种自己申请内存做缓存管理的话,首先机制很复杂,其次,如果缓存的数据过多,那么风险越大,因为如果机器掉电或者宕机的话,数据就会丢失。如果不想数据丢失的话,那么就要一套更复杂的机制来保存这些在内存中的数据,例如:华为的电信服务器就是用的这种超复杂,超难维护的机制来保存内存中的数据,以便在机器宕机再恢复的时候,先加载原先内存中的数据。。。。。。。(高端啊)
4. 这些缓存的数据绝对会存在一种机制,不断地往持久化的数据库存储、更新,这种机制每家的游戏都不一样。
5. 这些缓存的目的只有一个:把被用到的数据先读到缓存里,然后从缓存里面取,客户端更新的内容先写入缓存,然后再由“机制”来不断的进行持久化(写入数据库)
这个缓存很像linux系统里面的内存管理。
6. 补充一点:有些数据的存储是不利用专门的缓存来完成的,直接操作sql,但是会在sql层面上做缓存,尤其是读多写少的数据。
对于web服务器,我也不明白,什么代理服务器,什么专用缓存服务器,什么web服务器,什么app服务器,哪位大神能把一个http请求,从浏览器发出到返回,中间所有完整的数据流讲解一下啊。。。。。。。。。。。