傅榮鑫,李長云,李俊峰



摘要:隨著Web應(yīng)用的不斷深化,越來越多的初學(xué)者加入了Web開發(fā)的隊伍,為了提升Web系統(tǒng)的工作效率,基于緩存技術(shù)的服務(wù)器集群部署是最為關(guān)鍵的環(huán)節(jié)之一。該文首先從基本的Web服務(wù)入手,闡述Web的工作原理和基本的系統(tǒng)架構(gòu),伴隨著Web用戶激增所帶來的系統(tǒng)問題,研究“一體化的應(yīng)用服務(wù)器體系->分離的應(yīng)用服務(wù)器體系->分布式服務(wù)器集群的應(yīng)用服務(wù)體系”的服務(wù)器集群演化路徑,并分階段給出具體的部署策略,為 Web服務(wù)提供商和開發(fā)者提供有價值的參考和借鑒。
關(guān)鍵詞:分布式服務(wù)器集群;系統(tǒng)架構(gòu);消息隊列服務(wù)
中圖分類號:TP393? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)20-0011-03
1 背景
在信息時代,“Web(World Wide Web,WWW)”,中文稱為“萬維網(wǎng)”,已經(jīng)成為人們共享網(wǎng)絡(luò)數(shù)據(jù)信息的最便捷工具。伴隨“Web”應(yīng)用的不斷深化和人們需求的不斷提高,“Web”技術(shù)框架支撐了“Web”的應(yīng)用開發(fā),如組件技術(shù)與開發(fā)建模技術(shù)的引入都提高了軟件開發(fā)效率。然而,對于初學(xué)者而言,這些復(fù)雜的技術(shù)架構(gòu)讓她們眼花繚亂,因此,分析“Web”的工作原理,使程序員理解某種開發(fā)技術(shù)的要點,對于提高程序員“Web”開發(fā)水平具有現(xiàn)實意義。
2 “Web”應(yīng)用的工作原理
“Web”系統(tǒng)的組成包括:客戶機、服務(wù)器和網(wǎng)絡(luò)協(xié)議。“Web”應(yīng)用的目的是在網(wǎng)絡(luò)環(huán)境下共享信息,因此,從用戶角度看,“Web”的工作過程包括:“輸入URL”->“瀏覽器(客戶機)向服務(wù)器發(fā)起了一個“請求”,這是“TCP”的第一次握手->之后,當服務(wù)器接收到客戶機發(fā)來的“請求”后,會以序列碼的方式做出應(yīng)答,這是“TCP”鏈接的第二次握手->當服務(wù)器的應(yīng)答傳回瀏覽器之后,瀏覽器再以序列號的方式給服務(wù)器一個應(yīng)答,這時“TCP”鏈接的第三次握手->最后,當三次握手都順利完成,服務(wù)器才將網(wǎng)頁下載到瀏覽器,這時頁面才能展現(xiàn)在我們面前。這四個步驟的工作過程如下。
1)用戶輸入“URL”。在網(wǎng)上共享信息,首先要知道信息文件在網(wǎng)絡(luò)環(huán)境下所處的位置,這個位置被稱為“統(tǒng)一資源定位器”,就是URL(Uniform Resource Locator)。它是一款瀏覽器的地址欄,都是用來輸入統(tǒng)一資源定位符的。這個定位符由幾個重要的部分組成:傳輸協(xié)議、主機域名或者IP地址、文件目錄及文件名等。
2)服務(wù)器的域名解析。在統(tǒng)一資源定位符“URL”中包含了主機域名,在“TCP/IP”網(wǎng)絡(luò)中,域名要轉(zhuǎn)換成“IP”地址才能正常工作。域名解析就是完成“域名”轉(zhuǎn)換成“IP地址”任務(wù)的,解析的結(jié)果是形成域名和“IP”地址對照表。在上網(wǎng)的客戶機上,存在一個“hosts”文件,用于緩存網(wǎng)址映射關(guān)系;如果用戶訪問的服務(wù)器域名與“IP”地址映射表不在“hosts”文件里,客戶機首先會找“TCP/IP”配置表中設(shè)置的首選“DNS”服務(wù)器(被稱為本地“DNS”服務(wù)器,該服務(wù)器也緩存了曾經(jīng)解析過的域名和“IP”地址映射表),去解析“IP”地址,如待查域名不由本地“DNS”服務(wù)器區(qū)域解析,但是緩存表里存在,依然可以使用,但是不能確保一定正確; 在域名解析的過程中,一旦本地域名服務(wù)器的解析失敗,并且在緩存表里面也找不到要解析的域名與IP地址的對應(yīng)數(shù)據(jù),這時,如果本地域名解析服務(wù)器里面設(shè)置了轉(zhuǎn)發(fā)器,它就會將瀏覽器的域名解析請求發(fā)送到“根”域名服務(wù)器中,在互聯(lián)網(wǎng)中,只有一臺主根域名服務(wù)器,但是它有十套映像根域名服務(wù)器,八臺都在美國本土,一臺在歐洲的瑞典,一臺在亞洲的日本。當“根域名”解析服務(wù)器收到來自某個本地域名服務(wù)器的域名解析請求之后,它就會從這個請求里面攜帶的域名結(jié)構(gòu)(也就是頂級域的種類)來判斷交給哪一級的頂級域名服務(wù)器來解析這個域名,并為之授權(quán),當確定了由哪一個頂級域名服務(wù)器來進行解析之后,就會給本地域名解析服務(wù)器返回這個頂級域名服務(wù)器的“IP”地址。當本地域名解析服務(wù)器收到這個“根”域名服務(wù)器所指向的頂級域名服務(wù)器的“IP”地址后,就會利用該“IP”地址向這個頂級域名服務(wù)器發(fā)出域名解析的請求,還有一種情況就是,這個頂級域名服務(wù)器也無法解析這個目的域名,它就會將該解析任務(wù)傳給其下一級的域名解析服務(wù)器,重復(fù)以上過程,就一定能夠找到所需要的“IP”地址,除非該域名是不存在的。
3)建立“TCP”連接。找到“IP”地址以后,客戶機和服務(wù)器之間建立起“TCP”鏈接,每一次“TCP”連接都需要三個階段[1]:連接建立、數(shù)據(jù)傳送和連接釋放。每次發(fā)送鏈接被稱為一次握手,“TCP”鏈接需要三次握手方能完成。第一次握手,當客戶機向服務(wù)器發(fā)起請求連接時,客戶端會發(fā)送同步序列號“SYN”到服務(wù)器,在這里我們可以設(shè)“SYN”為m,等待服務(wù)器確認,這時客戶端狀態(tài)為“SYN_SENT”;第二次握手,當服務(wù)器收到客戶機發(fā)送的“SYN”后,服務(wù)器要做的是確認客戶端發(fā)送過來的“SYN”,在這里服務(wù)器發(fā)送確認包“ACK”,這里的“ACK”為m+1,意思是說“我收到了你發(fā)送的SYN了”,同時,服務(wù)器也會向客戶端發(fā)送一個“SYN”包,這里我們設(shè)“SYN”為n。這時服務(wù)器的狀態(tài)為“SYN_RECV”。一句話,服務(wù)器端發(fā)送“SYN”和“ACK”兩個包;在第三次握手的時候,每當“客戶機”進程收到了來自“服務(wù)器”進程的序列號“SYN”和確認包“ACK”之后,它也要向“服務(wù)器”進程發(fā)會一個確認包“ACK”,表明“我也收到你發(fā)送的“SYN”了,我這就給你發(fā)個確認過去,然后我們即能合體了”,這里的“ACK”為“n+1”,當三次握手都順利對接上之后,“客戶機”進程和“服務(wù)器”進程都將設(shè)置成“ESTABLISH”的狀態(tài)標志,表明這次的TCP連接已經(jīng)大功告成。在三次握手中,客戶端和服務(wù)器端都發(fā)送兩個包“SYN”和“ACK”,只不過服務(wù)器端的兩個包是一次性發(fā)過來的,客戶端的兩個包是分兩次發(fā)送的。