雨燕直播nba 中國科技縱橫雜誌社官方網站
熱點文章
當前位置:首頁 > 優秀文章

航空新分銷報文聚合方法研究與應用

孫東明 謝佳 劉凱 楊超
(中國民航信息網絡股份有限公司,北京 101318)

2024-04-07 09:52:00    來源:優秀文章

摘要:全球航空業正在經曆著以航空新分銷能力建設為代錶的技術變革,不同航空公司不同版本的NDC報文的聚合能力直接關係該變革是否能夠得以實施。本文提出一種通過自定義模闆、報文拆分、報文分佈轉換並組合的方式,實現麵嚮NDC標準的大型XML報文的高效解析與聚合。實驗結果錶明,在針對航空公司航班查詢典型場景的NDC報文響應中,提出的方法性能優於基於傳統XSLT的解析轉換方法,取得了很好的使用效果。

關鍵詞:航空新分銷;NDC標準;航空公司;消息聚合;XML轉換

中圖分類號:C94   文獻標識碼:B   文章編號:1671-2064(2023)21-2024-04


0引言

NDC(New Distribution Capability,新分銷能力)是近年來國際航空運輸協會(以下簡稱:國際航協)力推的新分銷標準,它打破了以往航空公司與合作夥伴間主要通過EDIFACT報文進行消息傳輸的方式,採用了一種基於XML的全新數據傳輸標準來加強信息交互能力。航空公司可借助NDC嚮合作夥伴提供豐富的信息、個性化的産品、完善的服務功能,進而為旅客創造價值,實現航空新零售轉型。目前,衆多行業相關方參與到NDC建設中,國際航協也在加速推進NDC的發展。

隨著NDC的發展,在NDC生態環境中,産生了NDC聚合商(Aggregator)這一重要角色。在冇有該角色之前,航空公司需要採用N對N的方式與下遊分銷商(如代理人、在線旅遊分銷商OTA、差旅服務商TMC、元搜索引擎等)建立基於NDC標準的銷售渠道,極大浪費了雙方的溝通和開發成本。針對這一問題,聚合商角色提供一個符合NDC標準的、基於開放係統的聚合及分銷平臺,將多家航空公司NDC內容進行聚合後,以統一形式分發給下遊,為下遊提供完整的銷售閉環,形成了N:1:N的連接模式,極大降低了航空公司和分銷商的溝通與開發成本,如圖1所示。NDC聚合商的存在對推動航空新零售的轉型和發展具有重要意義。

作為新零售鏈路上消息的傳遞者,NDC聚合商的航空公司接入能力和報文轉換性能是其建設水平的重要考核指標,如何將多航空公司不同版本的報文、不同業務流程以統一形式高效地提供給下遊,一直是睏擾NDC聚合商的主要問題。本文就NDC聚合器的報文轉換技術進行研究,結合實際應用,提出一種麵嚮NDC的XML報文解析轉換方法,助力於構建高性能的NDC聚合平臺。

1航空公司NDC消息聚合難點

1.1國際航協NDC版本多且不斷升級

國際航協發佈的NDC標準一直隨著使用者反饋不斷升級和調整,之前以每年4個版本嚮前推進,近幾年逐步縮減到一年發佈兩個版本。升級調整主要包括兩方麵:一是調整版本中接口的數量。早期由於既要嚮新零售轉型,又要兼顧原有傳統銷售的方式,為了保障航空公司從查詢、預訂、支付、出票到退改全銷售流程操作,發佈的接口數量較多,以2016年版本為例,接口數量超過50個。而後通過逐步調整與功能合並,到18.2版本時接口數量銳減到40個。隨著對新零售認識逐漸清晰,又增強了訂單、支付相關功能,到21.3版本時,接口數量基本穩定在50個上下。二是不同版本中同樣名稱的接口,也會存在結構調整情況,例如將A節點整體從父節點B挪到父節點C上。所以對於聚合商來說,如果要嚮下遊使用者輸出統一的標準接口,每接入一個NDC版本,就要對該版本中的接口嚮輸出的標準接口進行轉換,隨著聚合商接入版本增多,對轉換的效率與複雜度要求就越高。

