B/S网络架构从前端到后端都得到了简化,都基于统一的应用层协议HTTP来交互数据,与大多数传统的C/S互联网应用程序采用的长连接的交互模式不同,HTTP协议采用无状态的短连接的通信方式,通常情况下一次请求就完成了一次数据交互,通常也对应一个业务逻辑,然后这次通信连接就断开了,采用这种方式是为了能够同时服务跟多的用户,因为当前互联网应用每天都会处理上亿的用户请求,不可能每个访问一次后就一直保持住这个连接。
基于HTTP协议本身的特点,目前的B/S网络架构大都采用如图所示的架构设计,既要满足海量用户的访问请求,又要保持用户请求的快速响应所以现在的网络架构也越来越复杂。
当一个用户在浏览器输入www.taobao.com这个url时,将会发生很多操作。 首先它会请求dns把这个域名解析成对应的IP地址,然后根据这个对应的IP地址在互联网上找到对应的服务器,向这个服务器发送一个get请求,由这个服务器决定返回默认的数据资源给访问的用户。在服务器实际上还有很复杂的业务逻辑:服务器可能有很多台,到底指定哪台服务器来处理请求,这需要一个负载均衡设备来平均分配所有用户的请求;还有请求的数据是存储在分布式缓存还是一个静态文件中,或是在数据库里;当数据返回浏览器时,浏览器解析数据发现还有一些静态资源(如css,js或者图片)时又会发起另外的HTTP请求,而这些请求很可能会在cnd上,那么cdn服务器又会处理这个用户的请求,大体上一个用户请求会涉及这么多操作。每一个细节都会影响这个请求最终是否会成功。
不管网络架构如何变化,但是始终有一些不变的原则要遵循。
1.互联网上所有的资源都要用url来表示,url统一资源定位符,如果你要发布一个服务或一个资源到互联网上,让别人能够访问到,那么你首先必须要有一个世界独一无二的url。不要小看这个url,它几乎包含了整个互联网的架构精髓。
2.必须基于http协议与服务端交互,不管你要访问的是国内的还是国外的数据,是文本数据还是媒体流,都必须按照套路出牌,也就都得采用统一打招呼的方式这样人家才明白你要做什么。
3.数据展示必须在浏览器中进行,当你获取到数据资源后必须在浏览器上才能恢复它的容貌。
摘自《深入分析Java web内幕》