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