1.2航空公司使用NDC版本不一緻

如果航空公司A和航空公司B都將同樣的NDC版本提供給聚合商,也並不意味著聚合的工作量減半。即使同一個版本,各航空公司在使用上仍舊存在差異。首先,根據國際航協NDC標準,接口中可以存在自定義節點,可根據各航空公司業務情況靈活掌握。其次,接口隻能做到相對結構化,而標準節點中放入的內容不能絕對結構化,這樣就會導緻不同航空公司在同一個標準節點內放入的內容易讀性存在很大區別。對於聚合商來說,在進行消息處理時,既需要了解航空公司自定義節點內容,也需要對結構化數據中非結構化內容進行標準化處理。

1.3航空公司接入越多聚合難度越大

除了NDC版本多、不同航空公司使用同一版本但用法不一的情況外,聚合難度還體現接入航空公司數量上。目前,獲得國際航協NDC認證的航空公司近70家,設想如果一個旅客通過聚合商嚮70家航空公司發起查詢請求,聚合商需要將所有航空公司的返回結果在最短的時間內進行解析再聚合返回給旅客,對於係統的業務邏輯處理能力和處理速度都將是極大挑戰。如何將響應時間控製在用戶可接受範圍,也是考察聚合商能力的重要指標。

 

圖1 聚合商在NDC環境中的位置


2 NDC消息轉換理論基礎及現狀分析

NDC旨在通過定義一種基於XML的數據傳輸標準,以增強航空公司和分銷商之間的通信能力。因此,在NDC的應用及聚合器的構建過程中,XML文件的解析和轉換是實現數據交互和數據處理的關鍵步驟。XML解析是指將XML轉換為可操作的數據結構或對象模型,以便進一步處理和操作;XML轉換是指將XML從一種形式轉換為另一種形式,如將XML轉換為HTML、JSON、數據庫記錄或另一格式的XML等。XML解析及轉換工作已有多種成熟的技術,介於XML在信息處理係統中的使用的廣泛性,不同的XML解析及轉換技術也在不同場景中被廣泛使用。王海鳳提出了一種使用DOM技術實現關係數據庫到XPDL轉換的方法[1];李效東[2]及田斌[3]分別提出了基於DOM及基於SAX的網頁信息提取方法,可以用來從目標網頁中抽取關鍵信息用於後續存儲或使用;範書義提出了一種結合使用SAX和DOM的大型XML文檔處理方法,其中採用SAX對XML文檔進行讀取並轉化為DOM對象,然後使用SAX對XML內容進行解析,極大地改善了應用程序的性能[4];任鑫基於StAX實現了一種針對麵嚮對象語言的XML解析庫,並構造了Java環境中的XML解析器,取得了較高的XML解析效率[5];周穎基於JDOM實現了一種針對異構數據庫的數據提取方法,可以將異構數據庫中的信息轉換為XML文檔進行輸出[6];周強基於DOM4J實現了一種XML頁麵與XHTML頁麵互相轉換的方法,實現了瀏覽器兼容[7];陳俊林基於XSLT實現了PDF論文元數據的優化提取,以便於對文獻進行歸類[8]。而隨著數字化進程的發展,在各種應用場景中需要處理的XML信息越來越複雜,更多的學者在各自的領域針對傳統的XML解析及轉換技術提出了改進,提出了不同的XML解析及轉換方法。F. Breitling提出了一種基於語義分析的XSLT轉換方式,在處理天文學數據的場景中,能高效地將XML文件轉換為RDF文件[9]。Ren´e Haberland設計並實現了Prolog轉換語言,它由XML讀寫操作、轉換運算符和預定義的遍曆順序組成,相比XSLT能夠更加簡潔地實現XML文件之間的轉換[10]。Igor L. Bratchikov等人提出了一個合適的XML文檔模型,定義了Prolog LTL的基本轉換語言,並展示了與XSLT相比的錶達能力[11]

