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

隨筆 - 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>
            一区二区三区免费在线观看| 欧美一区二区三区四区视频 | 欧美暴力喷水在线| 久久久久久久久蜜桃| 久久久不卡网国产精品一区| 久久精品综合| 免费av成人在线| 欧美日一区二区三区在线观看国产免| 国产精品国产三级欧美二区 | 日韩视频在线观看一区二区| 夜夜爽www精品| 欧美一级视频免费在线观看| 麻豆久久婷婷| 亚洲精品一区在线观看香蕉| 亚洲手机成人高清视频| 久久国产精品久久国产精品| 免费国产一区二区| 国产精品毛片大码女人| 亚洲国产成人av| 午夜欧美不卡精品aaaaa| 狼人社综合社区| 一区二区三区 在线观看视频| 欧美中文在线免费| 欧美色欧美亚洲另类二区| 在线欧美不卡| 久久精品99国产精品| 亚洲精品一区二区三区不| 久久国产精品免费一区| 欧美午夜免费| 亚洲免费精品| 美玉足脚交一区二区三区图片| 一区二区三区福利| 欧美不卡视频一区发布| 国产欧美一区二区精品性| 亚洲视频在线观看| 欧美黄色网络| 久久久久久9999| 国产一区二区三区四区在线观看 | 欧美一级理论片| 欧美色视频一区| 一区二区三区精品| 亚洲国产另类久久久精品极度| 欧美一级大片在线观看| 国产精品久久久久999| 亚洲久色影视| 欧美韩日精品| 久久久91精品国产| 国语自产在线不卡| 久久久国产精品一区二区三区| 狠狠色狠色综合曰曰| 欧美亚洲成人网| 一本色道久久精品| 亚洲日本va午夜在线电影| 久久亚洲春色中文字幕久久久| 国产精品亚洲不卡a| 亚洲欧美日韩国产综合精品二区| 99xxxx成人网| 国产精品乱看| 欧美亚洲视频在线观看| 亚洲性视频h| 国产精品免费一区二区三区在线观看| 亚洲天堂av综合网| av成人免费| 欧美性猛交xxxx乱大交退制版| 99av国产精品欲麻豆| 亚洲精品影院| 国产精品福利网| 亚洲欧美日韩精品久久久| 亚洲视频一区| 国产亚洲视频在线| 猛干欧美女孩| 欧美精品色综合| 亚洲线精品一区二区三区八戒| 一区二区三区免费在线观看| 国产精品一区二区三区久久久| 久久黄色级2电影| 久久综合五月天婷婷伊人| 亚洲免费观看高清在线观看 | 欧美一区二区网站| 激情久久综合| 亚洲国产高清一区| 欧美午夜一区二区| 久久久久免费观看| 欧美激情在线| 欧美一级片在线播放| 久久全国免费视频| 亚洲一区二区三区在线看| 欧美在线一二三区| 一本到12不卡视频在线dvd| 亚洲一区二区三区四区五区黄| 国产亚洲精品资源在线26u| 欧美高清在线视频| 国产精品日韩欧美大师| 亚洲第一天堂无码专区| 国产精品理论片在线观看| 欧美成年人视频网站| 国产精品素人视频| 亚洲国产免费| 国产又爽又黄的激情精品视频| 欧美高清视频| 国产午夜亚洲精品不卡| 亚洲精品小视频| 伊伊综合在线| 亚洲欧美成aⅴ人在线观看| 91久久精品国产91久久性色| 性色av一区二区三区红粉影视| 日韩视频在线免费| 久久久久国产一区二区| 欧美一进一出视频| 欧美日韩成人在线视频| 久久综合影音| 蜜桃av噜噜一区| 亚洲精品偷拍| 在线日本高清免费不卡| 在线中文字幕一区| 亚洲激情综合| 久久精品国语| 久久久久欧美精品| 国产精品自拍在线| 亚洲精品影视| 夜夜嗨av一区二区三区四季av| 久久久噜噜噜久久| 久久久激情视频| 国产亚洲电影| 先锋影音久久| 欧美一区二粉嫩精品国产一线天| 欧美日韩一区在线| 亚洲精品少妇| 亚洲视频香蕉人妖| 欧美日韩中文在线| 亚洲最新色图| 午夜在线不卡| 国产日韩三区| 久久成人国产精品| 你懂的一区二区| 亚洲国产精品精华液2区45| 另类天堂视频在线观看| 老色鬼久久亚洲一区二区| 在线观看国产精品淫| 蜜桃av一区二区三区| 亚洲承认在线| 日韩视频国产视频| 欧美日韩亚洲网| 亚洲一区二区三区四区视频| 欧美一区91| 精品成人一区二区三区| 美女黄网久久| 亚洲美女中文字幕| 亚洲欧美日韩国产综合在线| 国产日韩精品在线观看| 久久久久久久一区二区| 欧美激情中文字幕一区二区| 日韩小视频在线观看专区| 欧美午夜精品一区| 欧美在线观看一区| 欧美成人精品在线| 一本色道久久88综合日韩精品| 国产精品免费一区二区三区在线观看 | 麻豆精品视频在线观看| 亚洲人成高清| 香蕉成人啪国产精品视频综合网| 国产一区二区三区在线观看网站 | 久久精品日产第一区二区| 亚洲盗摄视频| 欧美三级免费| 久久精品日产第一区二区三区| 亚洲激情中文1区| 欧美在线三区| 亚洲日本国产| 国产日韩欧美视频在线| 久久久99久久精品女同性| 久久久久免费视频| 久久精品av麻豆的观看方式| 国产精品二区影院| 亚洲男人第一网站| 免费在线国产精品| 亚洲国产高清高潮精品美女| 欧美理论视频| 性久久久久久久久久久久| 欧美激情一区二区三区在线视频 | 久久久久国产精品厨房| 亚洲电影下载| 久久国产视频网站| 日韩视频不卡| 在线色欧美三级视频| 国产精品永久免费| 欧美激情国产精品| 久久久久久久久岛国免费| 亚洲一区高清| 亚洲免费成人| 亚洲高清av在线| 久久一二三四| 欧美在线视频播放| 亚洲一区二区成人| 亚洲美女尤物影院| **网站欧美大片在线观看| 国产亚洲精品aa午夜观看| 国产精品99一区二区| 欧美日韩亚洲一区三区 | 亚洲国产精品久久久久婷婷884 |