国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于虛擬主機的web服務器及用戶獲取訪問數據的方法

      文檔序號:81433閱讀:334來源:國知局
      專利名稱:一種基于虛擬主機的web服務器及用戶獲取訪問數據的方法
      技術領域
      本發(fā)明涉及環(huán)球網(web)服務器技術,特別是指一種基于虛擬主機的web服務器及用戶獲取訪問數據的方法。
      背景技術
      隨著互聯(lián)網的不斷發(fā)展,網絡逐漸融入到人們的生活中,各種各樣的互聯(lián)網業(yè)務及應用層出不窮,人們已逐漸習慣于在門戶網站中發(fā)布和獲取各種資訊信息,習慣于在電子商務站點上進行交易等等。這樣一來,各個門戶網站和電子商務站點中的web服務器的地位就越來越重要,web服務器的性能、容量及可擴展性決定著各個網站和站點提供服務的質量和速度。
      目前,比較常用的web服務器有Apache服務器,這種web服務器的框架主要為進程池模型,并采用進程預創(chuàng)建(pre-fork)方式。具體來說,如圖1所示,Apache服務器在進程池中設置有很多進程httpd,分別用于執(zhí)行不同的業(yè)務、實現不同的功能。其中,有一個進程為主管理(manager)進程httpd,負責創(chuàng)建、調度和管理一個以上工作者(worker)進程httpd,這里工作者進程httpd也可稱為子進程。通常,進程池中的主管理進程會預先創(chuàng)建多個工作者進程httpd,每個工作者進程httpd競爭許可(accept),接收并處理用戶發(fā)送的http請求;主管理進程通過監(jiān)控進程池中各子進程的負載情況,動態(tài)增加或減少子進程的個數。對于用戶提交的特定業(yè)務請求如執(zhí)行CGI程序等,工作者進程httpd將進一步創(chuàng)建新的業(yè)務處理(process)進程進行處理。
      在Apache服務器中,雖然采用了進程預創(chuàng)建方式,但是業(yè)務處理進程的執(zhí)行、進程池內工作者進程的動態(tài)調整都會涉及到進程的創(chuàng)建與刪除,而進程的創(chuàng)建與刪除開銷較大,尤其是在用戶大并發(fā)量訪問的情況下,CPU時間往往大量消耗在進程問的上下文切換上,如此,會使系統(tǒng)的整體性能急劇下降,并且會出現響應處理時間過長、服務器連接不上、響應超時等現象。很顯然,Apache服務器的框架模型決定了其難以支撐用戶的大并發(fā)量訪問,當出現用戶大并發(fā)量訪問的情況時,就可能導致web服務器的癱瘓。
      而且,從圖1可以看出,Apache服務器框架本身并不包含任何緩存(cache)機制,那么,每次動態(tài)的http請求都需要提交到后臺業(yè)務處理進程進行處理,如此,使得單次請求的響應處理時間較慢,效率不高。
      針對Apache服務器性能存在的缺陷,現有網絡中逐漸出現了一些采用單進程簡化的web服務器設計,ACME的Thttpd服務器就是其中的一個代表。Thttpd服務器的框架采用單進程select+non-blocking I/O模型,不存在進程創(chuàng)建和銷毀、以及進程間上下文切換的時間開銷。并且,在Thttpd服務器中采用一定的緩存機制,如使用哈希圖(hash map)+mmap技術,可提高用戶對本地靜態(tài)頁面和文件的訪問效率,目前已在一些訪問量較大的靜態(tài)頁面文件訪問場合廣泛使用。
      雖然Thttpd服務器能夠提高一定的訪問效率,支持用戶大并發(fā)量的訪問,但由于其服務器框架采用的是單進程模型,因此,并不具有很好的業(yè)務邏輯擴展性;并且,對于動態(tài)頁面生成、數據遠程獲取、業(yè)務會話驗證等場景,Thttpd服務器對每個請求同樣需要通過創(chuàng)建一個新的進程去處理,故此,在動態(tài)數據請求的場景下,系統(tǒng)效率仍然較低。
      而且,雖然Thttpd服務器提供了一定的緩存機制,但緩存中數據對象的失效及淘汰是由服務器中定時器決定的,不是由具體業(yè)務應用決定的,而在不同的業(yè)務應用場景下數據對象的失效時間設置及數據對象淘汰策略往往是不一樣,因此,Thttpd服務器無法很好地滿足所有業(yè)務的應用場景。另外,Thttpd服務器的緩存機制只針對從磁盤中得到的靜態(tài)數據,并不支持業(yè)務動態(tài)生成的數據。
      總的來說,諸如Apache服務器等web服務器由于使用pre-fork處理模型,往往效率較低難以支持大并發(fā)量的用戶訪問;而諸如Thttpd服務器等web服務器由于使用單進程模型,采用同步方式進行處理,如圖2所示,服務器迭代處理用戶端發(fā)過來的請求,這種情況下,如果服務器需進行耗時較大的操作如磁盤讀取、SSI方式讀取、業(yè)務邏輯處理等,就可能出現用戶由于排隊等待服務器處理而超時的現象,可見,采用單進程模型對于簡單的本地靜態(tài)頁面和圖片的訪問效率較高,但并不具有很好的業(yè)務邏輯擴展性,難以支持動態(tài)頁面生成、數據遠程獲取、業(yè)務會話驗證等場景,即使以CGI方式進行支持,對每個請求還需創(chuàng)建一個進程進行處理(process-per-req),效率較低。
      另外,雖然Apache服務器和Thttpd服務器都能支持多虛擬主機vhost技術,也就是說,對于部署于同一臺物理設備上域名不同的多個虛擬主機,Apache服務器或Thttpd服務器中的進程httpd都能夠根據虛擬域名的配置,動態(tài)創(chuàng)建并運行相應的后臺業(yè)務進程來處理用戶的不同請求,但是,Apache服務器和Thttpd服務器對不同虛擬主機的處理都不能提供任何的服務質量(QoS)區(qū)分,因而無法滿足對不同虛擬主機提供不同QoS的應用需求和場景。

      發(fā)明內容有鑒于此,本發(fā)明的主要目的在于提供一種基于虛擬主機的web服務器,能夠在提高系統(tǒng)效率、可擴展性以及支持大并發(fā)量訪問的同時,對不同虛擬主機提供不同的QoS需求。
      本發(fā)明的另一目的在于提供一種用戶通過基于虛擬主機的web服務器獲取訪問數據的方法,能夠在提高系統(tǒng)效率、支持大并發(fā)量訪問的同時,對不同虛擬主機提供不同的QoS需求。
      為達到上述目的,本發(fā)明的技術方案是這樣實現的一種基于虛擬主機的web服務器,該服務器包括高性能http進程單元、web緩存單元和緩存管理器;其中,高性能http進程單元,用于接受用戶的并發(fā)連接,根據用戶請求從web緩存單元中獲取用戶所需數據對象返回給用戶,并在需要加載數據對象時通知緩存管理器;web緩存單元,用于緩存數據對象的屬性和數據內容;緩存管理器,用于接收高性能http進程單元的加載請求,從相應業(yè)務模塊組獲取所需的數據對象,加載到web緩存單元中。
      其中,所述高性能http進程單元進一步包括高效網絡I/O接口,用于接受用戶的并發(fā)請求,指令web緩存讀模塊到web緩存單元中讀取所需的數據對象,并將獲取的數據對象返回給用戶;虛擬主機配置模塊,用于提供虛擬主機配置信息;QoS策略模塊,用于存儲和提供基于虛擬主機的QoS策略;web緩存讀模塊,用于接收高效網絡I/O接口的指令,從web緩存單元中讀取相應的數據對象。
      所述高性能http進程單元還包括系統(tǒng)監(jiān)控模塊、系統(tǒng)日志模塊、訪問控制模塊三者中至少一個;其中,系統(tǒng)監(jiān)控模塊用于監(jiān)測系統(tǒng)中各服務模塊的運行情況,在服務模塊出現異?;虮罎r,重啟相應服務模塊;系統(tǒng)日志模塊,用于記錄系統(tǒng)運行期間的用戶訪問情況、系統(tǒng)運行狀況;訪問控制模塊,用于進行安全審計并提供對web服務器的保護。
      所述web緩存單元進一步包括元素登記表、內存數據桶列表;其中,元素登記表,用于保存數據對象的屬性信息;內存數據桶列表,用于存儲數據對象的數據內容。
      所述web緩存單元還包括磁盤文件系統(tǒng),用于存儲使用不頻繁但未失效的數據對象。
      所述緩存管理器進一步包括協(xié)議處理模塊、web緩存寫模塊、SSI模塊和基于虛擬主機事件調度模塊;其中,協(xié)議處理模塊,用于完成與高性能httpd進程單元之間、與各業(yè)務模塊組之間通信協(xié)議的解析和封裝;web緩存寫模塊,用于接收基于虛擬主機事件調度模塊的指令,向web緩存單元寫入數據對象;SSI模塊,用于支持服務器所包含的各種功能;基于虛擬主機事件調度模塊,用于將高性能httpd進程單元發(fā)來的請求分派到不同業(yè)務模塊組進行處理。
      所述緩存管理器還包括緩存調整模塊,根據用戶訪問情況動態(tài)調整數據對象在web緩存單元中的位置。
      所述緩存管理器還包括本地獲取模塊,用于獲取保存在磁盤文件系統(tǒng)中的數據。
      本發(fā)明還公開一種用戶通過基于虛擬主機的web服務器獲取訪問數據的方法,關鍵在于,web服務器并發(fā)接收用戶的訪問數據請求,對每個訪問數據請求執(zhí)行以下步驟a.web服務器確認請求有效后,從web緩存中獲取用戶所需的數據對象;b.判斷是否獲取到用戶所需的數據對象,如果獲取到,則web服務器向相應用戶返回所需的數據對象;如果未獲取到,web服務器根據虛擬主機配置從自身連接的相應業(yè)務模塊組中將用戶所需的數據對象加載到web緩存中,之后再將web緩存中加載的數據對象返回給用戶;其中,對于不同訪問數據請求,所述獲取數據對象、加載數據以及將數據對象返回給用戶的處理以異步方式實現。
      步驟b中所述獲取到的數據對象為web緩存中未失效的數據對象、或為web緩存中已失效但能夠延遲加載的數據對象。
      該方法進一步包括設置兩級web緩存,將使用頻繁的數據對象緩存于web緩存的內存中,將使用不頻繁但未失效的數據對象緩存于web緩存的本地磁盤中。
      該方法進一步包括根據用戶訪問情況動態(tài)調整數據對象在緩存中的位置。
      該方法進一步包括預先設置基于虛擬主機的QoS策略。所述QoS策略為控制數據發(fā)送窗口大小、控制和管理web服務器所擁有的網絡帶寬。
      該方法進一步包括所述web服務器使用網絡事件通知機制監(jiān)聽在各網絡套接字上觸發(fā)的網絡事件。
      本發(fā)明所提供的基于虛擬主機的web服務器及用戶獲取訪問數據的方法,具有以下的優(yōu)點和特點1)由于本發(fā)明的web服務器采用高效網絡I/O接口并設置相應的QoS策略,可使系統(tǒng)在用戶大并發(fā)量訪問的情況下表現穩(wěn)??;2)由于在本發(fā)明的web服務器中設置了web緩存單元,可以緩存用戶要訪問的一些數據對象的屬性和數據,因此可加速用戶訪問并延遲數據對象加載,進而使web服務器即使在用戶大并發(fā)量訪問的情況下,依然能保證用戶的高效訪問,使用戶的平均響應時間很短、效率很高并表現穩(wěn)定。
      3)在本發(fā)明的web服務器中設置有緩存管理器,能對web緩存單元進行有效、靈活的管理,并且,緩存管理器中的基于虛擬主機的事件調度模塊能連接多個實現不同業(yè)務的業(yè)務模塊組,如此,不僅能支持基于虛擬主機的事件多路分離,而且還使web服務器具有很好的業(yè)務擴展性,能很容易地增加新的業(yè)務模塊以適應不同的業(yè)務場景。
      圖1為現有技術中Apache服務器框架結構示意圖;圖2為同步處理方式示意圖;圖3為本發(fā)明web服務器的系統(tǒng)總體框架結構示意圖;圖4為本發(fā)明web服務器異步處理方式的實現原理示意圖;圖5為本發(fā)明web服務器性能效果示意圖1;圖6為本發(fā)明web服務器性能效果示意圖2;圖7為本發(fā)明web服務器性能效果示意圖3;圖8為本發(fā)明web服務器性能效果示意圖4;圖9為本發(fā)明web服務器性能效果示意圖5;圖10為本發(fā)明web服務器性能效果示意圖6。
      具體實施方式如圖3所示,本發(fā)明提出一種web服務器,包括三大部分高性能http進程單元(High performance httpd)31、web緩存單元(web cache component)32、緩存管理器(cache manager)33。其中,高性能http進程單元31,用于接受用戶的并發(fā)連接,對用戶提交的http請求進行分析,根據用戶請求獲取用戶所需的數據對象屬性和數據并返回給用戶;web緩存單元32,用于緩存數據對象的屬性和數據內容;緩存管理器33,用于接收高性能http進程單元31的加載請求,并根據請求從相應業(yè)務模塊組獲取所需的數據對象,加載到web緩存單元中,進一步可以根據用戶訪問數據對象情況,動態(tài)調整數據對象在內存數據桶中的位置。這里,緩存管理器33支持三種方式的數據對象加載本地磁盤加載、業(yè)務模塊動態(tài)生成或到遠程數據中心獲取、本地加載與遠程數據對象獲取的組合。
      高性能http進程單元31與緩存管理器33之間、高性能http進程單元31與web緩存單元32之間、web緩存單元32與緩存管理器33之間均通過通信消息隊列進行信令和數據的交互。比如在數據對象加載時,緩存管理器33接收高性能http進程單元31發(fā)送的加載請求,根據虛擬主機的配置從本地磁盤向內存進行數據對象加載;或是通知相應的業(yè)務模塊,從業(yè)務模塊獲取所需數據對象,之后將數據對象加載到web緩存單元中,加載完成后將所加載數據對象在web緩存單元中內存數據桶的位置返回給高性能http進程單元31。
      這里,高性能http進程單元31、web緩存單元32以及緩存管理器33三者之間進行通信的消息可以采用自定義的消息結構,只要通信雙方預先協(xié)商好消息格式,雙方能相互識別即可。比如高性能http進程單元31與緩存管理器33之間的消息結構可以包括以下信息請求類型、請求對象的鍵值(URI)、請求的域名、連接標識、發(fā)送請求的時間戳、所請求數據對象在注冊表中的位置信息、查詢類型、用戶代理信息、用戶IP地址信息、http請求方法、請求流水號等等;還可以進一步包括數據對象在緩存中的內存桶號、內存位置、結果、數據對象的更改時間、數據對象的過期失效時間等信息。
      同樣,緩存管理器33與各個具體業(yè)務模塊組之間的通信消息也可采用自定義消息,一般包括以下信息消息類型、前端應用的請求消息類型、請求對象的鍵值、請求的域名、連接標識、發(fā)送請求的時間戳、所請求數據對象在注冊表中的位置信息、查詢類型、用戶代理信息、用戶IP地址信息、http請求方法、請求流水號等。
      具體來說,高性能http進程單元31進一步包括高效網絡I/O接口(Efficient network I/O interface)311,用于連接用戶接受用戶的并發(fā)請求,指令web緩存讀模塊317到web緩存單元32中讀取所需的數據對象,并將獲取的數據對象返回給用戶;在高效網絡I/O接口311內部還設置有協(xié)議分析處理模塊,用來分析所接收的請求是否有效,如果有效,繼續(xù)后續(xù)獲取所需數據對象的處理,否則就丟棄,不進行處理;系統(tǒng)監(jiān)控模塊(Monitor module)312,用于監(jiān)測系統(tǒng)的各服務模塊運行情況,在任何服務模塊出現異?;虮罎r,將相應服務模塊重啟;系統(tǒng)日志模塊(Logger module)313,主要用于記錄系統(tǒng)運行期間的用戶訪問情況、系統(tǒng)運行狀況等信息,其中,所記錄的用戶訪問情況可用來分析出用戶的行為習慣,可進一步為電子商務站點提供數據挖掘,所記錄的系統(tǒng)運行狀況用于系統(tǒng)管理員的監(jiān)控和容量規(guī)劃;虛擬主機配置模塊(Vhost conf module)314,用于提供虛擬主機配置信息,也就是說,其它任何模塊可以從本模塊中獲取虛擬主機配置信息;訪問控制模塊(Access control module)315,用于進行安全審計和提供對web服務器的保護,比如對報文的正確性進行檢查;再比如可設置接入控制策略對某IP的訪問頻率進行限制,進而避免同一個IP攻擊訪問等;QoS策略模塊(QoS strategy module)316,用于存儲和提供設置好的基于虛擬主機的QoS策略,比如設置控制向用戶返回數據的速度、流量等策略;web緩存讀模塊(web cache reader)317,用于接收高效網絡I/O接口311的指令,從web緩存單元讀取相應的數據對象屬性和數據。
      其中,系統(tǒng)監(jiān)控模塊312、系統(tǒng)日志模塊313以及訪問控制模塊315的功能都是為了使web服務器的整體系統(tǒng)性能更完善、更安全而設置的,所以,這三個模塊屬于可選模塊。當然,在實際應用中,較佳的是三個模塊均設置。
      高性能http進程單元31接收用戶請求向用戶反饋所需數據的過程是高效網絡I/O接口311接受用戶的訪問數據請求,由自身內部的協(xié)議分析處理模塊對用戶通過瀏覽器提交的http請求進行協(xié)議分析,如果請求無效,則直接丟棄不做處理,如果請求有效,則會根據分析結果通知web緩存讀模塊317從web緩存單元32中讀取相應的數據對象屬性和數據,所述屬性包括更改時間、失效時間等等。在讀取數據對象時,若web緩存單元32中所要讀取的數據對象未失效,則web緩存讀模塊317讀取數據對象后,通過高效網絡I/O接口311設置相應的多用途Internet郵件擴展協(xié)議(MIME)頭,將相應數據對象的數據返回給用戶;若web緩存單元32中所要讀取的數據對象已失效但可進行延遲加載,則web緩存讀模塊317讀取暫時失效的數據對象的數據,通過高效網絡I/O接口311返回給用戶,并通知緩存管理器33更新數據對象的內容;若web緩存單元32中的數據對象失效且不可進行延遲加載,則高性能http進程單元31通知緩存管理器33更新數據對象的內容,整個過程為異步過程。
      這里,所述異步過程是指當存儲于web緩存單元32中的用戶請求訪問的數據對象已失效時,高性能http進程單元31將發(fā)送數據對象加載請求給緩存管理器33,之后,高性能http進程單元31會繼續(xù)完成其他的操作,而無需等待緩存管理器的應答才進行其他操作;同樣,對于緩存管理器33而言,在收到前端高性能http進程單元31發(fā)來的請求后,將根據虛擬主機的配置進行事件的多路分離,即將請求消息分別發(fā)送到相應的業(yè)務模塊組中進行處理;相應的,在各個業(yè)務模塊組完成處理,將用戶請求訪問的數據對象加載到內存后,緩存管理器33會給高性能http進程單元31返回應答,高性能http進程單元31再將加載后的用戶所需的數據對象的數據發(fā)送給用戶。
      如圖4所示,高性能http進程單元31接收客戶端要求訪問數據的請求--請求1、請求2、請求3和請求4。對于請求3和請求4,用戶請求訪問的數據對象在緩存單元中存在且未失效,則高性能http進程單元31直接通過web緩存度模塊317讀取相應數據對象的數據內容發(fā)送給用戶。而對于請求1和請求2,由于用戶要訪問的數據對象在緩存單元中已失效,所以,高性能http進程單元31要向緩存管理器33發(fā)送數據對象加載請求--請求1’、請求2’;進一步,緩存管理器33收到請求1’、請求2’后,根據虛擬主機的配置通過基于虛擬主機事件調度模塊336向相應的業(yè)務模塊組發(fā)送加載請求--請求1”、請求2”;相應業(yè)務模塊組完成處理,向緩存管理器33的基于虛擬主機事件調度模塊336返回攜帶有需加載的數據對象的應答--響應1”、響應2”;緩存管理器33收到響應后,將數據對象加載到web緩存單元32中,并向高性能http進程單元31返回應答--向應1’、響應2’;高性能http進程單元31收到響應后,再讀取新加載的用戶請求訪問的數據對象的數據發(fā)送給用戶。從圖4可以看出,高性能http進程單元31向緩存管理器33發(fā)送請求后,無需等待其應答就可以進行其他處理,同樣,緩存管理器33向業(yè)務模塊組發(fā)送請求后,也無需等待其應答就可以進行其他處理。顯然,web各模塊之間的處理方式是異步的。
      高性能http進程單元31在對用戶請求的接收和處理過程中采用三種機制a)在接受用戶所有的并發(fā)連接時,使用高效的網絡事件通知機制(epoll)監(jiān)聽在各網絡套接字上觸發(fā)的網絡事件,如此,即使在1~2萬的并發(fā)量連接情況下,仍然能保證系統(tǒng)在底層網絡I/O事件處理上的效率;b)采用連接建立優(yōu)先策略,優(yōu)先處理用戶與服務器建立連接的請求;c)在數據發(fā)送時,采用基于連接的輪流發(fā)送策略,即遍歷所有處于發(fā)送狀態(tài)的網絡套接字且每次發(fā)送應答數據的一部分;而不是采用連接迭代發(fā)送策略,即將一個連接上要發(fā)送的應答數據全部發(fā)送完,再發(fā)送下一個連接的應答數據。采用輪流發(fā)送策略可以使每個用戶的請求都能平等地得到處理,而不會出現連接數過多,后面的連接由于排隊發(fā)送導致的發(fā)送超時現象。
      高性能http進程單元31在QoS策略控制上,主要提供兩種QoS策略a)數據發(fā)送窗口大小控制,即對業(yè)務進行區(qū)分,控制web服務器對于各種不同業(yè)務的數據下行速率;b)網絡帶寬管理和控制,即對web服務器所擁有的總帶寬進行劃分和管理,并通過配置各種業(yè)務應用所使用的帶寬大小以達到帶寬管理和控制的目的,避免某種業(yè)務應用把整個站點的網絡帶寬耗盡的問題出現。具體實現為當連接建立時,先獲取該連接能使用的最大帶寬,然后,系統(tǒng)在運行過程中通過定時器動態(tài)地調整處于發(fā)送狀態(tài)的連接可使用的帶寬,即每個連接的可占用帶寬和下行發(fā)送速率可根據虛擬主機的負載動態(tài)進行調整。一般,連接能使用的最大帶寬=虛擬主機配置可使用的帶寬/當前連接數;每次數據發(fā)送窗口的大小為占用最大帶寬*1/4與發(fā)送窗口最大值中的最小值。
      QoS策略配置信息主要包括QoS策略標識、數據發(fā)送窗口最大值、帶寬控制;其中,所述QoS策略標識缺省為1,所述數據發(fā)送窗口最大值為一次發(fā)送過程中可發(fā)送的最大數據量,以字節(jié)為單位,值為-1時表示沒有限制,帶寬控制以bps(bits per second)為單位,值為-1時表示不做控制。所有的QoS策略配置信息可以用QoS策略列表保存,比如表一為一個QoS策略列表。
      表一表一所示的QoS策略列表中條目1描述了數據發(fā)送窗口為1460 Bytes,帶寬無任何限制的QoS策略,條目2描述了使用帶寬大小為50M的QoS策略,條目3描述了可使用帶寬為100M,且每次發(fā)送不超過730 Bytes的QoS策略。
      web緩存單元32,用于將數據對象按某種策略緩存在內存和本地磁盤中,并使用一定的淘汰機制處理數據對象在內存和磁盤文件的扇入扇出,web緩存單元32支持兩級緩存體系第一級為基于內存的分級緩存;第二級為基于磁盤文件系統(tǒng)的本地緩存。web緩存單元32進一步包括元素登記表(Element Register Table)321,用于保存數據對象的屬性信息,如鍵值、所在數據桶的桶號和桶內位置、失效時間、最近更改時間等;內存數據桶列表(Data Bucket List)322,用于數據對象的分級存儲,主要存儲數據對象的數據內容,對于同一數據對象,相應數據內容與元素登記表321中的屬性信息相對應;磁盤文件系統(tǒng)(File system)323,用于存儲使用不頻繁但沒有失效的數據對象。
      其中,對于內存數據桶列表322內部的存儲可以按照數據桶中存儲的數據對象大小分成不同級別的數據桶,并根據系統(tǒng)內存資源和不同應用的需要對各級數據桶進行容量配置,如此可增強可擴展性。
      web緩存單元32的存儲原則是優(yōu)先將訪問頻繁的數據對象緩存在內存中,將使用不頻繁但沒有失效的數據對象緩存在本地磁盤,即磁盤文件系統(tǒng)323中,若數據對象失效過期,則通知相應的業(yè)務模塊組進行更新加載,如此,能避免每次到后臺獲取數據。數據對象的淘汰基于訪問觸發(fā)機制,即只有調用者要訪問這個數據對象,才會去判斷該數據對象是否失效或從磁盤中加載。這里,對緩存在本地磁盤的數據對象可采用最近最少使用算法(LRU)進行淘汰。
      在實際應用中,也可以只在web緩存單元32中設置一級緩存,即設置內存數據桶列表322,省略磁盤文件系統(tǒng)323,可以通過擴大數據桶的容量來實現更多數據的存儲,這樣,也可以達到節(jié)省時間、提高訪問速度的目的。當然,設置兩級緩存為應用的較佳實施方案。
      web緩存單元32中,元素登記表321以hash map的方式實現,如此,根據數據對象的鍵值,通過一個對URL散列效果較好的哈希函數能快速定位并獲取數據對象屬性信息。在數據對象內容獲取上,元素登記表321還可以作為檢索的一級索引,提供數據對象的數據存儲在內存數據桶列表322中的桶號和桶中位置,這樣可使緩存管理器33通過所提供的位置信息快速獲取數據對象的內容。一般,內存數據桶列表322的配置信息包括數據桶的標識、數據桶中條目的大小、桶中條目的個數。
      web緩存單元32的設置可提高用戶的訪問速度和效率、縮短數據獲取時間、減少后臺數據對象的加載時間和CPU開銷。
      緩存管理器33進一步包括協(xié)議處理模塊(Protocol process module)331,用于完成與前端高性能httpd進程單元31之間、以及與后端各業(yè)務模塊組之間通信協(xié)議的解析和封裝;web緩存寫模塊(web cache writer)332,用于接收基于虛擬主機事件調度模塊336的指令,向web緩存單元寫入相應數據對象的屬性和數據;SSI(Server Side Include)模塊333,用于支持服務器端所包含的各種功能;本地獲取模塊(Local get module)334,用于獲取保存在磁盤文件系統(tǒng)中的數據;如果web緩存單元32中的磁盤文件系統(tǒng)323可選,相應的,緩存管理器33中的本地獲取模塊334也為可選模塊;緩存調整模塊(cache adjust module)335,根據用戶訪問情況動態(tài)調整數據對象在web緩存單元32中的位置,所述動態(tài)調整可采用最少使用(LFU,Least Frequency Used)緩存策略;基于虛擬主機事件調度模塊(Base-vhost event dispatch module)336,用于連接實現不同業(yè)務的業(yè)務模塊組,根據用戶請求的虛擬主機的不同,將高性能httpd進程單元發(fā)來的請求分派到相應的業(yè)務模塊組進行處理。
      這里,基于虛擬主機事件調度模塊336可同時與實現不同業(yè)務的各種業(yè)務模塊組相連,比如Goods-Auction業(yè)務、Browse-Gen業(yè)務、Image-Fetch業(yè)務等等,緩存管理器33收到高性能http進程單元31發(fā)送來的請求后,將根據虛擬主機的配置如域名信息進行事件的多路分離,將請求消息分別發(fā)送到相應的業(yè)務模塊組中進行處理,相應的業(yè)務模塊組可根據請求進行處理,處理完成后再將數據對象加載到web緩存單元32中,并返回應答給高性能http進程單元31。由于基于虛擬主機事件調度模塊336支持連接多個業(yè)務模塊組,所以基于虛擬主機事件調度模塊336所連接的業(yè)務模塊組可根據需要隨時增加或減少,如此,即可增強web服務器的可擴展性。
      現有技術中的web服務器,對于一些動態(tài)數據請求都是針對每個請求創(chuàng)建一個進程即process-per-req處理方式來執(zhí)行,但這種process-per-req的處理方式,在用戶大并發(fā)量訪問的情況下效率很低,大量的CPU時間消耗在進程的創(chuàng)建銷毀與進程間的上下文切換上,并且擴展性較差,無法適用于不同的業(yè)務處理模型的需求,比如在某種場景下使用線程池模型效率更高,并通過增加線程來提高業(yè)務處理的吞吐量。
      而本發(fā)明web服務器的設計能很好地支持各種業(yè)務模塊的處理模型,通過基于虛擬主機的配置將用戶請求分發(fā)到相應的業(yè)務模塊組進行處理。在實際應用中,可以為每個具體的業(yè)務模塊組配置以下的信息業(yè)務模塊組標識、業(yè)務模塊組名稱、業(yè)務模塊組通信消息隊列標識等。
      本發(fā)明的web服務器在實際應用中具有很好的性能效果,圖5至圖10分別給出了不同應用環(huán)境下使用本發(fā)明web服務器的性能效果統(tǒng)計數據。
      當使用4臺機器啟動400個模擬并發(fā)用戶,每個用戶隨機訪問300個URL連接時,圖5和圖6分別表示在平均每秒獲取頁面?zhèn)€數--即每秒命中率(Hits perSecond)在不同cache命中率下的比較圖、平均事務響應時間(TransactionResponse Time)在不同cache命中率下的比較圖。
      圖5中,曲線501、502、503分別代表66%Cache命中率、80%Cache命中率、90%Cache命中率的性能曲線;同樣,圖6中,曲線601、602、603分別代表66%Cache命中率、80%Cache命中率、90%Cache命中率的性能曲線。相應的,web服務器在不同cache命中率下的詳細性能統(tǒng)計數據如表二所示。
      表二圖7和圖8分別表示平均每秒獲取頁面?zhèn)€數--即每秒命中率(Hits perSecond)在不同并發(fā)用戶數下的比較圖、平均事務響應時間(TransactionResponse Time)在不同并發(fā)用戶數下的比較圖。
      圖7中,曲線701、702分別代表并發(fā)用戶數為400、1000的性能曲線;圖8中,曲線801、802分別代表并發(fā)用戶數為400、1000的性能曲線。相應的,web服務器在不同并發(fā)用戶數下的詳細性能統(tǒng)計數據如表三所示。
      表三圖9和圖10分別表示平均每秒獲取頁面?zhèn)€數--即每秒命中率(Hits perSecond)在不同web服務器下的比較圖、平均事務響應時間(TransactionResponse Time)在不同web服務器下的比較圖。
      圖9中,曲線901、902分別代表本發(fā)明web服務器、apache服務器的性能曲線;圖10中,曲線1001、1002分別代表本發(fā)明web服務器、apache服務器的性能曲線。相應的,不同web服務器下的詳細性能統(tǒng)計數據如表四所示。
      表四從圖5至圖10可以看出,本發(fā)明的web服務器由于采用異步的基于虛擬主機的事件多路分離、加速用戶訪問的數據對象緩存、以及延遲數據對象加載等技術,使系統(tǒng)即使在大并發(fā)量訪問的情況下,用戶的平均響應時間依然很短,效率很高,并具有較好的業(yè)務擴展性,能輕易地增加新的業(yè)務模塊以適應不同的業(yè)務場景。除此之外,本發(fā)明的web服務器還具備一般通用web服務器所具有的特性,如支持HTTP 0.9/1.0/1.1多種協(xié)議版本,支持業(yè)務會話cookie分析設置,支持SSI等等。
      本發(fā)明的web服務器可以應用于大型電子商務站點中,以支持目錄分類瀏覽、靜態(tài)頁面和圖片訪問等等。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
      權利要求
      1.一種基于虛擬主機的web服務器,其特征在于,該服務器包括高性能http進程單元、web緩存單元和緩存管理器;其中,高性能http進程單元,用于接受用戶的并發(fā)連接,根據用戶請求從web緩存單元中獲取用戶所需數據對象返回給用戶,并在需要加載數據對象時通知緩存管理器;web緩存單元,用于緩存數據對象的屬性和數據內容;緩存管理器,用于接收高性能http進程單元的加載請求,從相應業(yè)務模塊組獲取所需的數據對象,加載到web緩存單元中。
      2.根據權利要求
      1所述的方法,其特征在于,所述高性能http進程單元進一步包括高效網絡I/O接口、虛擬主機配置模塊、QoS策略模塊和web緩存讀模塊;其中,高效網絡I/O接口,用于接受用戶的并發(fā)請求,指令web緩存讀模塊到web緩存單元中讀取所需的數據對象,并將獲取的數據對象返回給用戶;虛擬主機配置模塊,用于提供虛擬主機配置信息;QoS策略模塊,用于存儲和提供基于虛擬主機的QoS策略;web緩存讀模塊,用于接收高效網絡I/O接口的指令,從web緩存單元中讀取相應的數據對象。
      3.根據權利要求
      2所述的方法,其特征在于,所述高性能http進程單元還包括系統(tǒng)監(jiān)控模塊、系統(tǒng)日志模塊、訪問控制模塊三者中至少一個;其中,系統(tǒng)監(jiān)控模塊用于監(jiān)測系統(tǒng)中各服務模塊的運行情況,在服務模塊出現異?;虮罎r,重啟相應服務模塊;系統(tǒng)日志模塊,用于記錄系統(tǒng)運行期間的用戶訪問情況、系統(tǒng)運行狀況;訪問控制模塊,用于進行安全審計并提供對web服務器的保護。
      4.根據權利要求
      1、2或3所述的方法,其特征在于,所述web緩存單元進一步包括元素登記表、內存數據桶列表;其中,元素登記表,用于保存數據對象的屬性信息;內存數據桶列表,用于存儲數據對象的數據內容。
      5.根據權利要求
      4所述的方法,其特征在于,所述web緩存單元還包括磁盤文件系統(tǒng),用于存儲使用不頻繁但未失效的數據對象。
      6.根據權利要求
      1、2或3所述的方法,其特征在于,所述緩存管理器進一步包括協(xié)議處理模塊、web緩存寫模塊、SSI模塊和基于虛擬主機事件調度模塊;其中,協(xié)議處理模塊,用于完成與高性能httpd進程單元之間、與各業(yè)務模塊組之間通信協(xié)議的解析和封裝;web緩存寫模塊,用于接收基于虛擬主機事件調度模塊的指令,向web緩存單元寫入數據對象;SSI模塊,用于支持服務器所包含的各種功能;基于虛擬主機事件調度模塊,用于將高性能httpd進程單元發(fā)來的請求分派到不同業(yè)務模塊組進行處理。
      7.根據權利要求
      6所述的方法,其特征在于,所述緩存管理器還包括緩存調整模塊,根據用戶訪問情況動態(tài)調整數據對象在web緩存單元中的位置。
      8.根據權利要求
      4所述的方法,其特征在于,所述緩存管理器進一步包括協(xié)議處理模塊、web緩存寫模塊、SSI模塊和基于虛擬主機事件調度模塊;其中,協(xié)議處理模塊,用于完成與高性能httpd進程單元之間、與各業(yè)務模塊組之間通信協(xié)議的解析和封裝;web緩存寫模塊,用于接收基于虛擬主機事件調度模塊的指令,向web緩存單元寫入數據對象;SSI模塊,用于支持服務器所包含的各種功能;基于虛擬主機事件調度模塊,用于將高性能httpd進程單元發(fā)來的請求分派到不同業(yè)務模塊組進行處理。
      9.根據權利要求
      8所述的方法,其特征在于,所述緩存管理器還包括緩存調整模塊,根據用戶訪問情況動態(tài)調整數據對象在web緩存單元中的位置。
      10.根據權利要求
      5所述的方法,其特征在于,所述緩存管理器進一步包括協(xié)議處理模塊、web緩存寫模塊、SSI模塊和基于虛擬主機事件調度模塊;其中,協(xié)議處理模塊,用于完成與高性能httpd進程單元之間、與各業(yè)務模塊組之間通信協(xié)議的解析和封裝;web緩存寫模塊,用于接收基于虛擬主機事件調度模塊的指令,向web緩存單元寫入數據對象;SSI模塊,用于支持服務器所包含的各種功能;基于虛擬主機事件調度模塊,用于將高性能httpd進程單元發(fā)來的請求分派到不同業(yè)務模塊組進行處理。
      11.根據權利要求
      10所述的方法,其特征在于,所述緩存管理器還包括緩存調整模塊,根據用戶訪問情況動態(tài)調整數據對象在web緩存單元中的位置。
      12.根據權利要求
      10或11所述的方法,其特征在于,所述緩存管理器還包括本地獲取模塊,用于獲取保存在磁盤文件系統(tǒng)中的數據。
      13.一種用戶通過基于虛擬主機的web服務器獲取訪問數據的方法,其特征在于,web服務器并發(fā)接收用戶的訪問數據請求,對每個訪問數據請求執(zhí)行以下步驟a.web服務器確認請求有效后,從web緩存中獲取用戶所需的數據對象;b.判斷是否獲取到用戶所需的數據對象,如果獲取到,則web服務器向相應用戶返回所需的數據對象;如果未獲取到,web服務器根據虛擬主機配置從自身連接的相應業(yè)務模塊組中將用戶所需的數據對象加載到web緩存中,之后再將web緩存中加載的數據對象返回給用戶;其中,對于不同訪問數據請求,所述獲取數據對象、加載數據以及將數據對象返回給用戶的處理以異步方式實現。
      14.根據權利要求
      13所述的方法,其特征在于,步驟b中所述獲取到的數據對象為web緩存中未失效的數據對象、或為web緩存中已失效但能夠延遲加載的數據對象。
      15.根據權利要求
      13所述的方法,其特征在于,該方法進一步包括設置兩級web緩存,將使用頻繁的數據對象緩存于web緩存的內存中,將使用不頻繁但未失效的數據對象緩存于web緩存的本地磁盤中。
      16.根據權利要求
      15所述的方法,其特征在于,該方法進一步包括根據用戶訪問情況動態(tài)調整數據對象在緩存中的位置。
      17.根據權利要求
      13所述的方法,其特征在于,該方法進一步包括預先設置基于虛擬主機的QoS策略。
      18.根據權利要求
      17所述的方法,其特征在于,所述QoS策略為控制數據發(fā)送窗口大小、控制和管理web服務器所擁有的網絡帶寬。
      19.根據權利要求
      13所述的方法,其特征在于,該方法進一步包括所述web服務器使用網絡事件通知機制監(jiān)聽在各網絡套接字上觸發(fā)的網絡事件。
      專利摘要
      本發(fā)明公開了一種基于虛擬主機的web服務器,該服務器包括高性能http進程單元,用于接受用戶的并發(fā)連接,根據用戶請求從web緩存單元中獲取用戶所需數據對象返回給用戶,并在需要加載數據對象時通知緩存管理器;web緩存單元,用于緩存數據對象的屬性和數據內容;緩存管理器,用于接收高性能http進程單元的加載請求,從相應業(yè)務模塊組獲取所需的數據對象,加載到web緩存單元中。本發(fā)明還同時公開了一種用戶通過基于虛擬主機的web服務器獲取訪問數據的方法,該web服務器和方法能夠在提高系統(tǒng)效率、可擴展性以及支持大并發(fā)量訪問的同時,對不同虛擬主機提供不同的QoS需求。
      文檔編號G06F9/46GK1997000SQ200510048886
      公開日2007年7月11日 申請日期2005年12月31日
      發(fā)明者黃斌強 申請人:騰訊科技(深圳)有限公司導出引文BiBTeX, EndNote, RefMan
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1