當前位置:首頁 » 網頁前端 » web服務體系結構
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

web服務體系結構

發布時間: 2022-02-21 21:13:00

A. 語義web的體系結構

下圖描述了語義Web的七層體系結構: 自描述
文檔 數據 數據 規則 信任 證明 數


名 邏輯 本體 RDF+RDF Schema XML+NS+XML Schema 名稱空間 Unicode URI 第一層:Unicode和URI。
Unicode是一個字元集,這個字元集中所有字元都用兩個位元組表示,可以表示65536個字元,基本上包括了世界上所有語言的字元。數據格式採用Unicode的好處就是它支持世界上所有主要語言的混合,並且可以同時進行檢索。URI(Uniform ResourceIdentifier),即統一資源定位符,用於唯一標識網路上的一個概念或資源。在語義Web體系結構中,該層是整個語義Web的基礎,其中Unicode負責處理資源的編碼,URI負責資源的標識。
第二層:XML+NS+xmlschema。
XML是一個精簡的標准通用標記語言,它綜合了標准通用標記語言的豐富功能與HTML的易用性,它允許用戶在文檔中加入任意的結構,而無需說明這些結構的含意。NS(NameSpace)即命名空間,由URI索引確定,目的是為了避免不同的應用使用同樣的字元描述不同的事物。XML Schema是文檔類型定義(外語縮寫:DTD)的替代品,它本身採用XML語法,但比DTD更加靈活,提供更多的數據類型,能更好地為有效的XML文檔服務並提供數據校驗機制。正是由於XML靈活的結構性、由URI索引的NS而帶來的數據可確定性以及XMLSchema所提供的多種數據類型及檢驗機制,使其成為語義Web體系結構的重要組成部分。該層負責從語法上表示數據的內容和結構,通過使用標準的語言將網路信息的表現形式、數據結構和內容分離。
第三層:RDF+rdfschema。
資源描述框架(外語縮寫:RDF)是一種描述WWW上的信息資源的一種語言,其目標是建立一種供多種元數據標准共存的框架。該框架能充分利用各種元數據的優勢,進行基於Web的數據交換和再利用。RDF解決的是如何採用XML標准語法無二義性地描述資源對象的問題,使得所描述的資源的元數據信息成為機器可理解的信息。如果把XML看作為一種標准化的元數據語法規范的話,那麼RDF就可以看作為一種標准化的元數據語義描述規范。Rdfschema使用一種機器可以理解的體系來定義描述資源的詞彙,其目的是提供詞彙嵌入的機制或框架,在該框架下多種詞彙可以集成在一起實現對Web資源的描述。
第四層:「本體詞彙」(Ontology vocabulary)。
該層是在RDF(S)基礎上定義的概念及其關系的抽象描述,用於描述應用領域的知識,描述各類資源及資源之間的關系,實現對詞彙表的擴展。在這一層,用戶不僅可以定義概念而且可以定義概念之間豐富的關系。
第五至七層:Logic、Proof、Trust。
Logic負責提供公理和推理規則,而Logic一旦建立,便可以通過邏輯推理對資源、資源之間的關系以及推理結果進行驗證,證明其有效性。通過Proof交換以及數字簽名,建立一定的信任關系,從而證明語義Web輸出的可靠性以及其是否符合用戶的要求。

B. 分布式Web伺服器架構

最開始,由於某些想法,於是在互聯網上搭建了一個網站,這個時候甚至有可能主機都是租借的,但由於這篇文章我們只關注架構的演變歷程,因此就假設這個時候已經是託管了一台主機,並且有一定的帶寬了,這個時候由於網站具備了一定的特色,吸引了部分人訪問,逐漸你發現系統的壓力越來越高,響應速度越來越慢,而這個時候比較明顯的是資料庫和應用互相影響,應用出問題了,資料庫也很容易出現問題,而資料庫出問題的時候,應用也容易出問題,於是進入了第一步演變階段:將應用和資料庫從物理上分離,變成了兩台機器,這個時候技術上沒有什麼新的要求,但你發現確實起到效果了,系統又恢復到以前的響應速度了,並且支撐住了更高的流量,並且不會因為資料庫和應用形成互相的影響。

這一步架構演變對技術上的知識體系基本沒有要求。

架構演變第二步:增加頁面緩存

好景不長,隨著訪問的人越來越多,你發現響應速度又開始變慢了,查找原因,發現是訪問資料庫的操作太多,導致數據連接競爭激烈,所以響應變慢,但資料庫連接又不能開太多,否則資料庫機器壓力會很高,因此考慮採用緩存機制來減少資料庫連接資源的競爭和對資料庫讀的壓力,這個時候首先也許會選擇採用squid 等類似的機制來將系統中相對靜態的頁面(例如一兩天才會有更新的頁面)進行緩存(當然,也可以採用將頁面靜態化的方案),這樣程序上可以不做修改,就能夠很好的減少對webserver的壓力以及減少資料庫連接資源的競爭,OK,於是開始採用squid來做相對靜態的頁面的緩存。
前端頁面緩存技術,例如squid,如想用好的話還得深入掌握下squid的實現方式以及緩存的失效演算法等。