相比已有的應用場景,NDC環境下的XML解析具有自身的特點:一是待處理的報文普遍較大,AirShopping(查詢接口)的報文通常含有大量的航班數據定義及報價信息,其報文通常以KB或MB為單位。二是待處理的報文從語義角度鬆散耦合,報文中的航班數據定義、報價信息、其他自定義信息等分屬於各自的根節點,信息之間如需關聯,通過節點的ID值進行引用。三是報文轉換難以一步到位,即在報文格式轉換操作後,不能立刻得到結果報文,而是需要在轉換後的報文初版基礎上,依據業務邏輯對部分的節點及節點的數據進行增加、刪除、修改等操作後,方可得到可以嚮用戶輸出的報文終版。四是需要轉換的報文版本多,存在多種不同格式的源XML需要轉換至同一種格式的目標XML。一方麵聚合商作為NDC環境下報文處理鏈路中的核心環節,對於報文的處理具備上述所有特點;另一方麵,聚合商作為WEB係統,也需要滿足WEB係統在處理性能方麵的要求(從用戶體驗角度,通常認為係統響應時間在4秒以內,大部分用戶可以接受,超過10秒則90%以上的用戶選擇離開)。而從處理流程角度,聚合商在處理具體用戶的請求時,首先需要從用戶的請求的目標航空公司處分別獲取航空公司的響應後,再針對得到的航空公司響應XML報文進行轉換及聚合,在整個流程中存在航空公司處理響應耗時、網絡傳輸耗時、聚合商內部XML報文轉換及聚合耗時3個主要的耗時環節,其中航空公司處理響應耗時和網絡傳輸耗時不可控,因此如何縮減內部XML報文轉換耗時,高效處理大量複雜大報文的轉換和聚合是聚合商麵對的技術難題。

3基於NDC標準的XML報文聚合方法

在麵嚮NDC的XML報文轉換場景中,既需要同時對大量並發大報文進行快速處理,又需要靈活定義轉換規則,以滿足不同版本報文的轉換,還需要對報文進行高效的字段級讀寫以滿足數據填補的需求。通過對當前市麵上存在的XML解析及轉換技術的分析可知,針對需要完全錶示、隨機處理XML小型文檔的場景,適用DOM解析、JDOM解析或DOM4J解析;針對需要處理大型XML或對性能較高的場景,適用SAX解析、StAX解析或DOM4J解析;針對需要靈活定義轉換規則和操作的場景,適用XSLT轉換。其中,XSLT轉換能夠大緻完成NDC場景下XML報文轉換的功能需求,但是在大流量下性能有限,直接應用不能滿足係統真實生産的性能要求。因此,針對冇有單獨的一種XML解析及轉換技術能夠直接滿足NDC場景下的XML報文轉換需求這一問題,提出了一種麵嚮NDC的XML報文轉換方法。

3.1方法組成

麵嚮NDC的XML報文轉換方法邏輯上由航空公司輸入、輸出組件、報文分片組件、模闆轉換組件、報文聚合組件等構成,其中模闆轉換組件內部又由分片解析策略組件、模闆加載組件、模闆翻譯組件組成。相關組件的構成圖如圖2所示。

 

圖2 麵嚮NDC的XML報文轉換方法的組件構成

航空公司輸入、輸出組件主要從網絡層麵承擔了係統與外部交互的工作,報文聚合組件用於將處理過的報文片段接合到一起,這幾個組件在報文轉換方法中的功能相對簡單,在此不做贅述,下文就方法中核心組件進行進一步詳述。

3.1.1報文分片組件

報文分片組件的作用是針對不同航空公司的不同接口選取不同的分片策略並執行分片。報文分片組件會分析不同接口的返回報文,將大報文拆分成多個小的片段,每個小的片段將被分發到不同的線程中解析,一般情況下節點相似的報文會被分發到一起。

3.1.2分片解析策略組件

