青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 181, 文章 - 2, 評論 - 85, 引用 - 0
數據加載中……

FastSOA:用 XML、XQuery 和本機 XML 數據庫技術加速 SOA-----中間層 SOA 緩沖體系結構的作用

很多 SOA 實現都依賴于用 XML 定義的消息格式。結果,消息模式可能變得非常復雜、不兼容、難以維護,甚至造成嚴重的可伸縮性和性能問題。在本文中,Frank Cohen 將介紹如何通過在 SOA 中間層使用 XML、XQuery 和本機 XML 數據庫技術來提高 SOA 性能的戰略和技術。

很多軟件架構師在面向服務體系結構(SOA)設計中使用 XML,雖然沒有一種 SOA 標準要求在 SOA 中使用 XML 或者提供相關指南。因此,軟件開發社區做了很多實驗和調查來發現定義服務端點和消息定義(模式)的最佳方式。這些方法大多數都會帶來了糟糕的性能和可伸縮性。

比如,最早提出用 SOA 實現 ebXML 的 General Motors Corp.,其最初的設計使用的是 Universal Business Language (UBL),建立的 XML 消息有 150,000 字節到 10 兆字節甚至更大。2004 年,我的性能測試公司 PushToTest 認為當時的 Java? 應用程序服務器沒有提供足夠的吞吐量,在 GM Web Services Performance Benchmark 研究中提出了可伸縮性和性能問題。

當時基于 XML 的 Web 服務技術還非常新,我認為新一代應用程序服務器技術會解決性能問題。但大部分問題仍然存在。

Web 服務吞吐量問題和復雜的 XML

2005 年,PushToTest 完成了一項新的 SOA 性能研究(請參閱參考資料)表明,在處理復雜的 XML 消息時,使用當前 Java 應用程序服務器構建的應用程序其性能很差,不足以投入生產。是發現的問題和以前研究中的問題相同:

  • 簡單對象訪問協議(SOAP)綁定(代理)低效而緩慢。
  • 每次請求都需要一組全新的資源(對象、CPU 和網絡帶寬)來處理響應。沒有緩沖模式。
  • 使用關系數據庫技術存儲 XML 數據非常慢而且沒有可伸縮性。
為了了解這三個問題,設想一下軟件開發人員如何使用 J2EE 應用程序服務器工具構建和部署 XML 服務。


圖 1. WSDL 定義的例子
圖 1. WSDL 定義的例子

雖然可以使用使用不同技術建立基于 XML 的 Web 服務,但我發現多數開發人員更愿意從服務的 Web Services Description Language (WSDL) 定義開始。Java 應用程序服務器提供了輸入 WSDL定義和生成代理類的工具。代理器接收 SOAP 請求并把請求轉發給 Java 對象或 Enterprise Java Bean (EJB) 進行處理。SOAP 綁定(代理器)是一種 Java 類,可通過 servlet 接口調用它。


圖 2. Java 方法調用
圖 2. Java 方法調用

圖 2 說明了 Web 服務消費者如何向服務發出 SOAP 請求。SOAP 綁定對 SOAP 消息體中的 XML 內容進行反序列化。這個過程需要進行大量的處理,非常復雜,因為消息體常常包含復雜的數據類型。比如,消費者可能向服務發送包含多個值的散列表。SOAP 綁定需要解碼散列表的內容,對每個值創建 Java 對象的實例。散列表還可能包含其他散列表,因此解碼 SOAP 消息內容不是一件容易的事。如果不相信的話,請看一看 Apache Axis 反序列化器的源代碼。

SOAP 綁定實例化包含 SOAP 消息體內容的 Java Request 對象。SOAP 綁定調用目標類中的目標方法,并將 Request 對象作為參數傳遞。目標 EJB 或 Java 對象提供所有必要的處理來建立對請求的響應。SOAP 綁定將 EJB 或 Java 對象返回的值序列化到 SOAP 響應消息中。SOAP 綁定將響應對象中的值解碼成能夠序列化到 SOAP 響應消息中的值需要經過同樣復雜的過程。