架構演變第三步:增加頁面片段緩存

增加了squid做緩存後,整體系統的速度確實是提升了,webserver的壓力也開始下降了,但隨著訪問量的增加,發現系統又開始變的有些慢了,在嘗到了squid之類的動態緩存帶來的好處後,開始想能不能讓現在那些動態頁面里相對靜態的部分也緩存起來呢,因此考慮採用類似ESI之類的頁面片段緩存策略,OK,於是開始採用ESI來做動態頁面中相對靜態的片段部分的緩存。
這一步涉及到了這些知識體系:
頁面片段緩存技術,例如ESI等,想用好的話同樣需要掌握ESI的實現方式等;

架構演變第四步:數據緩存
在採用ESI之類的技術再次提高了系統的緩存效果後,系統的壓力確實進一步降低了,但同樣,隨著訪問量的增加,系統還是開始變慢,經過查找,可能會發現系統中存在一些重復獲取數據信息的地方,像獲取用戶信息等,這個時候開始考慮是不是可以將這些數據信息也緩存起來呢,於是將這些數據緩存到本地內存,改變完畢後,完全符合預期,系統的響應速度又恢復了,資料庫的壓力也再度降低了不少。

這一步涉及到了這些知識體系:

緩存技術,包括像Map數據結構、緩存演算法、所選用的框架本身的實現機制等。

架構演變第五步: 增加webserver

好景不長,發現隨著系統訪問量的再度增加,webserver機器的壓力在高峰期會上升到比較高,這個時候開始考慮增加一台webserver,這也是為了同時解決可用性的問題,避免單台的webserver down機的話就沒法使用了,在做了這些考慮後,決定增加一台webserver,增加一台webserver時,會碰到一些問題,典型的有:
1、如何讓訪問分配到這兩台機器上,這個時候通常會考慮的方案是Apache自帶的負載均衡方案,或LVS這類的軟體負載均衡方案;
2、如何保持狀態信息的同步,例如用戶session等,這個時候會考慮的方案有寫入資料庫、寫入存儲、cookie或同步session信息等機制等;
3、如何保持數據緩存信息的同步,例如之前緩存的用戶數據等,這個時候通常會考慮的機制有緩存同步或分布式緩存;
4、如何讓上傳文件這些類似的功能繼續正常,這個時候通常會考慮的機制是使用共享文件系統或存儲等;
在解決了這些問題後,終於是把webserver增加為了兩台,系統終於是又恢復到了以往的速度。

這一步涉及到了這些知識體系:

負載均衡技術(包括但不限於硬體負載均衡、軟體負載均衡、負載演算法、linux轉發協議、所選用的技術的實現細節等)、主備技術(包括但不限於 ARP欺騙、linux heart-beat等)、狀態信息或緩存同步技術(包括但不限於Cookie技術、UDP協議、狀態信息廣播、所選用的緩存同步技術的實現細節等)、共享文件技術(包括但不限於NFS等)、存儲技術(包括但不限於存儲設備等)。

架構演變第六步:分庫

享受了一段時間的系統訪問量高速增長的幸福後,發現系統又開始變慢了,這次又是什麼狀況呢,經過查找,發現資料庫寫入、更新的這些操作的部分資料庫連接的資源競爭非常激烈,導致了系統變慢,這下怎麼辦呢,此時可選的方案有資料庫集群和分庫策略,集群方面像有些資料庫支持的並不是很好,因此分庫會成為比較普遍的策略,分庫也就意味著要對原有程序進行修改,一通修改實現分庫後,不錯,目標達到了,系統恢復甚至速度比以前還快了。
這一步涉及到了這些知識體系:

這一步更多的是需要從業務上做合理的劃分,以實現分庫,具體技術細節上沒有其他的要求;

但同時隨著數據量的增大和分庫的進行,在資料庫的設計、調優以及維護上需要做的更好,因此對這些方面的技術還是提出了很高的要求的。

架構演變第七步:分表、DAL和分布式緩存
隨著系統的不斷運行,數據量開始大幅度增長,這個時候發現分庫後查詢仍然會有些慢,於是按照分庫的思想開始做分表的工作,當然,這不可避免的會需要對程序進行一些修改,也許在這個時候就會發現應用自己要關心分庫分表的規則等,還是有些復雜的,於是萌生能否增加一個通用的框架來實現分庫分表的數據訪問,這個在ebay的架構中對應的就是DAL,這個演變的過程相對而言需要花費較長的時間,當然,也有可能這個通用的框架會等到分表做完後才開始做,同時,在這個階段可能會發現之前的緩存同步方案出現問題,因為數據量太大,導致現在不太可能將緩存存在本地,然後同步的方式,需要採用分布式緩存方案了,於是,又是一通考察和折磨,終於是將大量的數據緩存轉移到分布式緩存上了。
這一步涉及到了這些知識體系:
分表更多的同樣是業務上的劃分,技術上涉及到的會有動態hash演算法、consistent hash演算法等;

DAL涉及到比較多的復雜技術,例如資料庫連接的管理(超時、異常)、資料庫操作的控制(超時、異常)、分庫分表規則的封裝等;

架構演變第八步:增加更多的webserver