分片解析策略組件用於判定最優的解析策略,通過對用戶調用的航空公司、接口、NDC版本號、報文大小,計算出一個權重值,並根據權重值判斷報文應採用的解析策略。當前可選的分片解析組件有3種。

(1)當前線程解析組件。針對節點較少的小報文,採用單線程的方式解析,防止線程上下文頻繁切換以節省係統的開銷。

(2)大任務分片解析策略。針對較大的報文,原報文會被拆分為多個較小的報文進行處理,針對每個小報文的處理會生成一個小任務,多個小任務一組並發執行,以提升大報文的解析速度。

(3)並行流式解析策略。在報文數據量較大的情況下,可以針對整個報文通過並行流的方式開啓多個線程來同時執行處理,每個線程執行一個片段的報文解析。

3.1.3模闆加載組件與模闆翻譯組件

考慮到基於NDC的XML報文轉換的複雜性,在轉換的核心組件,優先選擇XSLT解析,應用其轉換規則靈活及自定義輸出模闆的特點滿足功能需求。其次,針對XSLT解析在處理大型XML文檔時性能較低的問題,一方麵,採用業界成熟的XSLT轉換工具,例如Saxon;另一方麵,在XSLT工具上進行自定義轉換函數的定製來實現針對個別節點及節點值的增加、刪除、修改等操作,以達到提升整體轉換效率的效果。模闆加載組件針對不同航空公司的不同接口,加載相應的報文轉換模闆,模闆翻譯組件會基於加載的模闆及相關的自定義函數,實現XML報文的翻譯。

3.2實現原理

3.2.1係統初始化流程

麵嚮NDC的XML報文轉換方法的係統初始化流程如下。

(1)初始化模闆加載組件和模闆翻譯組件。係統中每個航空公司的配置都定義為一個模闆翻譯組件,係統會在啓動的時候加載各個航空公司的配置,把不同航空公司、不同版本的模闆翻譯組件進行裝載。例如,將某航空公司NDC172版本的模闆翻譯組件裝載到係統輸出的NDC182組件中,從而獲取172版本到182版本雙嚮轉換所需要的配置信息。同時係統加載每個航空公司的各個接口對應的XSLT模闆。

(2)初始化報文分片組件。係統啓動時加載報文分片組件,報文分片組件會接入航空公司組件對較大的報文實施分片,把一個大的報文拆分成包含多個節點的小報文。

(3)初始化分片解析策略組件。係統啓動時,會根據初始化好的航空公司組件生成對應的分片解析策略組件,每個航空公司的分片解析策略組件不盡相同。分片解析策略組件的生成主要依賴報文的航空公司、接口、NDC版本號、報文大小,係統首先會根據這些條件生成默認的權重值。例如,AirShopping接口默認的權重值為5,OfficePrice接口權重值為3等;報文>5M時默認的權重值為50,2M≤報文<5M默認的權重值為20,報文<2M時默認的權重值為5等。當接收到一個報文時,係統會計算出一個總的權重值。當值20時執行當前線程解析策略,20<值100時執行並行流式解析策略,值大>100時執行大任務分片解析策略。

(4)初始化報文聚合組件。報文聚合組件會將待輸出的報文片段整合成一個完整的報文對外輸出。

(5)完成模闆轉換組件組裝。當初始化完以上組件,係統就會自動收集這些組件為每個航空公司的模闆轉換組件。用戶在調用接口時,係統會判斷使用哪個模闆轉換組件來轉換報文。

4.2.2係統運行案例

為了說明方案的運行流程,下文以基於美國航空(簡稱AA)的AirShopping接口的轉換過程為例進行說明。係統運行時的整體流程如圖3所示。

 

圖3 係統運行時的整體流程

(1)獲取模闆轉換組件

係統獲取用戶請求的XML報文,根據<MessageDoc> <Name>AA</Name></MessageDoc>節點、HTTP請求頭裏麵的agg-ndc-method參數、agg-ndc-version參數判斷屬於AA航空公司182版本的AirShopping接口,然後從係統內存中獲取對應的模闆轉換組件,判斷該組件是否“存活”,若“存活”則取出對應的轉換模闆待用,如果該組件“死亡”則直接返回用戶接口異常。

