在線旅游OTA本質(zhì)是用技術(shù)手段提高旅游供應(yīng)鏈的效率喷橙,通過接入各種供應(yīng)商,將不同產(chǎn)品組合登舞,加價來售賣來獲取利潤贰逾。從資源角度看,需要大量接入供應(yīng)商來擴(kuò)充產(chǎn)品線菠秒。
在途牛我們用1年時間搭建和完善了供應(yīng)商對接系統(tǒng)疙剑。這張圖,供應(yīng)商系統(tǒng)提供資源標(biāo)準(zhǔn)化的服務(wù)践叠,對外提供查詢言缤,價格校驗,下單等業(yè)務(wù)禁灼,
查詢引擎和訂單通過接口來獲取供應(yīng)商的資源管挟,不關(guān)心具體供應(yīng)商api的細(xì)節(jié)。
如果是自己掌控資源弄捕,那其實是不需要對接系統(tǒng)的僻孝,或者只接入一個供應(yīng)商导帝,也不需要對接系統(tǒng)。
對接系統(tǒng)存在的背景是穿铆,不管在哪個行業(yè)您单,多個供應(yīng)商系統(tǒng)必然會存在差異,因為系統(tǒng)是人設(shè)計荞雏,同樣的東西不同的人會有不同的先別想法虐秦,比如航班這個名詞,有的技術(shù)人員用airplane凤优,有的用flight悦陋,很難強(qiáng)迫大家用一樣的。
對接系統(tǒng)的目的是解決這些差異别洪。
拿途牛國際機(jī)票舉例子叨恨,機(jī)票是一個商品,前端呈現(xiàn)的各種數(shù)據(jù)都來自供應(yīng)商挖垛,比如航班號痒钝,機(jī)型,價格痢毒,燃油費(fèi)送矩。
除了用戶需要的數(shù)據(jù)必然提供,也會出現(xiàn)有的數(shù)據(jù)有些供應(yīng)商有哪替,而有些沒有栋荸,比如有的系統(tǒng)會返回轉(zhuǎn)機(jī)的城市,有的不會凭舶,又比如新接的一批供應(yīng)商支持航班準(zhǔn)確率晌块,這種情況只需要新增字段做加法即可,這是簡單的情況帅霜。
復(fù)雜的情況是匆背,類似的功能,不同供應(yīng)商接口有不同的流程身冀。
下面舉拿我們做途牛機(jī)票碰到的問題說明钝尸。
機(jī)票預(yù)訂流程分先查詢后價格校驗,這個和淘寶里買東西類似搂根,但是淘寶庫存在自己系統(tǒng)珍促,可以認(rèn)為只傳入商品id,價格校驗接口就能夠找到對應(yīng)的商品剩愧。
機(jī)票校驗的情況不一樣猪叙,雖然都是需要查詢接口返回的信息,但是有的供應(yīng)商需要行程信息,有的只需要傳入航班號沐悦,還有的需要傳入一些自己的參數(shù)成洗,隨著接入新供應(yīng)商五督,誰也不知道后面會增加什么參數(shù)藏否,這會有以下問題:
1.外部調(diào)用不同供應(yīng)商要傳入不同信息,接入新供應(yīng)商前端需要改動充包。
2.需要前端保存的字段過多副签,影響性能,特別是現(xiàn)在移動端4g的情況基矮。
資源對接系統(tǒng)有義務(wù)屏蔽掉這些差異淆储,提供一套簡單而同一的流程,在途牛我們是通過一個rbdkey(rebooking key預(yù)訂標(biāo)識)的機(jī)制來實現(xiàn).
rbdkey機(jī)制簡單說明如下:
1.查詢航班結(jié)果返回rbdkey字段
2.驗價接口必須回傳查詢對象rbdkey字段
3.查詢接口將不同供應(yīng)商驗價需要的字段按一定格式放到rbdkey字段
不同供應(yīng)商rbdkey:
下面是機(jī)票預(yù)訂時序圖:
可以看到:
1 不同的接口有不同的rbdkey家浇。
2 當(dāng)前接口的rbdkey是由上一個接口生成本砰,驗價依賴查詢,下單依賴驗價钢悲。
這點很好理解点额,因為一個購買流程越往后需要的信息越多,比如查詢只需要查詢條件莺琳,下單的時候就需要購買人信息等还棱,所以不同預(yù)訂環(huán)節(jié)rbdkey是會變化。
這個是標(biāo)準(zhǔn)化流程簡單介紹惭等,標(biāo)準(zhǔn)化帶來了便利的同時也有帶來了出錯的可能珍手,因為全部供應(yīng)商資源都通過這一個模塊來控制,實際應(yīng)用中還需要從性能和防出錯的角度做一些優(yōu)化和校驗辞做,這個后面會介紹琳要。