通過研究用流行的 Java 應用程序服務器工具創建的 SOAP 綁定,我發現了以下問題:

  • 應用程序服務器工具創建的 SOAP 綁定效率很低。比如,我發現某些 SOAP 綁定創建 SOAP 請求的多個副本,每個請求都實例化為 String 對象 —— 這樣做并沒有明顯的理由。一些 SOAP 綁定創建了 15,000 個 Java 對象來反序列化消息體中包含 500 個元素的 SOAP 請求。
  • 在配備有雙 CPU 3.0 GHz Intel Xeon 處理器的服務器上,我發現在處理有效負荷 10,000 字節、包含 50 個元素的簡單 SOAP 消息時,每秒處理的事務為 15 到 20 個(TPS)。隨著 SOAP 消息復雜性和大小的增加,我發現會造成明顯的伸縮性和性能問題。有效負荷 100,000 字節、包含 750 個元素的 SOAP 消息會把吞吐量降低到 1.5 TPS。SOAP 消息體中元素個數越多,每個元素嵌套越深,問題就會越嚴重。

性能問題在 SOA 設計中會引起連鎖反應。SOA 是一種組件軟件重用技術。一個服務通常調用其他服務來確定對消費者請求的響應,從而形成一個調用鏈。


圖 3. 消費者
圖 3. 消費者

不僅僅是一個服務的性能問題,每個服務在序列化、反序列化請求和響應的時候都會增加同樣的開銷。隨著服務調用層次的增加,性能問題也成倍增加。

加快 SOA 失去的機會

除了 SOAP 綁定代理速度慢的問題,SOA 設計還常常忽略或者忽視另外兩個問題。

首先,SOA 設計常常忽視了用中間層服務緩沖來提高 SOA 性能的可能性。比如多數 SOA 設計中的 XML 模式都定義了了響應的 time-to-live 值。在這種情況下,緩沖服務響應并在服務再次收到同樣的請求時重新使用緩沖的響應是一種提高 SOA 服務性能的合理而適當的方法。

其次,在 SOA 性能測試中,我嘗試了各種不同的 XML 消息解析方法,其中包括 Streaming API for XML (StAX)、XML 綁定編譯器、Java Architecture for XML Binding (JAXB) 和 Document Object Model (DOM) 技術。一些技術的性能要優于另一些。比如,很多 StAX 解析器能夠提供比 DOM 解析器快 2 到 10 倍的性能。

我懷疑如果使用其他東西而不是 Java 對象來提供 SOAP 綁定是否能夠改進性能。比如,如果收到的 SOAP 請求在本機 XML 環境中處理,那么基于 Java 的 SOAP 綁定就不再是必需的了,同時還可以避免因為序列化成 Java 對象而導致的性能降低。

此外,一些本機 XML 環境使用 Java Virtual Machine 環境,但會避免構造 Java 對象。比如,Raining Data 的 TigerLogic XDMS 和 Kawa/Qexo 通過將 XQuery 查詢直接轉換成 Java 字節碼來實現 XML 處理代碼。這樣做是因為與使用 Java 對象相比,使用 XQuery 字節碼實現的 XML 處理代碼的吞吐量更大,代碼更短。

FastSOA 解決方案

FastSOA 是解決這些問題的一種體系結構和軟件編碼實踐:

  • FastSOA 通過減少 Java 對象的需要,更多使用本機 XML 環境提供 SOAP 綁定來解決 SOAP 綁定(代理)性能問題。
  • FastSOA 引入了中間層服務緩沖來加快 SOA 服務。
  • FastSOA 使用本機 XML 持久性來避免 XML 到關系數據庫的轉換造成的性能問題。

下圖顯示了 FastSOA 體系結構。


圖 4. FastSOA 體系結構
圖 4. FastSOA 體系結構

FastSOA 體系結構與現有的基于 Web 的基礎結構結合在一起,作為中間層緩沖部署來接收服務消費者的請求。比如,一個消費者向服務發出 SOAP 請求。中間層緩沖提供 SOAP 綁定(代理)。綁定調用 XQuery 在 XQuery 引擎處理 XML 請求文檔。XQuery 檢查緩沖,查看以前是否收到該請求;在這種情況下,FastSOA 服務可以從緩沖中返回響應,不需要逆流而上再請求服務。該過程通過緩沖加快 SOA 執行從而實現了 SOA 提速。