在做完分庫分表這些工作後,資料庫上的壓力已經降到比較低了,又開始過著每天看著訪問量暴增的幸福生活了,突然有一天,發現系統的訪問又開始有變慢的趨勢了,這個時候首先查看資料庫,壓力一切正常,之後查看webserver,發現apache阻塞了很多的請求,而應用伺服器對每個請求也是比較快的,看來是請求數太高導致需要排隊等待,響應速度變慢,這還好辦,一般來說,這個時候也會有些錢了,於是添加一些webserver伺服器,在這個添加 webserver伺服器的過程,有可能會出現幾種挑戰:
1、Apache的軟負載或LVS軟負載等無法承擔巨大的web訪問量(請求連接數、網路流量等)的調度了,這個時候如果經費允許的話,會採取的方案是購買硬體負載,例如F5、Netsclar、Athelon之類的,如經費不允許的話,會採取的方案是將應用從邏輯上做一定的分類,然後分散到不同的軟負載集群中;
2、原有的一些狀態信息同步、文件共享等方案可能會出現瓶頸,需要進行改進,也許這個時候會根據情況編寫符合網站業務需求的分布式文件系統等;
在做完這些工作後,開始進入一個看似完美的無限伸縮的時代,當網站流量增加時,應對的解決方案就是不斷的添加webserver。
這一步涉及到了這些知識體系:

到了這一步,隨著機器數的不斷增長、數據量的不斷增長和對系統可用性的要求越來越高,這個時候要求對所採用的技術都要有更為深入的理解,並需要根據網站的需求來做更加定製性質的產品。

架構演變第九步:數據讀寫分離和廉價存儲方案

突然有一天,發現這個完美的時代也要結束了,資料庫的噩夢又一次出現在眼前了,由於添加的webserver太多了,導致資料庫連接的資源還是不夠用,而這個時候又已經分庫分表了,開始分析資料庫的壓力狀況,可能會發現資料庫的讀寫比很高,這個時候通常會想到數據讀寫分離的方案,當然,這個方案要實現並不容易,另外,可能會發現一些數據存儲在資料庫上有些浪費,或者說過於佔用資料庫資源,因此在這個階段可能會形成的架構演變是實現數據讀寫分離,同時編寫一些更為廉價的存儲方案,例如BigTable這種。

這一步涉及到了這些知識體系:

數據讀寫分離要求對資料庫的復制、standby等策略有深入的掌握和理解,同時會要求具備自行實現的技術;

廉價存儲方案要求對OS的文件存儲有深入的掌握和理解,同時要求對採用的語言在文件這塊的實現有深入的掌握。

架構演變第十步:進入大型分布式應用時代和廉價伺服器群夢想時代

經過上面這個漫長而痛苦的過程,終於是再度迎來了完美的時代,不斷的增加webserver就可以支撐越來越高的訪問量了,對於大型網站而言,人氣的重要毋庸置疑,隨著人氣的越來越高,各種各樣的功能需求也開始爆發性的增長,這個時候突然發現,原來部署在webserver上的那個web應用已經非常龐大了,當多個團隊都開始對其進行改動時,可真是相當的不方便,復用性也相當糟糕,基本是每個團隊都做了或多或少重復的事情,而且部署和維護也是相當的麻煩,因為龐大的應用包在N台機器上復制、啟動都需要耗費不少的時間,出問題的時候也不是很好查,另外一個更糟糕的狀況是很有可能會出現某個應用上的bug就導致了全站都不可用,還有其他的像調優不好操作(因為機器上部署的應用什麼都要做,根本就無法進行針對性的調優)等因素,根據這樣的分析,開始痛下決心,將系統根據職責進行拆分,於是一個大型的分布式應用就誕生了,通常,這個步驟需要耗費相當長的時間,因為會碰到很多的挑戰:
1、拆成分布式後需要提供一個高性能、穩定的通信框架,並且需要支持多種不同的通信和遠程調用方式;
2、將一個龐大的應用拆分需要耗費很長的時間,需要進行業務的整理和系統依賴關系的控制等;
3、如何運維(依賴管理、運行狀況管理、錯誤追蹤、調優、監控和報警等)好這個龐大的分布式應用。
經過這一步,差不多系統的架構進入相對穩定的階段,同時也能開始採用大量的廉價機器來支撐著巨大的訪問量和數據量,結合這套架構以及這么多次演變過程吸取的經驗來採用其他各種各樣的方法來支撐著越來越高的訪問量。
這一步涉及到了這些知識體系:

這一步涉及的知識體系非常的多,要求對通信、遠程調用、消息機制等有深入的理解和掌握,要求的都是從理論、硬體級、操作系統級以及所採用的語言的實現都有清楚的理解。
運維這塊涉及的知識體系也非常的多,多數情況下需要掌握分布式並行計算、報表、監控技術以及規則策略等等。
說起來確實不怎麼費力,整個網站架構的經典演變過程都和上面比較的類似,當然,每步採取的方案,演變的步驟有可能有不同,另外,由於網站的業務不同,會有不同的專業技術的需求,這篇blog更多的是從架構的角度來講解演變的過程,當然,其中還有很多的技術也未在此提及,像資料庫集群、數據挖掘、搜索等,但在真實的演變過程中還會藉助像提升硬體配置、網路環境、改造操作系統、CDN鏡像等來支撐更大的流量,因此在真實的發展過程中還會有很多的不同,另外一個大型網站要做到的遠遠不僅僅上面這些,還有像安全、運維、運營、服務、存儲等,要做好一個大型的網站真的很不容易

C. www採用什麼體系結構目前的web伺服器提供哪些功能

目前常用的Web伺服器有IIS和Apache等;其中IIS可能是最容易懂的。Web伺服器嘛主要就提供網站服務功能了哈,如用戶登陸、在線支付、等等。採用的B/S架構。

D. 簡述SOA軟體體系結構的基本概念,簡述Web Service的主要協議

Web服務(Web Services)在很多人眼裡還是個十分神秘的概念,究其根源,我想主要是由於Web服務被宣傳得很多,但實際應用卻鮮見,給人一種很復雜和難以理解的感覺。另外,Web服務是基於XML的,不少人對XML本身也缺乏理解,雖然他們可能每天都在寫XML格式的配置文件。

提到Web服務的起源就一定要先說一說SOA(面向服務的體系結構),和很多具有劃時代意義的軟體技術一樣,SOA的出現根本上也是為了解決軟體危機問題。做過項目的人都有過這種感受,隨著項目推進,模塊之間關系越來越緊密,任何一個小的修改都可能引起整個系統的不穩定,而客戶需求偏偏總是在改變,結果是項目以差不多失敗的結果告終。

從(分布式)軟體發展的趨勢來看,C/S->B/S->SOA,模塊之間的耦合度是由緊密到鬆散的,鬆散的耦合有利於修改。我們常說的各種設計模式,其中大部分不也是為了降低類之間的耦合度嗎。

這里我引用一下IBM網站上對SOA的定義:面向服務的體系結構(service-oriented architecture)是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的介面和契約聯系起來。介面是採用中立的方式進行定義的,它應該獨立於實現服務的硬體平台、操作系統和編程語言。這使得構建在各種這樣的系統中的服務可以以一種統一和通用的方式進行交互。(全文)

說得通俗一點就是,系統中分為三種角色:服務提供者、服務使用者和注冊中心,提供者發布服務到注冊中心,使用者通過注冊中心發現所需服務,然後與該服務的提供者綁定,並調用服務。

那麼Web服務和SOA是什麼關系呢,可以這樣說,Web服務是SOA的一種實現,有點像Tomcat和JSP/Servlet規范的關系。SOA是一個比較虛的概念,例如它只提出定義一些介面和協議,那麼這些東西具體應該怎樣定義呢,Web服務就將它們具體化了:Web服務使用的協議都是基於XML的;SOA只說應該有三種角色,而Web服務里這三種角色都有具體的實現方式。看到這里你應該會問,那麼SOA還有哪些實現呢?CORBA、DCOM和J2EE都可以算是,但我認為它們不能算很純粹,至少它們並不都具有中立的協議。

現在該用一個具體的例子來說明一下Web服務了,假設我們的系統中需要一項功能是查詢當地的天氣情況(世界時間、貨幣匯率等等,都一樣),顯然我們不會自己做一個從氣象部門資料庫中查找數據的程序,這需要很多手續也沒有必要,更要命的是,這樣做會增加我們與氣象部門的耦合度。試想某一天氣象部門的資料庫結構改變了,我們將不得不修改自己的代碼,如果他們忘記通知我們這一改變,想像一下客戶會看到什麼?

為了利用Web服務,我們從某一注冊中心查找和天氣有關的服務,在結果中也許我們會選擇收費較低,或者收費稍高但更穩定和准確的服務。從注冊中心我們能夠得到所選服務的完整描述,其中包含了各種數據類型和調用方式,利用這些信息,可以使用工具生成這些必要的類,以及客戶端Stub,利用這個Stub就可以調用遠程的Web服務了。在我們的例子中,調用後服務提供者會返回一個含有結果的消息,在我們的系統中可以從這個消息里得到所要的結果,並顯示給客戶。這樣就形成一個完整的Web服務調用。這種調用方式被稱為靜態調用,因為在Stub里服務提供者的地址(被稱為調用端點endpoint)是寫定的,還有另外一種方式被稱為動態調用,以後會講到。

那麼Web服務和以前的RPC(遠程過程調用)有什麼分別呢?RPC通常要求調用者和被調用者是同構的,即使用同樣的語言編寫,而Web服務沒有這個要求(訣竅在於使用了XML封裝消息),這就大大增加了靈活程度;另外,Web服務的調用除這種類似RPC的方式外,還可以是基於消息的方式,服務使用者可以只接收消息,或是只發送消息,在一些應用中這種方式十分有用。

內容總結一下就是:Web服務是SOA的實現,Web服務不是RPC。

E. 什麼是web五層結構

就是B/W/C/D/C結構
B: Browser; W: Web Server; C: CRUBA Server; D: Database; C: Client