(2)計算報文分片

在得到航空公司輸入報文後,報文分片組件會將XML報文分成多個小的片段。這裏AA航空公司的AirShopping報文會被拆分成DataList、OffersGroup、AugmentationPoint、Utils 4個片段,然後係統會啓動4個線程去並行解析這4個小的片段。

(3)獲取分片解析策略

根據AA航空公司組件可以拿到其分片解析策略,該分片解析策略組件會自動計算出AirShopping接口報文解析的一個權重值:AA航空公司的182版本AirShopping接口配置的接口權重為5;DataList、OffersGroup片段報文>5M得到50的權重,AugmentationPoint片段報文<2M得到5的權重,2M<Utils片段報文<5M得到20的權重;DataList、OffersGroup片段報文的節點數在5000以上得到45的權重,AugmentationPoint片段報文的節點數在10以下又得到2的權重,Utils片段報文的節點數在100以上1000以下得到20的權重。然後判斷該XML是OWD模式又得到5的權重。最後通過計算得到DataList、OffersGroup片段的權重在105,根據分片解析策略判斷該片段報文應採用大任務分片解析策略;AugmentationPoint片段的權重在17,根據分片解析策略判斷該片段報文應採用當前線程解析策略;Utils片段的權重在50,根據分片解析策略判斷該片段報文應採用並行流式解析策略。

(4)解析轉換報文

第一步執行模闆翻譯,模闆翻譯組件會使用預定義的模闆將每個片段整體轉換為目標格式的XML片段框架。第二步執行自定義函數,DataList、OffersGroup片段採用大任務分片解析策略時,係統會計算需要執行的自定義函數數量,將自定義函數拆分成20個一組,每組函數啓動4個線程去並發執行解析轉換,每組函數執行完成之後就會把結果放入係統緩存中,然後繼續執行下一組函數;AugmentationPoint片段採用當前線程策略,係統會啓動一個線程去執行解析轉換,解析結果同樣放入係統緩存中;Utils片段採用並行流式解析策略,係統會把需要執行的函數全部放入一個隊列中,然後啓動5個線程,每個線程從隊列中獲取一個自定義函數並發執行解析,解析結果同樣放入係統緩存中。

(5)返回統一版本的NDC報文

最後報文聚合組件從緩存中獲取報文的所有轉換結果片段,整合成一個符合NDC182版本的報文並對用戶輸出。

 

4 本文提出的XML解析轉換方法與Xalan的對比

4效果與結果數據分析

為了比對本文提出的方法與其他方法的差異,選擇了一種成熟的XSLT解析技術Xalan作為對照。選擇一家典型的支持NDC的航空公司——大洋洲航空(QF),對真實機票銷售中的16種場景的查詢接口的報文,分別採用Xalan與本文提出的麵嚮NDC的XML報文轉換方法進行解析與轉換,並比對兩者的轉換時間,結果如圖4所示。

圖4橫坐標為測試的具體場景,主坐標(左)含義為被轉換的報文大小(KB),副坐標(右)為方法轉換耗時(ms),為了便於觀察,將不同場景的報文平均大小從小到大進行了排序。從圖4可以看出,報文轉換耗時與報文大小基本呈正比,在絕大多數場景中,本文提出的轉換方式所需的轉換時間遠遠小於Xalan方式,在測試的16個場景中,轉換時間平均降低了40.4%。隻有在單程單成人這種最簡單的場景中,本文提出的轉換方式耗時比Xalan方式增加了56%,這是由於在處理最簡單報文的場景中,馬上執行轉換的效率比對報文進行一係列分析、拆分、方案選擇後再進行拆分要高。註意到在場景11之前,當報文大小不超過1MB時,本文提出的轉換方法與Xalan方法相差不大,轉換時間平均降低30.9%;而當報文大小超過1MB時,本文方法與Xalan方法明顯拉開差距,轉換時間平均降低61.3%;當報文大小超過2MB時,Xalan方法的處理時間明顯有所發散,從場景15到場景16,雖然報文大小隻增長了29.1%,但是處理時間增長了159.9%,而本文方法處理時間增長了80.1%,可見本文方法收斂性更強,針對大報文具有更好的性能。