FastSOA 方法的優點包括:

  • 服務端點是標準的。對于應用程序的其他部分而言,FastSOA 中間層緩沖就像是一種服務。
  • 不需要修改現有的系統或代碼。FastSOA 中間層緩沖作為一種數據聚合和遷移服務嵌入到已有的數據中心。
  • 如果上游服務暫時不能用,當服務離線的時候,FastSOA 方法提供了一種瀏覽緩沖數據的機制。
  • 通過緩沖服務的請求降低了為支持消費者和服務之間的通信通常所需的帶寬要求。

為了從實踐的角度理解 FastSOA,考慮下面的應用程序。

XML 的例子

General Motors 采用 SOA 模式創建服務,讓汽車代理商使用基于 ebXML 的模式和協議從生產廠家訂購零部件。該服務能夠識別 Software Technology in Automotive Retailing (STAR) 組織的一種 XML 模式。STAR 是大型汽車廠商共同努力的結果,其中包括 GM。STAR 創建并維護 Business Object Document (BOD) 模式,定義了目錄檢查請求(以及其他許多東西)。

CheckInventory 請求檢查請求者和目錄的級別與狀態。服務消費者根據 STAR 模式創建目錄請求文檔。消費者將文檔編組成請求,并通過網絡發送給服務。服務發回目錄狀態響應說明庫存中有哪些零部件。

通過降低網絡帶寬的需要和減少為了響應冗余請求而造成的服務帶寬需要,零件訂購服務可以從 FastSOA 模式中受益。

比方說,汽車零售商的零件目錄響應中包含一個 Time-To-Live (TTL) 元素。TTL 元素定義了響應有效的秒數。比如 GM 可能將其設為 60 秒。在這 60 秒內,FastSOA 用中間層存儲的目錄響應緩存響應目錄請求。這樣服務就減少了帶寬的使用,并縮短了請求響應時間。

下表說明了如何計算網絡中的服務提速效果,這些服務位于本地網絡之外的服務器上,FastSOA 數據緩沖收集服務在本地網絡中。


表 1. 計算服務加速效果
動作無緩沖2啟用緩沖2
第一次請求處理的時間1765122181
在緩沖中存儲請求的時間014531
后續相同或冗余請求176513201
使用的 Internet 帶寬30,400 K 字節304 K 位
使用的總時間2941 分鐘533 分鐘

1這里所有的時間都是毫秒,1 秒 = 1,000 毫秒。

2假設:

  • 消費者和緩沖服務使用 100 M 以太網連接和 1.5 M 左右的 DSL 連接。
  • Time to Live (TTL) 為 60 秒。
  • 請求/響應包含 38,000 個字節。
  • TTL 期間有 100,000 次請求。
?

??

在 FastSOA 實現中,用 XQuery 實現零部件訂購服務。XQuery 請求目錄服務,讀取響應的內容,在運行時確定是否可以使用以前存儲的響應而不必再次請求目錄服務。

這樣就在服務環境中實現了 FastSOA 數據緩沖收集體系結構。XQuery 和本機 XML 數據庫提供了重用以前緩沖響應數據的服務,只要請求與以前的請求匹配并且數據仍然不過時。結果是服務提速了。

FastSOA 技術選擇

可以使用 Java 代碼和關系數據庫技術實現 FastSOA 體系結構。但是,在測試使用 Java 對象創建的服務綁定和使用關系數據庫持久 XML 時,我發現了重要的性能和可伸縮性問題。這些問題很突出,考慮使用 XQuery、XSLT 和本機 XML 數據庫技術很有必要。

我對 XQuery 感興趣,是因為它是作為應用程序開發的本機 XML 環境來實現的。與早期的 Java 技術非常相似,XQuery 社區充滿了擴張和證明 XQuery 是一種開發平臺的活力。實際上,多數 XQuery 實現都經過擴展超出了 XQuery 標準,以便 XQuery 能夠進行 SOAP 請求。比如,XQuery 可以查詢其他服務、J2EE 對象和通過 JDBC、SOAP、JMS 協議查詢數據源。此外,已經有 10 種或更多非常可靠的商業化和開放源碼 XQuery 實現。