傳統的Web資料庫B/W/D結構也逐漸暴露出了許多不足:
(1)由於瀏覽器只是為了進行Web瀏覽而設計的,當其應用於Web應用系統時,許多功能不能實現或實現起來比較困難。比如:通過瀏覽器進行大量的數據的錄入,或進行報表答應都是非常困難和不便的。
(2)復雜應用構造困難。雖然可以用ActiveX,Java等技術開發較為復雜的應用,但是相對於發展已經非常成熟C/S的一系列應用工具來說,這些技術的開發復雜,並沒有完全成熟的技術供使用。
(3)Web Server成為Database的唯一的客戶端,所有對資料庫的連接都通過該伺服器實現,Web伺服器同時要處理與客戶請求及資料庫伺服器的連接,當訪問量大時,Server負載過重。
2.1 Web資料庫的五層體系結構
正是由於B/W/D結構自身具有的這些弱點,為了改善其不足,在其基礎上,提出了一新的結構體系—— B/W/C/D/C結構

五層體系結構有如下優點:
(1)充分發揮了B/S結構與C/S結構系統的優勢,揚長避短。充分考慮用戶利益,保證瀏覽查詢者操作方便的同時也使得系統的更新簡單,維護簡單靈活,易於操作。
(2)信息發布端採用B/S結構,保持了瘦客戶端的優點。裝入客戶機的軟體可以採用統一的WWW瀏覽器。而且由於WWW瀏覽器和網路綜合伺服器都基於工業標准,可以在所有平台上工作。客戶機或伺服器的操作系統也可以完全統一,客戶端存在的各種問題迎刃而解。
(3)資料庫端採用C/S結構,通過ODBC/JDBC進行連接。這一部分的功能只涉及到系統維護,數據更新等,客戶端很少,不存在完全採用C/S結構帶來的客戶端維護工作量大等缺點。並且,在客戶端上可以構造非常復雜的應用,界面友好靈活,易於操作,能解決許多B/S存在的固有的缺點。
(4)許多原有的基於C/S結構的系統可以非常容易地升級到五層體系結構,只需要開發用於發布的WWW界面,可以保留原有的C/S結構的某些子系統,充分地利用現有資源。使得現有系統或資源無需進行大的改造即可以連接使用,保護了用戶以往的投資。
(5)由於應用了CORBA伺服器,對資料庫的訪問提供了一個統一的介面,使CORBA伺服器具有共享性,形成了模塊性更強的結構,更易擴充,升級。

F. 簡述web技術的結構

它是超級文本的簡稱。 二、超媒體(hypermedia) 超媒體是超文本(hypertext)和多媒體在信息瀏覽環境下的結合。它是超級媒體的簡稱。用戶不僅能從一個文本跳到另一個文本,而且可以激活一段聲音,顯示一個圖形,甚至可以播放一段動畫。 Internet採用超文本和超媒體的信息組織方式,將信息的鏈接擴展到整個Internet上。Web就是一種超文本信息系統,Web的一個主要的概念就是超文本連接,它使得文本不再象一本書一樣是固定的線性的。而是可以從一個位置跳到另外的位置。可以從中獲取更多的信息。可以轉到別的主題上。想要了解某一個主題的內容只要在這個主題上點一下,就可以跳轉到包含這一主題的文檔上。正是這種多連接性把它稱為Web。 三、超文本傳輸協議(HTTP) Hypertext Transfer Protocol超文本在互聯網上的傳輸協議。 當你想進入萬維網上一個網頁, 或者其他網路資源的時候,通常你要首先在你的瀏覽器上鍵入你想訪問網頁的統一資源定位符(UniformResourceLocator),或者通過超鏈接方式鏈接到那個網頁或網路資源。這之後的工作首先是URL的伺服器名部分,被名為域名系統的分布於全球的網際網路資料庫解析,並根據解析結果決定進入哪一個IP地址(IP address)。 接下來的步驟是為所要訪問的網頁,向在那個IP地址工作的伺服器發送一個HTTP請求。在通常情況下,HTML文本、圖片和構成該網頁的一切其他文件很快會被逐一請求並發送回用戶。 網路瀏覽器接下來的工作是把HTML、CSS和其他接受到的文件所描述的內容,加上圖像、鏈接和其他必須的資源,顯示給用戶。這些就構成了你所看到的「網頁」。 大多數的網頁自身包含有超鏈接指向其他相關網頁,可能還有下載、源文獻、定義和其他網路資源。像這樣通過超鏈接,把有用的相關資源組織在一起的集合,就形成了一個所謂的信息的「網」。這個網在網際網路上被方便使用,就構成了最早在1990年代初蒂姆·伯納斯-李所說的萬維網。 傳統的Web資料庫系統體系結構 傳統的Web資料庫系統一般實現Web資料庫系統的連接和應用可採取兩種方法,一種是在Web伺服器端提供中間件來連接Web伺服器和資料庫伺服器,另一種是把應用程序下載到客戶端並在客戶端直接訪問資料庫。中間件負責管理Web伺服器和資料庫伺服器之間的通信並提供應用程序服務,它能夠直接調用外部程序或腳本代碼來訪問資料庫,因此可以提供與資料庫相關的動態HTML頁面,或執行用戶查詢,並將查詢結果格式化成HTML頁面。通過Web伺服器返回給Web瀏覽器。最基本的中間件技術有通過網關介面CGI和應用程序介面API兩種。 (一)、基於通用網關介面CGI CGI是WWW伺服器運行時外部程序的規范,按照CGI編寫的程序可以擴展伺服器的功能,完成伺服器本身不能完成的工作,外部程序執行時間可以生成HTML文檔,並將文檔返回WWW伺服器。CGI應用程序能夠與瀏覽器進行交互作用,還可以通過資料庫的API與資料庫伺服器等外部數據源進行通信,如一個CGI程序可以從資料庫伺服器中獲取數據,然後格式化為HTML文檔後發送給瀏覽器,也可以將從瀏覽器獲得的數據放到資料庫中。幾乎使用的伺服器軟體都支持CGI,開發人員可以使用任何一種WWW伺服器內置語言編寫CGI,其中包括流行的C、C、VB和Delphi等。 從體系結構上來看,用戶通過Web瀏覽器輸入查詢信息,瀏覽器通過HTTP協議向Web伺服器發出帶有查詢信息的請求,Web伺服器按照CGI協議激活外部CGI程序,由該程序向DBMS發出SQL請求並將結果轉化為HTML後返回給Web伺服器。再由Web伺服器返回給Web瀏覽器。這種結構體現了客戶/伺服器方式的三層模型,其中Web伺服器和CGI程序實際起到了HTML和SQL轉換的網關的作用。CGI的典型操作過程是:分析CGI數據;打開與DBMS的連接;發送SQL請求並得到結果;將結果轉化為HTML;關閉DBMS的連接;將HTML結果返回給Web伺服器。 基於Web的資料庫訪問利用已有的信息資源和伺服器。其訪問頻率大,尤其是熱點數據。但其主要的缺點是:①客戶端與後端資料庫伺服器通信必須通過Web伺服器,且Web伺服器要進行數據與HTML文檔的互相轉換,當多個用戶同時發出請求時,必然在Web伺服器形成信息和發布瓶頸。②CGI應用程序每次運行都需打開和關閉資料庫連接,效率低,操作費時;③CGI應用程序不能由多個客戶機請求共享,即使新請求到來時CGI程序正在運行,也會啟動另一個CGI應用程序,隨著並行請求的數量增加,伺服器上將生成越來越多的進程。為每個請求都生成進程既費時又需要大量內存,影響了資源的使用效率,導致性能降低並增加等待時間;④由於SQL與HTML差異很大,CGI程序中的轉換代碼編寫繁瑣,維護困難;⑤安全性差,缺少用戶訪問控制,對資料庫難以設置安全訪問許可權;⑥HTTP協議是無狀態且沒有常連接的協議,DBMS事務的提交與否無法得到驗證,不能構造Web上的OLTP應用。 (二)、基於伺服器擴展的API 為了克服CGI的局限性,出現的另一種中間件解決方案是基於伺服器擴展API的結構。與CGI相比,API應用程序與Web伺服器結合得更加緊密,佔用的系統資源也少得多,而運行效率卻大大提高,同時還提供更好的保護和安全性。 伺服器API一般作為一個DLL提供,是駐留在WWW伺服器中的程序代碼,其擴展WWW伺服器的功能與CGI相同。WWW開發人員不僅可以API解決CGI可以解決的一切問題,而且能夠進一步解決基於不同WWW應用程序的特殊請求。各種API與其相應的WWW伺服器緊密結合,其初始開發目標伺服器的運行性能進一步發掘、提高。用API開發的程序比用CGI開發的程序在性能上提高了很多,但開發API程序比開發CGI程序要復雜得多。API應用程序需要一些編程方面的專門知識,如多線程、進程同步、直接協議編程以及錯誤處理等。目前主要的WWWAPI有Microsoft公司的ISAPI、Netscape公司的NSAPI和OReily公司的WSAPI等。使用ISPAI開發的程序性能要優於用CGI開發的程序,這主要是因為ISAPI應用程序是一些與WWW伺服器軟體處於同一地址空間的DLL,因此所有的HTTP伺服器進程能夠直接利用各種資源這顯然比調用不在同一地址空間的CGI程序語句要佔用更少的系統時間。而NSAPI同ISAPI一樣,給WWW開發人員定製了NetscapeWWW伺服器基本服務的功能。開發人員利用NSAPI可以開發與WWW伺服器的介面,以及與資料庫伺服器等外部資源的介面。 雖然基於伺服器擴展API的結構可以方便、靈活地實現各種功能,連接所有支持32位ODBC的資料庫系統,但這種結構的缺陷也是明顯的:①各種API之間兼容性很差,缺乏統一的標准來管理這些介面;②開發API應用程序也要比開發CGI應用復雜得多; ③這些API只能工作在專用Web伺服器和操作系統上。 (三)、基於JDBC的Web資料庫技術 Java的推出,使WWW頁面有了活力和動感。Internet用戶可以從WWW伺服器上下載Java小程序到本地瀏覽器運行。這些下載的小程序就像本地程序一樣,可獨立地訪問本地和其他伺服器資源。而最初的Java語言並沒有資料庫訪問的功能,隨著應用的深入,要求Java提供資料庫訪問功能的呼聲越來越高。為了防止出現對Java在資料庫訪問方面各不相同的擴展,JavaSoft公司指定了JDBC,作為Java語言的資料庫訪問API。 採用JDBC技術,在JavaApplet中訪問資料庫的優點在於:直接訪問資料庫,不再需要Web資料庫的介入,從而避開了CGI方法的一些局限性;用戶訪問控制可以由資料庫伺服器本地的安全機制來解決,提高了安全性;JDBC是支持基本SQL功能的一個通用低層的應用程序介面,在不同的資料庫功能的層次上提供了一個統一的用戶界面,為跨平台跨資料庫系統進行直接的Web訪問提供了方案。從而克服了API方法一些缺陷;同時,可以方便地實現與用戶地交互,提供豐富的圖形功能和聲音、視頻等多媒體信息功能。 JDBC是用於執行SQL語句的Java應用程序介面API,由Java語言編寫的類和介面組成。Java是一種面向對象、多線程與平台無關的編程語言,具有極強的可移植性、安全性和強健性。JDBC是一種規范,能為開發者提供標準的資料庫訪問類和介面,能夠方便地向任何關系資料庫發送SQL語句,同時JDBC是一個支持基本SQL功能的低層應用程序介面,但實際上也支持高層的資料庫訪問工具及API。所有這些工作都建立在X/Open SQL CLI基礎上。JDBC的主要任務是定義一個自然的Java介面來與X/OpenCLI中定義的抽象層和概念連接。JDBC的兩種主要介面分別面向應用程序的開發人員的JDBC API和面向驅動程序低層的JDBC DriverAPI。JDBC完成的工作是:建立與資料庫的連接;發送SQL語句;返回數據結果給Web瀏覽器。

