傅荣鑫,李长云,李俊峰
摘要:随着Web应用的不断深化,越来越多的初学者加入了Web开发的队伍,为了提升Web系统的工作效率,基于缓存技术的服务器集群部署是最为关键的环节之一。该文首先从基本的Web服务入手,阐述Web的工作原理和基本的系统架构,伴随着Web用户激增所带来的系统问题,研究“一体化的应用服务器体系->分离的应用服务器体系->分布式服务器集群的应用服务体系”的服务器集群演化路径,并分阶段给出具体的部署策略,为 Web服务提供商和开发者提供有价值的参考和借鉴。
关键词:分布式服务器集群;系统架构;消息队列服务
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2021)20-0011-03
1 背景
在信息时代,“Web(World Wide Web,WWW)”,中文称为“万维网”,已经成为人们共享网络数据信息的最便捷工具。伴随“Web”应用的不断深化和人们需求的不断提高,“Web”技术框架支撑了“Web”的应用开发,如组件技术与开发建模技术的引入都提高了软件开发效率。然而,对于初学者而言,这些复杂的技术架构让她们眼花缭乱,因此,分析“Web”的工作原理,使程序员理解某种开发技术的要点,对于提高程序员“Web”开发水平具有现实意义。
2 “Web”应用的工作原理
“Web”系统的组成包括:客户机、服务器和网络协议。“Web”应用的目的是在网络环境下共享信息,因此,从用户角度看,“Web”的工作过程包括:“输入URL”->“浏览器(客户机)向服务器发起了一个“请求”,这是“TCP”的第一次握手->之后,当服务器接收到客户机发来的“请求”后,会以序列码的方式做出应答,这是“TCP”链接的第二次握手->当服务器的应答传回浏览器之后,浏览器再以序列号的方式给服务器一个应答,这时“TCP”链接的第三次握手->最后,当三次握手都顺利完成,服务器才将网页下载到浏览器,这时页面才能展现在我们面前。这四个步骤的工作过程如下。
1)用户输入“URL”。在网上共享信息,首先要知道信息文件在网络环境下所处的位置,这个位置被称为“统一资源定位器”,就是URL(Uniform Resource Locator)。它是一款浏览器的地址栏,都是用来输入统一资源定位符的。这个定位符由几个重要的部分组成:传输协议、主机域名或者IP地址、文件目录及文件名等。
2)服务器的域名解析。在统一资源定位符“URL”中包含了主机域名,在“TCP/IP”网络中,域名要转换成“IP”地址才能正常工作。域名解析就是完成“域名”转换成“IP地址”任务的,解析的结果是形成域名和“IP”地址对照表。在上网的客户机上,存在一个“hosts”文件,用于缓存网址映射关系;如果用户访问的服务器域名与“IP”地址映射表不在“hosts”文件里,客户机首先会找“TCP/IP”配置表中设置的首选“DNS”服务器(被称为本地“DNS”服务器,该服务器也缓存了曾经解析过的域名和“IP”地址映射表),去解析“IP”地址,如待查域名不由本地“DNS”服务器区域解析,但是缓存表里存在,依然可以使用,但是不能确保一定正确; 在域名解析的过程中,一旦本地域名服务器的解析失败,并且在缓存表里面也找不到要解析的域名与IP地址的对应数据,这时,如果本地域名解析服务器里面设置了转发器,它就会将浏览器的域名解析请求发送到“根”域名服务器中,在互联网中,只有一台主根域名服务器,但是它有十套映像根域名服务器,八台都在美国本土,一台在欧洲的瑞典,一台在亚洲的日本。当“根域名”解析服务器收到来自某个本地域名服务器的域名解析请求之后,它就会从这个请求里面携带的域名结构(也就是顶级域的种类)来判断交给哪一级的顶级域名服务器来解析这个域名,并为之授权,当确定了由哪一个顶级域名服务器来进行解析之后,就会给本地域名解析服务器返回这个顶级域名服务器的“IP”地址。当本地域名解析服务器收到这个“根”域名服务器所指向的顶级域名服务器的“IP”地址后,就会利用该“IP”地址向这个顶级域名服务器发出域名解析的请求,还有一种情况就是,这个顶级域名服务器也无法解析这个目的域名,它就会将该解析任务传给其下一级的域名解析服务器,重复以上过程,就一定能够找到所需要的“IP”地址,除非該域名是不存在的。
3)建立“TCP”连接。找到“IP”地址以后,客户机和服务器之间建立起“TCP”链接,每一次“TCP”连接都需要三个阶段[1]:连接建立、数据传送和连接释放。每次发送链接被称为一次握手,“TCP”链接需要三次握手方能完成。第一次握手,当客户机向服务器发起请求连接时,客户端会发送同步序列号“SYN”到服务器,在这里我们可以设“SYN”为m,等待服务器确认,这时客户端状态为“SYN_SENT”;第二次握手,当服务器收到客户机发送的“SYN”后,服务器要做的是确认客户端发送过来的“SYN”,在这里服务器发送确认包“ACK”,这里的“ACK”为m+1,意思是说“我收到了你发送的SYN了”,同时,服务器也会向客户端发送一个“SYN”包,这里我们设“SYN”为n。这时服务器的状态为“SYN_RECV”。一句话,服务器端发送“SYN”和“ACK”两个包;在第三次握手的时候,每当“客户机”进程收到了来自“服务器”进程的序列号“SYN”和确认包“ACK”之后,它也要向“服务器”进程发会一个确认包“ACK”,表明“我也收到你发送的“SYN”了,我这就给你发个确认过去,然后我们即能合体了”,这里的“ACK”为“n+1”,当三次握手都顺利对接上之后,“客户机”进程和“服务器”进程都将设置成“ESTABLISH”的状态标志,表明这次的TCP连接已经大功告成。在三次握手中,客户端和服务器端都发送两个包“SYN”和“ACK”,只不过服务器端的两个包是一次性发过来的,客户端的两个包是分两次发送的。