用于在事務中間件機器環境中支持不同消息隊列的系統及方法【專利摘要】一種系統及方法可以在事務中間件機器環境中支持不同的消息隊列。該事務中間件機器環境包括通告表,該通告表包括第一隊列表和第二隊列表,其中第一隊列表存儲用于第一消息隊列的地址信息,而第二隊列表存儲用于第二消息隊列的地址信息。通告表還適于由第一事務客戶端使用來定位由事務服務器提供的事務服務。第一事務客戶端操作以從第一隊列表中查找指示存儲在第二隊列表中的事務服務的地址信息的關鍵字。【專利說明】用于在事務中間件機器環境中支持不同消息隊列的系統及方法[0001]版權聲明[0002]本專利文檔公開內容的一部分包含受版權保護的素材。版權擁有者不反對任何人對專利文檔或專利公開內容按照在專利商標局的專利文件或記錄中出現那樣進行復制,但是除此之外在任何情況下都保留所有版權。【
技術領域:
】[0003]本發明一般而言涉及諸如中間件的計算機系統和軟件,而且更具體地涉及支持事務中間件機器環境。【
背景技術:
】[0004]事務中間件系統,或者說面向事務的中間件,包括可以處理一個機構中各種事務的企業應用服務器。隨著諸如高性能網絡和多處理器計算機的新技術的發展,需要進一步改善事務中間件的性能。這些是本發明的實施例意圖解決的一般性領域。【
發明內容】[0005]本文所描述的是用于在事務中間件機器環境中支持不同消息隊列的系統及方法。事務中間件機器環境包括通告表(advertizedtable),該通告表包括第一隊列表和第二隊列表,其中第一隊列表存儲用于第一消息隊列的地址信息,而第二隊列表存儲用于第二消息隊列的地址信息。該通告表還適于由第一事務客戶端用來定位由事務服務器提供的事務服務。第一事務客戶端操作以從第一隊列表中查找指示存儲在第二隊列表中的事務服務的地址信息的關鍵字(key)。【專利附圖】【附圖說明】[0006]圖1根據本發明一個實施例示出了支持不同消息隊列的事務中間件機器環境的說明。[0007]圖2根據本發明一個實施例說明了用于在事務中間件機器環境中支持不同消息隊列的示例性流程圖。[0008]圖3根據本發明一個實施例示出了繞過橋接特征被激活的事務中間件機器環境的說明。[0009]圖4根據本發明一個實施例示出了繞過橋接特征未被激活的事務中間件機器環境的說明。[0010]圖5根據本發明一個實施例示出了事務中間件機器環境的功能圖。[0011]圖6是根據本發明一個實施例、說明事務服務器的結構的框圖。[0012]圖7是根據本發明一個實施例、說明事務客戶端的結構的框圖。【具體實施方式】[0013]本文所描述的是用于支持可以利用具有多個處理器的快速機器以及高性能網絡連接帶來的好處的事務中間件系統(諸如Tuxedo)的系統及方法。通告服務表可以由事務服務器使用來定位可以經遠程直接存儲器訪問(RDMA)協議而不是經進程間通信(IPC)發送和接收消息的消息隊列。事務中間件機器環境包括監聽第一消息隊列和第二消息隊列的服務器。事務中間件機器環境還包括通告表,該通告表包括第一隊列表和第二隊列表,其中第一隊列表存儲用于第一消息隊列的地址信息,而第二隊列表存儲用于第二消息隊列的地址信息。該通告表適于由客戶端用來定位由服務器提供的事務服務。第一隊列表包含指示存儲在第二隊列表中的事務服務的地址信息的關鍵字。客戶端可以在首先查找第一隊列表中的關鍵字之后獲得第二消息隊列中事務服務的地址信息。[0014]根據本發明的一個實施例,系統包括高性能硬件(例如64位處理器技術)、高性能大型存儲器以及冗余InfiniBand和以太網聯網連同應用服務器或中間件環境(諸如WebLogic套件)的組合,來提供完整的JavaEE應用服務器聯合體,該聯合體包括可以快速供應并且可以按需縮放的大規模并行存儲器內網格。根據一個實施例,該系統可以部署成作為提供應用服務器網格、存儲區域網絡和InfiniBand(IB)網絡的全、半或四分之一機架,或者其它配置。中間件機器軟件可以提供應用服務器、中間件和其它功能性,諸如像WebLogic服務器、JRockit或者HotspotJVM>OracIeLinux或Solaris和OracleVM。根據一個實施例,該系統可以包括經IB網絡彼此通信的多個計算節點、IB交換機網關、及存儲節點或單元。當實現為機架配置時,機架未使用的部分可以空著或者被填充物占據。[0015]根據本發明的一個實施例,在此被稱為“SunOracleExalogic”或者“Exalogic”的系統是用于托管中間件或應用服務器軟件(諸如Oracle中間件SW套件或Weblogic)的一種易于部署的解決方案。如本文所描述的,根據一個實施例,該系統是“盒子內的網格”,包括一個或多個服務器、存儲單元、用于存儲聯網的IB結構、以及托管中間件應用所需的所有其它組件。通過使用例如真正應用集群(RealApplicationCluster)和Exalogic開放存儲(ExalogicOpenStorage)來充分利用大規模并行網格體系架構,可以為所有類型的中間件應用實現顯著的性能。該系統利用線性I/O可縮放性實現提升的性能,使用和管理都很簡單,并且實現關鍵任務的可用性和可靠性。[0016]根據本發明的一個實施例,Tuxedo是能夠實現高性能、分布式業務應用的構建、執行和管理的一組軟件模塊,并且已經被多種多層應用開發工具用作事務中間件。Tuxedo是可以用于在分布式計算環境中管理分布式事務處理的中間件平臺。它是在實現不受限制的可縮放性與基于標準的互操作性的同時用于發掘企業傳統應用的潛力并把它們擴展到面向服務的體系架構的成熟平臺。[0017]根據本發明的一個實施例,諸如Tuxedo系統的事務中間件系統可以利用具有多個處理器的快速處理器(諸如Exalogic中間件機器)以及高性能網絡連接(諸如Infiniband(IB)網絡)帶來的好處。[0018]根據本發明的一個實施例,事務中間件系統可以使用遠程直接存儲器訪問(RDMA)協議在本地機器和遠程機器之間交換消息,以便以像本地消息傳輸的方式實現短等待時間,例如,繞過橋接過程并防止單點瓶頸。在本地機器和遠程機器之間使用RDMA協議交換消息在于2012年3月8日提交且標題為“SYSTEMANDMETHODFORPREVENTINGSINGLE-POINTBOTTLENECKINATRANSACTIONALMIDDLEWAREMACHINEENVIRONMENT”的美國申請N0.13/415,670中公開,該申請在此全部引入作為參考。[0019]支持不同的消息隊列[0020]根據本發明的一個實施例,不同的消息隊列,諸如RDMA消息隊列和系統V進程間通信(IPC)消息隊列,可以在事務中間件機器環境中被支持,以防止在機器間傳輸消息時的單點瓶頸。[0021]圖1根據本發明一個實施例示出了支持不同消息隊列的事務中間件機器環境的說明。如圖1中所示,事務服務器106可以在通告表101(諸如Tuxedo中的公告板)中公布一個或多個事務服務110。通告表適于由一個或多個客戶端104和105使用來定位由所述服務器提供的事務服務。[0022]根據本發明的一個實施例,除IPC隊列表102之外,通告服務表還可以包括RDMA隊列表103。IPC隊列存儲用于IPC消息隊列107的地址信息并且可以由事務客戶端服務器105用于在IPC隊列中定位事務服務。此外,RDMA隊列表存儲用于RDMA消息隊列108的地址信息并且可以由事務客戶端服務器104用于在RDMA隊列中定位事務服務。[0023]根據本發明的一個實施例,事務服務器可以同時監聽IPC隊列和RDMA隊列。RDMA隊列表可以實現成使得RDMA隊列可以與系統VIPC隊列同時且一致地使用。[0024]事務客戶端可以查找通告表中的隊列表,以便獲得它所需的服務的位置信息。客戶端可以首先查找通告表101(例如Tuxedo公告板(BB))中的IPC隊列表102。如果所獲得的地址信息是真實的IPC隊列地址,例如具有正值111的地址1,則客戶端可以使用這個IPC隊列地址來使用IPC隊列107針對所請求的事務服務而訪問事務服務器。[0025]另一方面,事務客戶端可以獲得關鍵字113而不是真實的IPC隊列地址。例如,所獲得的地址信息可以是具有負值的“偽裝的”IPC隊列地址。客戶端繼而可以使用該“偽裝的”IPC隊列地址從RDMA隊列表中查找RDMA隊列中的隊列地址114。然后,客戶端可以使用RDMA隊列針對所請求的事務服務而訪問事務服務器。[0026]圖2根據本發明一個實施例說明了用于在事務中間件機器環境中支持不同消息隊列的示例性流程圖。如圖2中所示,在步驟201,提供包括第一隊列表和第二隊列表的通告表,其中第一隊列表存儲用于第一消息隊列的地址信息,而第二隊列表存儲用于第二消息隊列的地址信息。然后,在步驟202,該通告表可以由第一事務客戶端使用來定位由事務服務器提供的事務服務。最后,在步驟203,第一事務客戶端可以從第一隊列表中查找指示存儲在第二隊列表中的事務服務的地址信息的關鍵字。[0027]在Tuxedo公告板(BB)中引用MSGQ隊列信息[0028]根據本發明的一個實施例,Tuxedo應用可以利用RDMA協議帶來的好處并且使用MSGQ隊列(其是RDMA隊列),以便以類似于本地消息傳輸的方式繞過橋接過程并實現更短的等待時間。[0029]當繞過橋接特征被激活時,Tuxedo客戶端可以使用MSGQ隊列而不是系統VIPC隊列向Tuxedo服務器發送消息。當繞過橋接特征未被激活時,Tuxedo客戶端可以使用系統VIPC隊列而不是MSGQ隊列向Tuxedo服務器發送消息。[0030]根據本發明的一個實施例,不同版本的Tuxedo可以在多進程配置中共存。盡管Tuxedo公告板中的內部結構保持不變,安裝了不具有繞過橋接特征的Tuxedo版本的機器中的進程也可以毫無問題地訪問具有繞過橋接特征的Tuxedo版本中的通告表(或者公告板)。[0031]例如,在不具有繞過橋接特征的Tuxedo版本中,共享存儲器中的公告板只包含系統VIPC隊列地址,每個地址都是八個字節的“long”變量。另一方面,在具有繞過橋接特征的Tuxedo版本中,RDMAMAGQ地址可以是128字節的數組。由此,如果Tuxedo公告板改變,則不同二進制文件中的公告板字段的偏移量會是錯的,而且二進制兼容性被打破。[0032]圖3根據本發明一個實施例示出了繞過橋接特征被激活的事務中間件機器環境的說明。如圖3中所示,如果繞過接特征被激活,則MSGQ隊列表304可以在Tuxedo中創建。這種MSGQ隊列表306或308中的每個條目包含用于一對MSGQ/系統VIPC隊列的信息:{MSGQ隊列名稱,MSGQ隊列關鍵字,系統VIPC隊列地址}。[0033]由于繞過橋接特征被激活,因此IPC隊列表303可以包含偽裝的系統VIPC隊列地址305或307,這指示RDMA隊列的位置被存儲在RDMA隊列表中。例如,偽裝的系統VIPC隊列地址可以是負值。然后,客戶端可以查找RDMA隊列表,以獲得隊列信息。[0034]如圖3中所示,通過實施繞過橋接特征,公告板數據結構可以保持不變。可以創建一單獨區段,附加到公告板的末尾,該單獨區段包含128字節MSGQ地址條目的表。條目的索引可以存儲在原始公告板中的對應條目中的系統VIPC隊列地址字段中。由于存在至多65536個RDMAMSGQ隊列,因此索引可能需要16位,而且另外16位可以用于區分這個隊列地址是系統VIPC隊列地址,還是用于RDMAMSGQ隊列地址的索引。[0035]圖4根據本發明一個實施例示出了繞過橋接特征未被激活的事務中間件機器環境的說明。如圖4中所示,當繞過橋接特征未激活時,不創建MSGQ區段,而且公告板的內部結構保持不變。因而,當繞過橋接特征未激活時,客戶端只能看到IPC隊列表402中正的系統VIPC隊列地址404和406。公告板中的隊列地址指示系統VIPC隊列地址,從而二進制文件在公告板中的任何字段都可具有正確的偏移量。[0036]根據本發明的一個實施例,數據結構的改變可以被隔離,從而,因為通告服務表的數據結構不需要改變,所以代碼的改變可以局限于較小的范圍。此外,由Tuxedo(其是基于C的應用)中的繞過橋接特征引起的數據結構改變在不同版本的Tuxedo之間維持互操作性。[0037]參考圖5,描述了根據本發明一個實施例的系統500。圖5是指示由系統500所實現的功能的功能圖。系統500包括存儲器500、定位器520和查找單元530。存儲器500配置為提供通告表,該通告表包括第一隊列表和第二隊列表。第一隊列表存儲用于第一消息隊列的地址信息,而第二隊列表存儲用于第二消息隊列的地址信息。[0038]定位器520配置為允許通告表由第一事務客戶端使用來定位由事務服務器提供的事務服務。查找單元530配置為允許第一事務客戶端從第一隊列表中查找指示存儲在第二隊列表中的事務服務的地址信息的關鍵字。[0039]圖6是根據本發明一個實施例、說明用于在事務中間件機器環境中支持不同消息隊列的事務服務器610的結構的框圖。事務服務器610的塊可以由硬件、軟件或硬件與軟件的組合來實現,以執行本發明的原理。本領域技術人員應當理解,圖6中所描述的塊可以組合或者分離成子塊,來實現如上所述本發明的原理。因此,本文的描述可以支持本文所述功能塊的任何可能的組合或分離或進一步定義。[0040]如圖6中所不,事務服務器610可以包括用于在通告表(未不出)中公布一個或多個事務服務的地址信息的公布單元621。如上所述,通告表可以包括第一隊列表和第二隊列表,其中第一隊列表存儲用于第一消息隊列的地址信息,而第二隊列表存儲用于第二消息隊列的地址信息。通告表可以適于由第一事務客戶端(未示出)使用來定位所述一個或多個事務服務中的事務服務。第一事務客戶端可以操作以從第一隊列表中查找指示存儲在第二隊列表中的事務服務的地址信息的關鍵字。[0041]根據本發明的一個實施例,事務服務器610還可以包括用于監聽第一消息隊列和第二消息隊列兩者的監聽單元612。[0042]根據本發明的一個實施例,第一事務客戶端可以操作以基于存儲在第二隊列表中的事務服務的地址信息,經由第二消息隊列向事務服務器發送消息。[0043]根據本發明的一個實施例,通告表可以適于由第二事務客戶端(未示出)使用來定位所述一個或多個事務服務中的事務服務。第二事務客戶端可以操作以基于存儲在第一隊列表中的事務服務的地址信息,使用第一消息隊列經由本地橋接過程向事務服務器發送消肩、O[0044]根據本發明的一個實施例,第一消息隊列可以是IPC隊列,而第二消息隊列可以是RDMA隊列。關鍵字可以是偽裝的IPC隊列地址。[0045]根據本發明的一個實施例,第二隊列表可以附加到只有第一隊列表的現有通告表的末尾。[0046]根據本發明的一個實施例,第二隊列表中的每個條目可以包含與用于第一消息隊列和第二消息隊列兩者的信息有關的信息。[0047]圖7是根據本發明一個實施例、說明用于在事務中間件機器環境中支持不同消息隊列的事務客戶端710的結構的框圖。事務客戶端710的塊可以由硬件、軟件或者硬件與軟件的組合來實現,以執行本發明的原理。本領域技術人員應當理解,圖7中所描述的塊可以組合或者分離成子塊,來實現如上所述本發明的原理。因此,本文的描述可以支持本文所述功能塊的任何可能的組合或分離或進一步定義。[0048]如圖7中所示,事務客戶端710可以包括用于使用通告表(未示出)的使用單元711,其中一個或多個事務服務的地址信息由事務服務器(未示出)公布,以定位所述一個或多個事務服務中的事物服務。如上所述,通告表可以包括第一隊列表和第二隊列表。第一隊列表存儲用于第一消息隊列的地址信息,而第二隊列表存儲用于第二消息隊列的地址信息。事務客戶端710還可以包括用于從第一隊列表中查找指示存儲在第二隊列表中的事務服務的地址信息的關鍵字的查找單元712。[0049]根據本發明的一個實施例,事務客戶端710還可以包括,基于存儲在第二隊列表中的事務服務的地址信息,經由第二消息隊列向事務服務器發送消息的發送單元713。[0050]根據本發明的一個實施例,事務客戶端還可以包括,基于存儲在第一隊列表中的事務服務的地址信息,使用第一消息隊列經由本地橋接過程向事務服務器發送消息的發送單元713。[0051]根據本發明的一個實施例,事務服務器可以監聽第一消息隊列和第二消息隊列兩者。[0052]根據本發明的一個實施例,第一消息隊列可以是IPC隊列,而第二消息隊列可以是RDMA隊列。關鍵字可以是偽裝的IPC隊列地址。[0053]根據本發明的一個實施例,第二隊列表可以附加到只有第一隊列表的現有通告表的末尾。[0054]根據本發明的一個實施例,第二隊列表中的每個條目可以包含與用于第一消息隊列和第二消息隊列兩者的信息有關的信息。[0055]另一個實施例包括用于在事務中間件機器環境中支持不同消息隊列的系統,該系統包括:用于提供包括第一隊列表和第二隊列表的通告表的裝置,其中第一隊列表存儲用于第一消息隊列的地址信息而第二隊列表存儲用于第二消息隊列的地址信息;用于允許通告表由第一事務客戶端使用來定位由事務服務器提供的事務服務的裝置;以及用于允許第一事務客戶端從第一隊列表中查找指示存儲在第二隊列表中的事務服務的地址信息的關鍵字的裝置。[0056]另一個實施例包括一種系統,該系統還包括用于允許事務服務器監聽第一消息隊列和第二消息隊列兩者的裝置。[0057]另一個實施例包括一種系統,該系統還包括用于允許第一事務客戶端基于存儲在第二隊列表中的事務服務的地址信息,經由第二消息隊列向事務服務器發送消息的裝置。[0058]另一個實施例包括一種系統,該系統還包括用于允許通告表由第二事務客戶端使用來定位由事務服務器提供的事務服務的裝置。[0059]另一個實施例包括一種系統,該系統還包括用于允許第二事務客戶端基于存儲在第一隊列表中的事務服務的地址信息,使用第一消息隊列經由本地橋接過程向事務服務器發送消息的裝置。[0060]另一個實施例包括一種系統,其中第一消息隊列是IPC隊列,而第二消息隊列是RDMA隊列。[0061]另一個實施例包括一種系統,其中關鍵字是偽裝的IPC隊列地址。[0062]另一個實施例包括一種系統,該系統還包括用于允許第二隊列表附加到只有第一隊列表的現有通告表的末尾的裝置。[0063]另一個實施例包括一種系統,該系統還包括用于允許事務服務器在通告表中公布事務服務的地址信息的裝置。[0064]另一個實施例包括一種系統,該系統還包括用于允許第二隊列表中的每個條目包含與用于第一消息隊列和第二消息隊列兩者的信息有關的信息的裝置。[0065]本發明可以使用一種或多種傳統的通用或專用數字計算機、計算設備、機器、或微處理器(包括一個或多個處理器)、根據本公開的教導編程的存儲器和/或計算機可讀存儲介質而方便地實現。如對軟件領域的技術人員來說將很顯然的,適當的軟件編碼可以很容易地被熟練的程序員基于本公開的教導來準備。[0066]在有些實施例中,本發明包括計算機程序產品,這是其上/其中存儲了可以用于編程計算機以便執行本發明任何過程的指令的一種或多種存儲介質或計算機可讀介質。存儲介質可以包括,但不限于,任何類型的盤,包括軟盤、光盤、DVD、CD-ROM、微型驅動器及磁光盤、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、閃存設備、磁或光卡、納米系統(包括分子存儲器1C)、或者適于存儲指令和/或數據的任何類型的介質或設備。[0067]本發明以上描述的提供是為了說明和描述。它不是窮盡的或是要把本發明限定到所公開的精確形式。許多修改和變化將對本領域技術人員顯而易見。這些變化可包括這里公開的兩個或更多個特征的組合。實施例的選擇與描述是為了最好地解釋本發明的原理及其實踐應用,由此使本領域其他技術人員能夠理解本發明以實現各種實施例以及進行適于預期特定用途的各種修改。本發明的范圍要由權利要求及其等同來限定。【權利要求】1.一種用于在事務中間件機器環境中支持不同消息隊列的系統,包括:包括第一隊列表和第二隊列表的通告表,其中第一隊列表存儲用于第一消息隊列的地址信息,而第二隊列表存儲用于第二消息隊列的地址信息,其中所述通告表適于由第一事務客戶端使用來定位由事務服務器提供的事務服務,并且其中第一事務客戶端操作以從第一隊列表中查找指示存儲在第二隊列表中的事務服務的地址信息的關鍵字。2.如權利要求1所述的系統,其中所述事務服務器監聽第一消息隊列和第二消息隊列兩者。3.如權利要求1或2所述的系統,其中第一事務客戶端操作以基于存儲在第二隊列表中的事務服務的地址信息,經由第二消息隊列向事務服務器發送消息。4.如權利要求1或2所述的系統,其中所述通告表適于由第二事務客戶端使用來定位由事務服務器提供的事務服務。5.如權利要求4所述的系統,其中第二事務客戶端操作以基于存儲在第一隊列表中的事務服務的地址信息,使用第一消息隊列經本地橋接過程向事務服務器發送消息。6.如權利要求1至5中任何一項所述的系統,其中第一消息隊列是IPC隊列,而第二消息隊列是RDMA隊列。7.如權利要求1至6中任何一項所述的系統,其中所述關鍵字是偽裝的IPC隊列地址。8.如權利要求1至7中任何一項所述的系統,其中第二隊列表被附加到只有第一隊列表的現有通告表的末尾。9.如權利要求1至8中任何一項所述的系統,其中事務服務器在通告表中公布事務服務的地址信息。10.如權利要求1至9中任何一項所述的系統,其中第二隊列表中的每個條目包含與用于第一消息隊列和第二消息隊列兩者的信息有關的信息。11.一種用于在事務中間件機器環境中支持不同消息隊列的方法,包括:提供包括第一隊列表和第二隊列表的通告表,其中第一隊列表存儲用于第一消息隊列的地址信息,而第二隊列表存儲用于第二消息隊列的地址信息,允許所述通告表由第一事務客戶端使用來定位由事務服務器提供的事務服務,以及允許第一事務客戶端從第一隊列表中查找指示存儲在第二隊列表中的事務服務的地址信息的關鍵字。12.如權利要求11所述的方法,還包括允許所述事務服務器監聽第一消息隊列和第二消息隊列兩者。13.如權利要求11或12所述的方法,還包括允許第一事務客戶端基于存儲在第二隊列表中的事務服務的地址信息,經由第二消息隊列向事務服務器發送消息。14.如權利要求11至13中任何一項所述的方法,還包括允許通告表由第二事務客戶端用于定位由事務服務器提供的事務服務。15.如權利要求14所述的方法,還包括允許第二事務客戶端基于存儲在第一隊列表中的事務服務的地址信息,使用第一消息隊列經由本地橋接過程向事務服務器發送消息。16.如權利要求11至15中任何一項所述的方法,其中第一消息隊列是IPC隊列,而第二消息隊列是RDMA隊列。17.如權利要求11至16中任何一項所述的方法,其中所述關鍵字是偽裝的IPC隊列地址。18.如權利要求11至17中任何一項所述的方法,還包括允許第二隊列表附加到只有第一隊列表的現有通告表的末尾。19.如權利要求11至18中任何一項所述的方法,還包括允許事務服務器在通告表中公布事務服務的地址信息。20.如權利要求11至19中任何一項所述的方法,還包括允許第二隊列表中的每個條目包含與用于第一消息隊列和第二消息隊列兩者的信息有關的信息。21.一種計算機程序,用于使一個或多個處理器實現如權利要求11至20中任何一項所述的方法。【文檔編號】H04L12/28GK103843290SQ201280047477【公開日】2014年6月4日申請日期:2012年9月24日優先權日:2011年9月29日【發明者】時培植,金永順申請人:甲骨文國際公司