G. 如何讀懂Web服務的系統架構圖

大數據數量龐大,格式多樣化。大量數據由家庭、製造工廠和辦公場所的各種設備、互聯網事務交易、社交網路的活動、自動化感測器、移動設備以及科研儀器等生成。它的爆炸式增長已超出了傳統IT基礎架構的處理能力,給企業和社會帶來嚴峻的數據管理問題。因此必須開發新的數據架構,圍繞「數據收集、數據管理、數據分析、知識形成、智慧行動」的全過程,開發使用這些數據,釋放出更多數據的隱藏價值。

一、大數據建設思路

1)數據的獲得

四、總結

基於分布式技術構建的大數據平台能夠有效降低數據存儲成本,提升數據分析處理效率,並具備海量數據、高並發場景的支撐能力,可大幅縮短數據查詢響應時間,滿足企業各上層應用的數據需求。

H. 架構Web Service:什麼是Web服務

鬆散耦合,這一特徵也是源於對象/組件技術,當一個Web服務的實現發生變更的時候,調用者是不會感到這一點的,對於調用者來說,只要Web服務的調用界面不變,Web服務的實現任何變更對他們來說都是透明的,甚至是當Web服務的實現平台從J2EE遷移到了.NET或者是相反的遷移流程,用戶都可以對此一無所知。對於鬆散耦合而言,尤其是在Internet環境下的Web服務而言,需要有一種適合Internet環境的消息交換協議
。而XML/SOAP正是目前最為適合的消息交換協議。
使用協約的規范性,這一特徵從對象而來,但相比一般對象其界面規范更加規范化和易於機器理解。首先,作為Web服務,對象界面所提供的功能應當使用標準的描述語言來描述(比如WSDL);其次,由標准描述語言描述的服務界面應當是能夠被發現的,因此這一描述文檔需要被存儲在私有的或公共的注冊庫裡面。同時,使用標准描述語言描述的使用協約將不僅僅是服務界面,它將被延伸到Web服務的聚合、跨Web服務的事務、工作流等,而這些又都需要服務質量(QoS)的保障。其次,我們知道安全機制對於鬆散耦合的對象環境的重要性,因此我們需要對諸如授權認證、數據完整性(比如簽名機制)、消息源認證以及事務的不可否認性等運用規范的方法來描述、傳輸和交換。最後,在所有層次的處理都應當是可管理的,因此需要對管理協約運用同樣的機制。
使用標准協議規范,作為Web服務,其所有公共的協約完全需要使用開放的標准協議進行描述、傳輸和交換。這些標准協議具有完全免費的規范,以便由任意方進行實現。一般而言,絕大多數規范將最終有W3C或OASIS作為最終版本的發布方和維護方。
高度可集成能力。由於Web服務採取簡單的、易理解的標准Web協議作為組件界面描述和協同描述規范,完全屏蔽了不同軟體平台的差異,無論是CORBA、DCOM還是EJB都可以通過這一種標準的協議進行互操作,實現了在當前環境下最高的可集成性。
Web Service "Stack"在前一節中,我們已經了解到為了完成在鬆散耦合的環境下的對象訪問,以及在基本對象訪問之上的諸如事務、工作流、安全機制等。實現一個完整的Web服務體系需要有一系列的協議規范來支撐。
其中,綠色部分是先前已經定義好的並且廣泛使用的傳輸層和網路層的標准:IP、HTTP、SMTP等。而藍色部分是目前開發的Web服務的相關標准協議,包括服務調用協議SOAP、服務描述協議WSDL和服務發現/集成協議UDDI,以及服務工作流描述語言WSFL。而橙色部分描述的是更高層的待開發的關於路由、可靠性以及事務等方面的協議。黃色部分是各個協議層的公用機制,這些機制一般由外部的正交機制來完成。
首先,這些協議本身都是簡單的,無論是HTTP, FTP等傳統的TCP/IP系統的網路協議,還是SOAP, WSDL, UDDI, WSFL等基於XML的協議,他們設計原則中的一個最重要點就是力求簡單性。相信大家如果對XML、SOAP等有深入了解的話,一定會深深體會這一點。
其次,一個可以使用的Web服務應當按照需要選用若干層次的功能,而無需所有的特性。比如在目前狀況下,一個簡單應用可能只要使用WSDL/SOAP就可以架構一個符合規范的Web服務了。
最後,所有的機制完全是基於現有的技術,並沒有創造一個完全的新體系。無論是IPv4、HTTP、FTP這些現有的網路協議,還是SOAP、WSDL等這些基於XML而定義的協議都是遵循著一個原則:繼承原有的被廣泛接受的技術,這樣才能使得Web服務被廣泛接受。
Web服務的類別綜合當今的Web應用以及Web服務的特點,我們認為Web服務實施的領域可以分為四類:Business-Oriented Web Service: 該類服務針對的是那些面向企業應用服務,包括企業內部的ERP系統,企業間的SCM/CRM等系統。當這些系統以Web服務的形式在網路(Internet和intranet)中出現時,企業內的應用集成將更未容易,而在企業間的眾多合作夥伴的系統對接也將不再是無法完成的任務。目前現有的解決方案和產品的提供商有Bowstreet、Epicentric等。
Consumer-Oriented Web Service: 此類服務針對的是那些原先的B2C的網站的改造,為這些Browser-Oriented的Web應用增加(注意是增加)了Web服務的應用界面,使得第三方的桌面工具或其自身提供的增值的桌面工具能夠利用更優秀的用戶界面提供跨越多個B2C服務的桌面服務。這將使得用戶使用Internet更為方便,能夠獲得更加便捷的服務。比如我們完全就可以在個人理財桌面系統中集成(調用)Internet上的股票價格查詢Web服務、機票預定Web服務等,使得個人理財應用的自動化程度更高。
Device-Oriented Web Service: 此類服務的使用終端一般是手持設備和日用家電,對於前者而言,可以在不用修改網路服務的體系架構的前提下,令先前的網路服務支持除PC以外的各種終端,比如Palm、PocketPC、手機等。如此,那些天氣預報服務、Email服務、主動信息服務等將更為有效和便捷。而後者對於日用家電,則可能是一個市場的啟動期,有了Web服務作為基礎框架,智能型的日用家電將真正獲得標準的支持,從而有了廣泛使用的可能。
System-Oriented Web Service: 一些傳統意義上的系統服務,比如用戶許可權認證,系統監控等,如果被遷移到全球范圍的Internet上,或者企業內部的intranet上,其作用范圍將從單個系統或局部網路拓展到整個企業網路或整個Internet。如此,基於同一系統服務的不同應用將得以在整個Internet環境中部署,譬如跨國企業的所有在線服務可以使用同一個用戶許可權認證Web服務。
Web服務: 當今的技術最亮點以上這幅圖是Gartner Group在研究了所有IT主流時尚技術的發展道路後,作出的抽象模型。Y軸表明技術的受關注程度,而X軸則表示技術的應用的成熟度。每一項技術在從出現到成熟的整個過程都將沿著圖中的曲線前進,而且典型地,都將被劃分為五個階段:技術顯現:一門技術被發明或定義之後,開始進入公眾的視野;
不斷膨脹的期望期:由於該項技術的劃時代的突破,使人們對這項技術有著無比美好的想像和期望,這一階段類似"網路的泡沫器";
希望破滅之後的醒悟期:由於每項技術都不是萬能的,真正獲得使用仍然需要務實的加以應用研究,因此此時人們發現這項技術似乎並沒有期望中那麼有用,這一階段類似"網路的泡沫破滅";
豁然開朗的應用發展期:經過了一個階段的開發和研究,該項技術終於走上了良性發展的軌道,越來越多的人接受並使用了該項技術;
大量的工業化生產期:該項技術成為業界主流,大量應用在具體的環境中。

I. .Web服務的原理是什麼,描述一下Web服務的基本架構和主要技術。

提供一種統一的、面向組件的編程模型。
Web Service的體系結構描述了三個角色(服務提供者、服務請求者、服務代理者)以及三個操作(發布、查找、綁定)。
Web主要技術特徵:在傳輸層和網路層採用TCP/IP協議,預設斷口的80;在應用層採用HTTP協議,使用HTML文檔實現信息交互;基本上運行在C/S模式下。

J. 在Web應用程序體系結構中,()服務用來保證Web站點和應用程序的數據完整性。(選擇一項)

d、證書