最后,FastSOA 使用本機 XML 數據庫作為中間層緩沖,因為 SOA 數據通常采用 XML 編碼格式,而關系數據庫在持久存儲和索引 XML 這樣的層次性非結構化數據方面有很大不足。存儲 XML 數據的關系數據庫通常使用大型二進制對象(BLOB)字段類型存儲 XML。不僅效率低,而且很難建立索引以便快速搜索。對于流數據采用關系方法通常也不是最佳辦法。如果在基于 Web 服務的網絡中發送 XML 消息,最好用基于流的方法處理該消息,而關系數據庫對此無能為力。

FastSOA 的未來

除了本文所述的 SOAP 綁定性能改進之外,采用中間層服務緩沖還會為企業帶來很多好處。其他好處包括中間層模式轉換、服務版本化、策略選路和服務質量(QOS)處理。比如,FastSOA 提供了中間層 XML 消息模式轉換,以便保證需要不同和不兼容的消息類型的服務之間的兼容性。

結束語

本文考察了如何提升 SOA 的性能和可伸縮性,詳細介紹了在中間層使用 XQuery 支持結合 XML 持久的 SOA 設計所帶來的好處。FastSOA 設計結合使用了本機 XML 持久性和 XQuery,因此每次收到服務調用時,中間層都要決定是使用以前請求的緩沖值響應,還是傳遞請求。服務使用 XQuery 根據對服務請求元數據查詢的結果描述判定緩沖是否有效。

