淘寶開放平臺簡介
51CTO年終策劃《開放平臺,你的選擇》
一、什么是淘寶開放平臺
淘寶開放平臺(Taobao Open Platform)是基于淘寶各類電子商務業(yè)務的開放平臺,提供外部合作伙伴參與服務淘寶用戶的各類原材料,例如API、賬號體系、數據安全等。她是大淘寶電子商務基礎服務的重要開放途徑,將推動各行各業(yè)定制、創(chuàng)新、進化,并最終促成新商業(yè)文明生態(tài)圈的建立。我們的使命是把淘寶網的商品、用戶、交易、物流等一系列電子商務基礎服務,像水、電、煤一樣輸送給有需要的商家、開發(fā)者、社區(qū)媒體和各行各業(yè)。
二、平臺特點
業(yè)務母體強大、商機無限:
淘寶開放平臺所依托的母體淘寶網,擁有注冊用戶數以億級的買家和上百萬賣家,每日近15億的交易額,淘寶會員需求的多樣性和淘寶業(yè)務需求的多樣性為各類合作伙伴提供了大量的商業(yè)機會。
開放規(guī)模大、程度深、限制少:
淘寶開放平臺為外部合作伙伴提供了極大的商業(yè)想象空間——截至2011年6月,對外開放的 API近300個,涵蓋了淘寶核心交易和各項垂直業(yè)務的主要流程,API日均調用量超過10億次/天。無論是從業(yè)務開放的廣度和深度,淘寶開放平臺都是國內開放業(yè)務規(guī)模最大的開放平臺。同時,淘寶開放平臺形式自由——不限語言、不限平臺(支持瀏覽器、桌面)、不限使用場所(除了淘寶自身網站外,鼓勵和支持外部所有網站使用淘寶開放平臺服務)。
盈利模式清晰:
淘寶開放平臺為各類應用提供了清晰的盈利模式,如應用銷售分成、淘寶客成交抽傭、淘寶客工具分成、P4P廣告分成等,并且還會根據合作伙伴反饋,不斷提供更多更靈活的盈利模式,全力支持各合作伙伴不斷地成長和壯大。
合作形式豐富:
淘寶開放平臺是基于電子商務業(yè)務的綜合開放平臺,除了基本的流量平臺特點之外,還有豐富的電子商務業(yè)務。因此,將業(yè)務開放到盡可能多的領域是淘寶開放平臺的宗旨。目前,已經為合作伙伴提供了10類以上的合作形式,包括商家系統(tǒng)、賣家應用、買家應用、淘寶客應用、無線應用等。
三、到 TOP 能做什么?
《大淘寶宣言》指出,合作伙伴是新商業(yè)文明中極其重要的新興力量,由各類合作伙伴組成的“大淘寶”生態(tài)系統(tǒng)也是新商業(yè)文明的主要結構與功能單位。合作伙伴通過與經營者、消費者及交易平臺的緊密合作,使經營者的服務更高效、更專業(yè)、更經濟,使消費者的購物更便捷、更愉悅、更完美。從淘寶開放平臺的特點來看,能支持的業(yè)務方向可以分成賣家服務和買家服務兩類,而具體實現的功能和服務類型非常多,這些只局限于各自的想象力。
無論您是第三方開發(fā)者(ISV)、傳統(tǒng)軟件廠商、行業(yè)型網站或者大商家,都能基于淘寶開放平臺找到適合自己的業(yè)務方向。
賣家服務:
我們提供的豐富API涵蓋淘寶各個核心業(yè)務流程,基于這些內容可以為賣家提供各類應用,解決店鋪管理、營銷推廣、數據分析等方面的問題。淘寶開放平臺還基于商家所需的電子商務后臺系統(tǒng),提供解決方案。如果您是富有企業(yè)信息系統(tǒng)開發(fā)經驗的傳統(tǒng)軟件廠商,您可以基于淘寶開放平臺為商家提供包括但不限于BI、ERP、DRP、CRM、SCM 等。淘寶開放平臺還為各種應用提供了清晰的盈利模式。通過服務市場的應用銷售分成、軟件直接銷售收入等獲得回報。
買家服務:
淘寶數億消費者,越來越需要各種個性化、專業(yè)化的服務,幫助他們方便地購物,以及解決各類生活服務需求。從導購、健康、娛樂、興趣、交友等方方面面,構建自由的買家應用。各個專業(yè)的類目,也吸引著各行業(yè)的專業(yè)團隊深入合作,為消費者打造最佳體驗,而通過導購交易成交抽傭,已經成為一種有效的盈利模式。
#p#
淘寶開放平臺(TaoBao Open Platform,簡稱TOP)的整個架構體系是組件化體系架構,可以是很少的幾個基礎組件構成的Skeleton,也可以是融入了商業(yè)想象的Amazing Architecture。這里就通過對于這些組件的羅列,描述出在TOP這個大體系中,各個組件所處的地位及作用。TOP的“兵器譜”是在現階段商業(yè)需求及平臺非業(yè)務性需求指導下形成的,未來TOP將繼續(xù)發(fā)展,“兵器譜”也會不斷演進。
下圖是整個TOP當前的一個組件結構圖:
圖中,紅色虛線就是TOP的Skeleton。TOP當前從業(yè)務模塊功能角度來劃分,可以分成三個層次:基礎平臺組件層,基礎業(yè)務組件層,普通業(yè)務組件層?;A平臺組件層,傾向于平臺級別功能滿足及對平臺穩(wěn)定性,可用性的支持?;A業(yè)務組件層,是介于平臺服務于普通業(yè)務服務之間的組件,部分利用了平臺基礎組件層的組件,來抽象出一層公用業(yè)務服務組件,為業(yè)務組件提供通用的基礎支持。
安全組件
安全組件主要從四個角色去考慮整體的安全策略及具體的實施方案,這四個角色是:用戶,應用,平臺,服務。
平臺本身的安全主要是基于在大并發(fā)和大流量的情況下,保證平臺自身穩(wěn)定性和可用性,同時也要兼顧在平臺開放的服務不相互干擾和影響。因此采取服務分流隔離機制,通過虛擬配置及軟負載方式將服務請求動態(tài)分流和隔離,保證了服務之間相互的獨立性,同時也充分利用TOP的能力。頻率控制及流量控制除了保護TOP自身不受到攻擊,也為后端服務提供者作了天然的一個保護屏障,保證服務請求壓力可以在TOP上可控,防止流量直接壓倒服務提供者。用戶隱私安全在淘寶尤為重要,用戶信息的安全性也在淘寶開放的過程中被放到了首位。在開放平臺設計中,除了采用普通開放平臺的認證模式以外(OAuth類似流程),還在服務調用過程中通過區(qū)分應用角色來限制對于用戶信息的獲取和使用。同時針對不同的應用類型(插件,Web應用,客戶端應用,手機應用)都有各自不同的用戶授權方式,保證用戶的知情權。App的安全其實也是為了保證對服務的請求及對用戶信息的獲取不被不法的應用信息盜取者所利用,根據應用角色及自己對于安全的需求,采取多種方式或者組合的方式來實現App信息的保密性,保護App自身安全,也保證了平臺服務的數據安全。服務安全指的是對于服務來說分成了幾個層級,不同層級的服務對于安全級別的要求不同(不需要交驗應用身份,需要交驗應用身份,需要用戶授權,用戶可選擇授權等),在應用訪問服務的時候,就會需要根據服務級別的不同采用不同的訪問控制流程。根據上述的四個角色對于安全的考慮,通過應用角色的定義,服務虛擬組的編排,黑名單(頻率控制及流量控制),多模式用戶令牌等手段,形成了多種模式的安全控制流程。
服務路由組件
服務路由是開放平臺最基本的功能,如果排除商業(yè)因素,那么對于TOP最基本上來看可以看作一個服務路由器,服務路由主要的功能如下圖展示:
服務路由組件需要支持多服務類型的服務接入,不同服務類型主要表現在兩個維度:1.服務對外的展現方式(REST OR RPC),這兩種形態(tài)的服務沒有任何好壞之分,只是根據各自的系統(tǒng)形態(tài)來選擇采用哪一種模式來對外暴露,RPC比較符合過去應用開放的風格,REST比較適合面向資源的架構。同時對于同步,異步,通知,大數據量的服務,都會有不同的接入方式和調用方式支持,滿足各種業(yè)務場景的需求。多通信協議支持,表示服務請求到了TOP以后,TOP負責將請求繼續(xù)發(fā)送給服務提供者,不論服務提供者采用什么方式和TOP交互,最終將得到的結果返回給客戶,服務調用者將會對后端的服務請求過程透明,同時可以使TOP很容易接入一些傳統(tǒng)遺留系統(tǒng)的服務,或者是對通信有特殊需求的服務。特性支持主要是會有對內容的一些特殊處理,例如壓縮,在CS或者手機應用交互過程中,就會需要對數據量有所壓縮,滿足業(yè)務需求。
監(jiān)控告警組件
下圖是監(jiān)控告警組件的基本功能圖
監(jiān)控和告警模塊在TOP中起到越來越重要的作用,訪問量逐日膨脹,運行期TOP是一個黑盒,無法知曉當前系統(tǒng)實際的健康狀況,當出現問題以后比較難以定位。服務監(jiān)控主要是服務質量(響應時間),短時間段內的服務請求峰值,和階段性的趨勢。系統(tǒng)和平臺主要是對底層基礎組件的監(jiān)控,同時及時地通知TOP負責人處理線上即將要發(fā)生的事情。對于應用的監(jiān)控通常就是從客戶端和服務端兩面對于應用當前的情況作匯總分析。當監(jiān)控發(fā)現異常以后,就交由告警部分按照一定的發(fā)送策略給相關的負責人,在第一時間將問題解決。
日志組件
日志組件和其他系統(tǒng)的日志組件基本沒有太大的區(qū)別,只是在對于海量數據寫出和獲取的方法做了優(yōu)化(例如異步分頁批量輸出等)。日志組件主要負責,打點,收集,分析,數據庫記錄,歸檔。
協議轉換組件
這里談到的協議轉換指的是對于請求和返回的協議,TOP可以做適配,來滿足服務調用者和服務發(fā)布者之間在服務協議失配的情況下還是能夠正常通信。當前支持JSON,XML,Atom,二進制協議之間的轉換,當然轉換描述文檔將會配置在TOP。同時返回的數據內容,也可以通過協議轉換,返回給客戶端常規(guī)的xml或者json類型的數據。
服務流程化組件
服務流程化指的是將離散的服務通過流程描述文檔能夠虛擬的串聯成為一個新的服務,這樣更加適合調用者使用,同時將服務的一些內部邏輯隱藏起來。這很類似于SOA中的服務編排,同時也可以參看Yahoo的Pipe,那就是一種典型的服務串聯,同時還提供了方便的界面直接交由用戶通過手動拖拉的方式來使用服務串聯。
服務流程化最大的特點就是將不同類型的服務能夠根據業(yè)務場景的需求組合成簡單的流程性服務,極大降低了服務開發(fā)者由于對服務流程不熟悉而犯錯的幾率,同時也為服務開發(fā)者提高了開發(fā)效率。
計費組件
當前計費模型主要是按流量收費和插件分成兩種模式,因此計費組件還比較簡單,當前就是基于日志做分析,未來會考慮在流量上的各種特殊模式(打包,優(yōu)惠等等)。
容器組件(TBML)
產生原因:
- 數據隱私性
- 開發(fā)便利性
- 業(yè)務升級透明化
- 監(jiān)控全局化
- 開發(fā)標準化
作用:
- 數據操作可控,保護終端用戶隱私(結合cookie和標簽,控制ISV業(yè)務數據操作尺度,提高數據安全性)
- 提供標準業(yè)務流程標簽,簡化開發(fā)者對于業(yè)務流程理解過程。
- 標簽化接口方式,完成數據獲取和頁面渲染,后臺業(yè)務升級對ISV透明化。
- 標簽獲取客戶端信息,將監(jiān)控擴展到整個業(yè)務請求過程。制定行業(yè)化標簽庫,形成統(tǒng)一開發(fā)標準。
TBML首先需要根據業(yè)務需求及場景定義出對應的標簽庫,也就是制定Taobao的標簽標準,最簡單的獲取用戶信息標簽,到最復雜的業(yè)務操作流程標簽都會成為標簽庫中的一部分。同時在服務端需要有解釋引擎來翻譯標簽,解釋引擎一方面需要去了解標簽內容和含義,同時需要請求后臺多個API,串聯成為流程化的服務,從應用的輸入,得到最后的輸出,當然期間也需要處理異常的情況。最后還需要關注的就是安全控制,在交驗標簽傳遞來的數據時,需要對數據作完整性及合法性的交驗,防止通過標簽數據的特殊性攻擊后臺服務接口。
TBQL組件
TBQL其實是一種服務調用的方式,也是通過一種程序員和開發(fā)者習慣的方式,將對資源的REST請求轉換成一種類似QL的請求,對于面向資源性的架構體系來說是十分有利的。同時對于API來說,使用者會更加自然的去采用連接和過濾得方式得到需要的數據。
QL解釋引擎負責對于TBQL的翻譯工作,數據存儲的MetaData保存在數據庫中,可以指導QL解釋引擎翻譯。需要支持不同數據來源的連接和過濾,在獲得結果以后需要做格式轉換返回給服務調用者(通常就是xml)。與容器一樣,需要著重考慮安全性問題,對于傳統(tǒng)的SQL注入就是典型攻擊QL系統(tǒng)的案例,需要謹慎處理解析中對于字符的翻譯工作。在流程中出現異常,需要制定策略來判斷是否直接返回錯誤還是支持部分容錯。
TOPID組件
TOPID組件有點類似于Facebook的Connect,需要在淘寶和淘寶的合作開發(fā)者之間建立起雙向的用戶互通的標準和流程,同時也為服務互通打好基礎,畢竟業(yè)務的互動需要基于可以互通的用戶體系。