一文看懂Web服务器、应用服务器、Web容器、反向代理服务器
监听TCP请求,这里的请求是指报文内容是某应用层协议(比如HTTP,FTP,EMAIL等应用层协议)的请求。至于这里是否会单独产生一个线程来开始处理,这个由服务器自己决定,目前最流行的是先入消息队列然后异步处理,这样能极大提高代理的吞吐量和稳定性。 匹配被代理服务器 代理服务器根据一个表(存放外网url和内网服务器的对应关系,通常需人工进行设置),如果匹配到则继续处理,否则依据外网协议返回错误信息,比如HTTP协议这返回404。 应用负载均衡策略 如果比较大型的互联网应用,为了整体系统稳定性,解决单点问题,需要根据自定义策略合理的转发报文给被代理服务器。简单的策略是哈希分发或者随机分发,一般可以由用户进行配置和选择。 预处理 这里依据协商好的外网应用协议进行解密,安全,会话,解压等处理。 新生成网络报文 这里依据协商好的内网应用协议生成网络报文,这里可能会进行加密,安全,会话,压缩等处理。 转发给被代理服务器 把新生成的网络报文发送给内网服务器(可能是否Web服务器,Ftp服务器,邮件服务器)。 接受网络报文 接受内网服务器反馈的网络报文。 预处理 这里依据协商好的外网应用协议进行加密,安全,会话,压缩等处理。 资源输出模块 这时生成满足外网应用协议要求的报文,并发送到外网连接的另一端(用户代理)。 常用的反向代理服务器 它们的名字您一定记得:Ngnix,IIS,Apache。 总结 从概念上讲:Web服务器是提供WWW服务的程序;Web容器是提供给开发者的框架;Web应用程序服务器内容丰富得多,既可用各厂商通常遵循一定的工业标准并自定义扩展功能而成,也可以利用开源组件轻量级拼装打造;反向代理服务器在企业级应用中表现突出,具有解决集中式安全,负载均衡等等优点。如今这四个概念的边界越来模糊,看看这个表就知道了:
关于Kerstrel是否web容器,有两种观点: 1. 由于Kerstrel不提供编写应用的框架,所以它不是容器;asp.net core才是容器,因为它提供了开发应用的框架并提供web应用(MVC,Web API)运行环境。 2. Kerstrel提供了运行环境。 非常欢迎大家提出自己的有力观点,帮助我们清晰化这个asp.net core容器概念。 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |