999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于空間的編程

2008-12-31 00:00:00ANGERERBernhard周念軍劉英博
計算機應用研究 2008年10期

收稿日期:2007-10-29;修回日期:2008-03-04

作者簡介:ANGERER Bernhard(1970-),男,奧地利公民,博士,主要研究方向為面向對象的編程、面向服務的編程、組件體系結構、虛擬共享內存系統和語義環境計算系統(www.angerer.com).

(1.GigaSpaces Technologies Inc., New York 10017; 2.Rosensteel Beckmann LLC, New York 10016; 3.IBM Corporation, New York 10532; 4.清華大學 軟件學院, 北京 100084)

摘 要:全面地介紹了一種基于空間的中間層編程方法。這是一種以分布式虛擬共享內存為技術基礎設施的新型編程方法。其重要性在于它將分布計算的語義環境和問題領域的語義環境在極大程度上相分離,從而可以為今天軟件體系結構中存在的種種問題提供具有持續可靠性的解決方案。

關鍵詞:協調中間件;基于代理的體系結構;基于空間的體系結構;數據網格;Tuple 空間;Java 空間

中圖分類號:TP311.11

文獻標志碼:A

文章編號:1001-3695(2008)10-3022-04

Space-based programming

ANGERER Bernhard1, WANG Tong2, ZHOU Nian-jun3, LIU Ying-bo4

(1.GigaSpaces Technologies Inc., New York 10017, USA; 2. Rosensteel Beckmann LLC, New York 10016, USA; 3.IBM Corporation, New York 10532, USA; 4.School of Software, Tsinghua University, Beijing 100084, China)

Abstract:The intention of this paper gave a comprehensive overview about the space based approach to middleware. This model introduced a distributed, virtual shared memory infrastructure that came along with a new type of programming model. The significance is that it greatly decouples the semantics of distributed computing from the semantics of the problem domain and therefore provides sustainable answers to vivid problems in today’s software architectures.

Key words:coordination middleware; agent-based architecture; space-based architecture; data grids; Tuple spaces; Java spaces

基于空間的編程代表著分布式應用軟件的新型設計方法。當前占統治地位的分布式編程是以遠程過程調用(RPC)為基礎。這種方法突出地體現在 CORBA 技術平臺中,而且也是Web服務標準(Web-services standards)下的基本設計方法??臻g體系結構(space-based architecture)則用一種極其簡捷的模式完全取代了遠程過程調用。其固有的簡潔特性決定了它具有廣泛的適用性,并賦予其模塊性(modularity)、可擴展性 (scalability)和源代碼經濟性(source code economy)的優點。

20世紀80年代早期,為了支持分布式的應用軟件,耶魯大學的 Gelernter等人開發了一種名為Linda的編程語言[1,2],從而邁出了走向空間體系結構的第一步。Linda由一套數量不多的操作(operations)與一個全局共享的持續存儲,即所謂的Tuple 空間(名為Tuple 空間的技術基礎設施-infrastructure誕生并存在于大學的實驗室中;90年代后期,Sun Microsystems采納了空間的概念,創造了JavaSpaces 即Java 空間)—相結合構成。其協調規則與經典的編程語言特性互補因而可以輕松地融合于其中。研究結果顯示,使用這種體系結構,并行和分布計算中的大量問題均可以得到很好的解決。

當今,基于空間的編程已進入代表現代網格計算(grid)系統的主流范疇,深深地影響著所有有價值的應用軟件(applications)的工程設計,尤其是在高同步分布式(distributed)高性能的系統環境中:如何將不同的元素(進程,processes、對象,objects、服務程序,services、代理程序,agents,人)放入到這樣的一個工作系統中并使其在開放的和動態的環境中完成富有成效的通信、集成與合作,仍是當前最重要和最具挑戰性的技術問題之一。

隨著基于空間的普通協調中間件(middleware)成功地產業化地運用于復雜應用軟件的工程設計[3~5],2003年發表的同名原文逐漸得到了越來越多的關注[6]。本文是2003年文章的更新版本,保留了原文的主要結構但進一步豐富了一些細節,并添加了一個例子來說明基于空間的體系結構的運行和編程風格,同時補充了該技術應用方面的最新發展現狀。

1 分布式的共享內存

所謂空間指的是一個虛擬的、分布式的、共享的內存。實際上,這種內存系統的思想本身已是長期研發的對象,并不是什么新東西。新的是對于基于空間的編程模式的技術基礎設施的全面理解。這與面向對象的編程思想的發展過程很相似,即編程的工具先出現,但產生深遠影響的嚴謹理論則是在許多年以后才產生的(Jini 和 JavaSpaces 的區分與共通—視見解不同,為這種轉換增添了額外的障礙[7])。

空間的應用編程接口(API)本質上包含四種方法,即寫入、讀出、提取和通知。寫入和讀出分別用來存儲和訪問對象;提取用來在讀出之后消除對象;通知用來宣布空間的變化。

這種設計思想使得分布式系統的模型大為簡化[8]。在一個遠程過程調用的模型中,對象通過顯式(explicit)的過程調用來相互通信并進行同步(synchronize)。如果沒有額外的輔助措施,這種方法的可擴展性不會很好;一般來講,參加的對象越多,它們之間的通信線路就越長越復雜[9]。然而,在一個空間的模型中,空間本身在參加者(participants)之間起到同步的作用。在這種典型的黑板通信模式中,參加者:無須彼此了解(它們之間的交流是非連接的和匿名的);無須共享同樣的進程或機器(跨進程的-interprocess);暫時不依賴于彼此(異步的)。這種在所有三個維度上的全面自由度(圖1)會導致非常好而靈活的系統設計效果。

從實現層面上講,空間由空間服務程序提供,這種服務程序一般具備下列基本功能:

a)透明數據共享性??臻g全透明地滿足一個網絡(network)當中多進程的并發的數據共享操作。由于應用軟件的開發者無須知道相互之間交流的細節,分布式的數據結構(data structures)(比較[10, 11]) 很容易建立。實際上的數據交付機制(復制、傳播)發生在幕后并因執行而異。

b)持續性??臻g維護著一個存儲機制以確保對象的存在,直到某個進程明確地將它們消除,或由空間在租借期滿時將其消除。這樣一來,像聊天這樣的應用軟件在執行過程中就不再需要同時調用其參與程序。

c)相關性(associativity)。對象在空間中采用聯想的方式定位。讀出操作通過描述數據域的內容來尋找某一對象(也許采用空白的通配符)??臻g的搜索引擎則通過將值和類型相匹配來返回需要的對象。

d)交易性 (transaction)??臻g通過事務處理(transaction)模型來保證一個或多個空間中的一個或多個操作在執行過程中的原子性(atomicity)。

e)代碼轉移性 (code transfer)。對象作為被動數據以序列化的形式存在于空間中。然而,一經讀出,一個對象包含的數據就可以被修改,其方法(methods)也可以被調用。在Java中對象加載的任務由類加載程序完成。

空間服務程序的關鍵在于其所提供的基本范式(paradigm)的簡單性。它易于把握,無須復雜而曲折的學習過程;最低限度的應用層面編程可以極大地降低開發成本;此外,它通過將發送者(sender)與接收者(receiver)相分離,將連接它們的應用邏輯變得更簡單、更靈活、更穩定。這些特點尤其有助于大型應用軟件的構造、分析、測試和再利用。

2 主人—工人的模式

主人—工人模式(the master-worker pattern)[12]完美地示范了空間的方法在開發一個Web應用軟件中的運用。網絡服務器在收到客戶的請求(如向不同的檔案庫提出詢問)后,將其作為請求對象異步地放置到空間中(圖2)。相關的工作進程(worker processes)則并行反應處理請求,并將處理結果作為答復對象返回到空間中。網絡服務器在接收到答復通知后,再將答案按照用戶界面的要求重新包裝提供給客戶。

通過以空間作為通信媒體以及交流進程之間的完全分離,這一執行過程可以線性地伸縮。如果并發請求激增,只要根據需要添加額外的網絡服務器和工人機器(廉價的標準硬件)就可以了。一個工人程序代表一個檔案適配器。如要增加一個檔案庫,只要重新編寫一個適配器就可以將其引入一個正在運作的系統中。這種熱拔插的能力不僅有助于系統維護而且有助于系統開發和調試。

3 分布式的高速緩存

空間的另一個固有的內在特征是分布式的高速緩存(ca-ching)。工作進程可以事先將答復對象存放在空間里,只需維持著答案與請求之間的映射關系,當一個匹配的請求到達時即可將答復對象立刻返回。

眾所周知,從成本效益比的角度考慮,要在一個系統中實現最佳的負載(load)平衡通常不是件容易的事。對此,空間同樣提供了一條自然的捷徑[13]。工人程序非常清楚它們各自機器的負載,所以可以授權空間來負責對請求的再分配。只有在一個有足夠資源的工人程序存在的條件下,一個請求才會被空間接收。負載就這樣在工作進程和機器之間自行調整,而無須發布有關負載本身的信息。

概括起來,基于空間的編程方法具有以下優點:更快的開發周期;通過添加廉價標準硬件實現的高度可擴展性;負載從網絡服務器轉移到同時運行的工作進程上;編程接口之間完全分離;分布式的高速緩存;異構系統(heterogenous landscape)之間的簡單集成。

羅克希德馬丁公司(Lockheed Martin)的首席技術官Bill Rawlings 曾宣稱,他利用空間的編程方法得以將源代碼(相對于J2EE來說)減少三分之二[14]。不難想象這對于項目預算和時間表會帶來什么樣的影響。

基于空間編程的優點從根本上要歸功于以下因素:

a)基于黑板的體系結構??臻g代表一種新型的信息總線(bus),與整個異構系統之間只有一個界面。進程因此而同步觸發。

b)應用程序內活的對象。由于考慮到可擴展性的需要,數據庫通常是惟一能夠永久存放狀態信息的地方(無狀態的編程)。有了空間以后,技術和業務對象均可在空間中存儲其狀態,設計得以大大地簡化。阻抗失配(impedance mismat-ching)的問題失去其尖銳性。

c)最低限度的應用層面編程??臻g接口的簡單性是其所有顯著特點的關鍵。它避免了復雜的接口描述語言(如CORBA IDL)—— 參加者只需遵循固定的接口編程范式,因為他們都居于同一地址的空間。

上述因素可以被總結為基于空間的編程模式。請注意,這些模式的實現離不開下列基于空間技術的基礎設施:

d)對等式(peer-to-peer)引擎。因為空間是一個由引擎的聯邦創造的分布式被共享的內存,它沒有中心服務器(因而沒有單點失敗以及瓶頸問題)。

e)集群(clustering)和高速緩存模塊的融合。在傳統的n層的體系結構中,操作系統、數據庫和中間件均各有自己的高可用性和一致性模型。而在一個基于空間的系統中,所有與高可用性、可擴展性和高速緩存相關的問題均由同一套技術基礎設施來解決。

f)通信和協調模塊的融合。在傳統的分布式系統中,進程同步、遠程過程調用和信號傳遞分別由不同的模塊來操作。而在一個基于空間的系統中,所有軟件之間的通信和協調均由同一個機制來處理,不管它們是在同一地址的空間中對話,還是以同步或異步的方式遠程通話。

4 舉例

為了說明一個基于空間的體系結構是如何工作的,這里看一下貸款處理的例子。貸款處理涉及以下步驟:收集有關申請人的數據;檢驗申請人數據(即核實就業情況和銀行/投資賬戶余額);信用打分;風險分析和定價;保險以及完成。用基于空間的方法來實現這一過程,不同的任務被清晰地分成彼此通信的工人程序或服務程序。大家也可以將此看做是一個單一登錄的問題。不同的服務程序需要聯絡各種各樣的應用軟件來完成任務,彼此分離,但仍需要一個共同區域來共享它們的請求和結果。然而,在現有的系統中,這樣的一個操作比看上去要復雜得多,因為每個層次都需要有自己的高可用性和一致性模型。

目前,這樣的一個應用軟件只能以面向服務的方式來設計和開發。其產物就是所謂的工作流程應用軟件。其中每個服務程序同時既要維持多個對話,又要發送和接收消息。另外,鑒于使用環境(服務編制-service orchestration)或網絡環境(局域網/廣域網)有可能發生變化,服務程序的反應時間經過一段時期也會發生變化。

當前開發的這種應用軟件大多數成效不高。僅拿一個方面來看,每當消息進來時,程序都必須從數據庫中調出狀態信息,采取相應的行動,然后再將其存儲回去。這需要大量的重復代碼。同時還必須將其寫成一個由一套消息處理器(hand-ler)組成的事件驅動型程序,很難尋找邏輯流程。

空間通過讓你對有待分布的事實近乎忽略不計,將這樣的應用軟件變得非常容易寫。通信和協調的部分被抽象化了,因為代碼是在分布于幕后的數據結構上工作的。所謂的局部變量變成了空間入口。請求對象或條目被放入到空間中請求答復。通知對象也被放入到空間中以便在答案到達時被通知。在某個特定請求之前可能還有其他請求需要先處理。由于編程的復雜性被減少到幾乎只有一個單一內存,對協調的需要也就不知不覺地自行化解了。

圖3是本文的貸款處理一例的開始部分。

一定數量的軟件組件以一種完全分離的方式相互通信。一個組件提供申請人數據。另一個組件在這些對象到達時得到通知并提供相應的檢驗數據。第三個組件在等候這些數據以繼續進程鏈。

以上體現了空間的最基本的應用編程接口。條目的對象被寫入空間。事件/數據流的特點主要通過超時(timeout)設定(等候條目到達的時間)和租期(lease)設定(自動驅逐條目的時間)來決定。有關使用 JavaSpaces 的應用接口編程來實現分布式的數據結構的詳細描述參閱JavaSpaces Principles, Patterns, and Practice[11]。

雖然圖3描述的情形非常容易寫,但傳統上則視之為不可取,因為:每一個對話都要求有一個帶有某種同步機制的牽涉好幾個機器的線程(thread);沒有處理更多負載的可擴展性,需要另外想辦法;如果虛擬機(Java virtual machine, JVM或者common language runtime, CLR)關閉,所有有關正在進行的對話的信息都會丟失。

5 結束語

空間系統結構的魅力在于它在保證簡捷性的同時提供強大的功能[8]。與開發分布式應用軟件的其他模式相比,它設計簡單,節約開發和調試成本,使系統更健壯,維護和集成更容易??臻g的體系結構通過將復雜性從執行階段轉移到配置階段,成功地將分布計算的語義環境和問題領域的語義環境相分離。在此請注意,在以空間為基礎的系統結構中,配置不僅與分布計算環境相關,而且是解決性能和可擴展性問題的主要手段??臻g的引擎之所以能夠在差別很大的條件下(如讀操作密集或是寫操作密集)運行良好,這種靈活性都是由管理員通過配置來實現的。

空間體系結構的特征使其得以在虛擬程度大大提高的環境下實施和操作。這種環境將不僅抽象化地提供分布式、成批次、規?;⒖捎眯缘确眨覍㈤_啟一扇通向前所未有的快捷性和靈活性的大門,將設計和編程人員從當前只能靠漫長的時間和巨額投資才能解決的技術束縛之中解脫出來。有關空間評論如下:

“當Linda語言在邏輯上可以良好地適用于以下所有操作的時候,為什么還要用三個工具箱來分別處理并行應用(如消息傳遞)、單處理器(uniprocessor)(如帶鎖的共享內存)和跨網絡(trans-network)通信(如遠程過程調用)呢?”— David Gelenter [1]

“我設計和編寫了SPECTRE來與當前電子商務(E-business)中流行的典型的“三層”體系結構相比較。“三層”體系結構需要12 000多行代碼,兩個半人工和六個月的時間才能寫完。而與其性能相同的SPECTRE只需不到90行代碼,我用三個星期就寫完了。如果“Java空間”需要一些“重磅炸彈”才能被接納和認可的話,這些數字應該是足夠的了?!薄?Bill Rawlings[14]

“警告: 變革即在眼前。如果您想知道在將來應當如何設計和編寫服務器應用軟件……那么您應當往下讀……注意:拒絕是沒有用的?!薄?Sing Li[7]

“迄今為止,站在最前沿的用戶們都是通過對各類最好的技術加以整合來累加起具有高性能和高擴展性的應用軟件平臺。但新一代博大精深的標準化的XTP平臺將從網格技術、事件驅動型的結構體系、分布式的高速緩存和高性能通信的融合(convergence)之中誕生。”— Massimo Pezzini / Gartner[15]

“思維上的量子飛躍?!薄狟ill Joy[16]

目前已有一定數目的基于空間的系統投產使用。大多數這樣的系統所解決和處理的復雜程度遠遠超出傳統應用服務器所能處理的范圍,因為傳統服務器遵循以分層為基礎的模型[5],需要在應用層面、數據層面和通信層面上分別集群[17]。Gartner注意到這一新發展并開始賦予這類應用軟件一個新名詞,即XTP(extreme transaction processing)[18]。Gartner 給XTP下的定義是:網格技術、事件驅動型的結構體系、分布式的高速緩存平臺和高性能通信的融合[15]。這同樣也是對于基于空間的系統的恰當定義。

參考文獻:

[1] GELERNTER D, CARRIERO N. Coordination languages and their significance [J]. Communications of the ACM, 1992,35(2):97-107.

[2]GELERNTER D. Mirror worlds: or the day software puts the universe in shoebox...how it will happen and what it will mean[M]. [S.I.]:Oxford University Press, 1992.

[3]GRIDtoday. GigaSpaces positioned in visionaries quadrant by gartner[EB/OL]. (2006-10-05). http://www.gridtoday.com/grid/959632.html.

[4]GRIDtoday. Grids gets transactional [EB/OL]. (2006-12-11). http://www.gridtoday.com/grid/1150800.html.

[5]Intel. Scaling the grid, case study [EB/OL].(2006). http://www-03.ibm.com/servers/deepcomputing/cod/pdf/fsscasestudy.pdf.

[6]ANGERER B. Space based programming [EB/OL]. (2003-03-19). http://www.onjava.com/pub/a/onjava/2003/03/19/java_spaces.html.

[7]LI S, HOULE P, WILCOX M, et al. Professional Java server programming: with servlets, Javaserver pages (JSP), XML, enterprise JavaBeans (EJB), JNDI, CORBA, Jini and JavaSpaces (平裝) [M]. [S.l.]: Wrox Press, 1999.

[8]VENNERS B. Designing as if programmers are people [EB/OL]. (2003-06-03). http://today.java.net/pub/a/today/2003/06/10/design.html.

[9]ANGERER B, ERLACHER A. Loosely coupled communication and coordination in next-generation Java middleware [EB/OL]. (2005-06-03). http://today.java.net/pub/a/today/2005/06/03/loose.html.

[10]HUPFER S. Make room for JavaSpaces-Part 1[EB/OL]. (2000-11-14). http://www-128. ibm. com/developerworks/java/library/j-space/.

[11]FREEMAN E, HUPFER S, ARNOLD K. JavaSpaces principles, patterns, and practice [M]. [S.l.]: Addison-Wesley, 1999.

[12]WHITE T. How to build a compute farm[EB/OL]. (2005-04-21). http://today.java.net/pub/a/today/2005/04/21/farm.html.

[13]LI S. High-impact Web tier clustering, part 2: building adaptive, scalable solutions with JavaSpaces [EB/OL]. (2003-09-30). http://www.ibm.com/developerworks/java/library/j-cluster2/.

[14]RAWLINGS B. Is JavaSpaces here to stay? [EB/OL]. (2000-08-17). http://archives.java.sun.com/cgi- bin/wa?A2=ind0008L=JAVASPACES-USERSP=R4517.

[15]GRIDtoday. GigaSpaces releases extreme application platform [EB/OL]. [2007-06-18]. http://www.gridtoday.com/grid/1611358.html.

[16]GUTH R. More than just another pretty name-Sun’s Jini opens up a new world of distributed computer systems [EB/OL]. (1998-08). http://sunsite.uakom.sk/sunworldonline/swol-08-1998/swol-08-jini.html.

[17]SHALOM N. Space-based architecture and the end of tier-based computing[EB/OL]. (2006). http://www.sun.com/thirdparty/srsc/resources/gigaspaces/GigaSpacesEndofTierBasedComputingwp.pdf.

[18]PEZZINI M. The challenges of extreme transaction processing in a world of services and events [EB/OL]. (2006-08-31). http://mediaproducts.gartner.com/reprints/oracle/131036.html.

主站蜘蛛池模板: 亚洲免费三区| a毛片在线播放| 久久a级片| 亚洲国产一区在线观看| 狠狠亚洲五月天| 亚瑟天堂久久一区二区影院| 亚洲人成影视在线观看| 欧美国产日韩在线观看| 精品久久777| 国产三级视频网站| 国产天天色| 人妻精品久久无码区| 国产亚洲视频播放9000| 草草影院国产第一页| 亚洲人成色在线观看| 99精品一区二区免费视频| 久久久久免费看成人影片| 伊人无码视屏| 91精品网站| 强奷白丝美女在线观看| 日韩欧美高清视频| 国产福利免费视频| 少妇极品熟妇人妻专区视频| 午夜三级在线| 少妇极品熟妇人妻专区视频| 一区二区偷拍美女撒尿视频| 亚洲h视频在线| 亚洲无码日韩一区| 亚洲欧美天堂网| 亚洲国产中文精品va在线播放| 国产欧美日韩精品第二区| 国产日产欧美精品| 国产福利观看| 亚洲第一视频免费在线| 黄色成年视频| 波多野结衣一区二区三区四区视频| 粉嫩国产白浆在线观看| 亚洲综合色区在线播放2019| 伊人久久大香线蕉成人综合网| 午夜精品国产自在| 亚洲色图在线观看| 国产va在线观看免费| 国产AV毛片| 美女被操黄色视频网站| 夜夜高潮夜夜爽国产伦精品| 人与鲁专区| 18黑白丝水手服自慰喷水网站| 国产又爽又黄无遮挡免费观看| 国产无码精品在线播放| 欧美在线视频a| 精品国产自在在线在线观看| 美女内射视频WWW网站午夜 | 国产极品美女在线| 国产手机在线ΑⅤ片无码观看| 九色91在线视频| 日本一区二区三区精品视频| 久久成人18免费| 久久久久九九精品影院| 亚洲日韩AV无码精品| 91精品视频网站| 亚洲最大福利网站| 国产午夜福利片在线观看| 午夜三级在线| 综合网天天| 欧美成人二区| 99在线观看视频免费| 妇女自拍偷自拍亚洲精品| 99九九成人免费视频精品| 无码日韩视频| 亚洲综合第一页| 亚洲国产一成久久精品国产成人综合| 欧美亚洲一区二区三区在线| 国产美女免费| 在线免费看片a| 国产麻豆91网在线看| 国产网友愉拍精品| 精品人妻系列无码专区久久| 色综合五月婷婷| 国产美女精品一区二区| 久久黄色影院| 久久性妇女精品免费| 五月婷婷丁香综合|