posted on 2006-04-17 02:16 wsdfsdf 閱讀(212) 評論(0)  編輯 收藏 引用 所屬分類: 技術文章

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美三区在线视频| 牛牛国产精品| 欧美韩日亚洲| 亚洲男人第一网站| 一本一本大道香蕉久在线精品| 国产日韩欧美自拍| 国产精品乱码一区二区三区| 欧美午夜一区二区三区免费大片 | 午夜精品www| 日韩一级裸体免费视频| 亚洲国产片色| 日韩亚洲欧美成人| 亚洲一级特黄| 久久综合五月| 欧美激情亚洲自拍| 国产精品jvid在线观看蜜臀| 欧美视频一区在线观看| 国产精品一区毛片| 亚洲国产欧美一区| 亚洲欧美综合网| 欧美黄色免费网站| 亚洲欧美中文在线视频| 免费久久99精品国产自| 国产精品久久国产愉拍 | 日韩天堂在线观看| 久久精品成人| 日韩视频免费在线| 久久久久亚洲综合| 国产精品私房写真福利视频| 在线观看亚洲精品| 国产精品国产三级国产aⅴ入口| 国产目拍亚洲精品99久久精品| 亚洲电影免费观看高清完整版在线| 日韩亚洲综合在线| 欧美高清在线一区| 久久精品亚洲精品| 国产日韩欧美视频| 亚洲欧美综合精品久久成人| 亚洲欧洲一区二区在线播放 | 久久久www成人免费毛片麻豆| 免费一级欧美片在线观看| 久久爱www久久做| 国产欧美日韩亚洲一区二区三区| 在线亚洲电影| 一区二区三区国产精品| 欧美日韩中文字幕在线| 亚洲女人av| 欧美专区日韩专区| 亚洲电影免费在线观看| 欧美电影打屁股sp| 欧美日韩成人| 欧美一区二区三区免费在线看| 亚洲欧美中文日韩在线| 国产自产精品| 亚洲精品看片| 国内精品模特av私拍在线观看| 麻豆九一精品爱看视频在线观看免费| 欧美在线免费播放| 一区二区三区精密机械公司| av成人国产| 亚洲国产欧洲综合997久久| 99国内精品久久| 一区二区三区中文在线观看 | 国产日韩一区二区三区在线| 久久久久国产精品厨房| 欧美久久电影| 欧美国产日韩一区二区在线观看| 欧美日韩国产a| 欧美激情一区二区三区全黄| 国产精品久久久久久久第一福利| 免费在线亚洲欧美| 黄色影院成人| 欧美一区91| 国产婷婷色一区二区三区在线 | 在线精品国产成人综合| 今天的高清视频免费播放成人 | 亚洲国产黄色| 久久亚洲风情| 欧美国产丝袜视频| 99精品视频免费全部在线| 久久综合九色综合欧美就去吻| 久久国产精品第一页| 国产一区二区三区久久精品| 亚洲制服少妇| 久久午夜精品| 99视频精品全部免费在线| 一区二区三区精品在线| 免费成人av资源网| 亚洲精品人人| 午夜精品999| 国产一区欧美| 欧美韩日一区二区| 日韩一级精品| 国产精品高清在线| 欧美淫片网站| 亚洲国产视频直播| 午夜精品网站| 99精品欧美一区二区三区| 国产精品第一页第二页第三页| 亚洲综合电影| 亚洲国内精品| 久久国产精品久久精品国产| 亚洲精品乱码久久久久久按摩观 | 欧美影院视频| 亚洲黄色片网站| 久久精品日韩欧美| 欧美在线www| 亚洲午夜精品国产| 日韩视频一区二区三区在线播放| 国产午夜精品美女视频明星a级| 免费成人美女女| 免费看的黄色欧美网站| 久久精品视频亚洲| 久久xxxx精品视频| 久久久av毛片精品| 久久久久国产免费免费| 久久国内精品自在自线400部| 宅男噜噜噜66国产日韩在线观看| 亚洲国产三级网| 亚洲精品日韩久久| 99视频超级精品| 一本久久青青| 西瓜成人精品人成网站| 久久超碰97人人做人人爱| 久久九九热re6这里有精品| 久久视频一区| 欧美视频观看一区| 国内精品一区二区| 亚洲激情小视频| 久久久久久久综合日本| 久久免费视频在线| 亚洲手机视频| 影音先锋日韩有码| 亚洲夜间福利| 亚洲视频久久| 免费高清在线一区| 久久国产精品黑丝| 国产精品夜夜夜| 宅男在线国产精品| 亚洲婷婷综合色高清在线| 麻豆精品视频在线| 免费在线亚洲欧美| 亚洲第一在线综合网站| 久久亚洲春色中文字幕久久久| 久久久久久夜| 在线欧美日韩国产| 免费观看日韩av| 亚洲全部视频| 日韩亚洲在线| 国产精品久久久久永久免费观看| 亚洲视频精品在线| 久久九九99视频| 亚洲高清自拍| 欧美日韩1区2区3区| 亚洲一区二区三区四区视频| 欧美在线播放| 亚洲国产精品久久久久秋霞影院 | 欧美综合国产| 久热精品视频在线观看一区| 亚洲黑丝一区二区| 欧美日韩国产一区精品一区| 亚洲综合色视频| 你懂的网址国产 欧美| 99精品国产热久久91蜜凸| 欧美视频在线免费看| 欧美资源在线观看| 亚洲人成网站999久久久综合| 午夜精品亚洲| 亚洲人成在线免费观看| 国产精品嫩草99av在线| 久久综合亚洲社区| 亚洲一品av免费观看| 欧美 日韩 国产一区二区在线视频| 99亚洲视频| 一区二区亚洲欧洲国产日韩| 欧美精品在线视频观看| 欧美在线3区| 亚洲精品中文字幕在线| 久久久亚洲一区| 亚洲专区在线| 亚洲精品欧美日韩专区| 国产日韩欧美日韩| 欧美日韩国产综合久久| 久久婷婷久久一区二区三区| 亚洲在线第一页| 亚洲国产另类久久精品| 久久精品女人的天堂av| 亚洲一区国产视频| 亚洲美女免费精品视频在线观看| 国产午夜精品福利| 国产精品日韩在线| 欧美视频国产精品| 欧美日韩国产成人在线免费| 久久综合中文字幕| 欧美一区二区三区精品电影| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲视频二区| 国产一区二区精品在线观看| 欧美日韩亚洲一区二区| 欧美电影免费观看|