5結語

新零售是航空公司銷售和分銷的最新發展趨勢,也是近年來最大的行業顛覆之一,它使得航空公司能夠以全新方式為消費者提供全新産品,而國際航協NDC標準是航空公司新零售轉型的重要載體。作為聚合商,提升NDC消息聚合處理能力,可以有效減少上下遊溝通和開發成本,對推動航空新零售的發展起到積極意義。為了提升NDC聚合器針對XML報文的聚合效率,本文提出了一種麵嚮NDC的XML報文轉換方法。不同於傳統技術的XML報文轉換方式,本文方法從構建模闆轉換組件入手,通過對大報文進行分片,對分片報文採用不同的方式進行解析轉換,將轉換後的報文片段進行整合輸出的方式,大大提升了對於NDC環境下XML報文進行解析轉換的效率,進而提高了NDC對多航空公司報文的聚合能力。

此外,本文提出的XML解析轉換方法不局限於民航領域,也可以適用於其他任何需要對大規模XML報文解析及轉換的場景,具有較高的現實指導意義。



參考文獻

[1] 王海鳳,薩智海.DOM技術在數據轉換中的應用[J].內蒙古工業大學學報(自然科學版),2008,27(4):270-274.

[2] 李效東,顧毓清.基於DOM的Web信息提取[J].計算機學報, 2002,25(5):8.

[3] 田斌,孫霞.基於SAX的XML文檔解析和存儲技術應用[J].微機發展,2005,15(3):4.

[4] 範書義,李巖,孟晨.XML文件解析中SAX和DOM的結合應用[J].微型電腦應用, 2011(12):42-44.

[5] 任鑫,曹冬磊,金蓓弘.支持StAX的高效XML解析器的設計與實現[J].計算機科學,2006,33(6):5.

[6] 周穎,王義發.用JDOM和XML實現異構數據庫的數據提取[J].計算機技術與發展, 2006, 16(11):4.

[7] 周強,李宇,許雁冬.基於dom4j轉換XML為XHTML頁麵的方法[J].計算機技術與發展,2010,20(1):43-45,49.

[8] 陳俊林,張文德.基於XSLT的PDF論文元數據的優化抽取[J].現代圖書情報技術,2007,(2):18-23.

[9] Breitling F.A standard transformation from XML to RDF via XSLT[J].Astronomische Nachrichten,2010,330(7):755-760.

[10] Haberland,René,Bratchikov I L.Transformation of XML-documents with Prolog[J].2019.

[11] Haberland,René.Using Prolog for Transforming XML-Documents[J].2019.



Research and Application on Message Aggregation Method of Airline New Distribution

SUN Dongming,XIE Jia,LIU Kai,YANG Chao

(Travelsky Technology Limited, Beijing  101318)

Abstract:The global aviation industry is undergoing technological changes represented by the development of a new distribution capability (NDC), and the ability to aggregate different versions of NDC messages directly relates to the success of this transformation. This paper proposes a method that involves custom templates, message splitting, distribution transformation, and aggregation to efficiently parse and aggregate large XML messages compliant with the NDC standard. Experimental results indicate that the proposed method outperforms traditional XSLT-based parsing and transformation methods in terms of NDC message response for typical airline flight query scenarios, achieving excellent performance.

Key words:new distribution capability;NDC standard;airline company;message aggregation;XML transformation

電話:010-59796075 信箱:chinakjzh2009@163.com

Copyright © 2008 All Rights Reserved

版權歸中國科技縱橫所有

《中國科技縱橫》雜誌社 京ICP備18024177號-1 ICP備

网站地图 | xml网站地图