淘寶開放平臺開發指南之架構組件體系介紹

2020-12-27 CSDN技術社區

TOP是淘寶開放平臺的英文縮寫,同時也有頂級優質的英文含義。TOP的整個架構體系是組件化體系架構,可以是很少的幾個基礎組件構成的Skeleton,也可以是融入了商業想像的Amazing Architecture。這裡就通過對於這些組件的羅列,描述出在TOP這個大體系中,各個組件所處的地位及作用。TOP的兵器譜是在現階段商業需求及平臺非業務性需求指導下形成的,未來TOP將繼續發展,兵器譜也會不斷演進。

下圖是整個TOP當前的一個組件結構圖:

圖中,紅色虛線就是TOP的Skeleton。TOP當前從業務模塊功能角度來劃分,可以分成三個層次:基礎平臺組件層,基礎業務組件層,普通業務組件層。基礎平臺組件層,傾向於平臺級別功能滿足及對平臺穩定性,可用性的支持。基礎業務組件層,是介於平臺服務於普通業務服務之間的組件,部分利用了平臺基礎組件層的組件,來抽象出一層公用業務服務組件,為業務組件提供通用的基礎支持。

安全組件:

安全組件主要從四個角色去考慮整體的安全策略及具體的實施方案,這四個角色是:用戶,應用,平臺,服務。

平臺本身的安全主要是基於在大並發和大流量的情況下,保證平臺自身穩定性和可用性,同時也要兼顧在平臺開放的服務不相互幹擾和影響。因此採取服務分流隔離機制,通過虛擬配置及軟負載方式將服務請求動態分流和隔離,保證了服務之間相互的獨立性,同時也充分利用TOP的能力。頻率控制及流量控制除了保護TOP自身不受到攻擊,也為後端服務提供者作了天然的一個保護屏障,保證服務請求壓力可以在TOP上可控,防止流量直接壓倒服務提供者。用戶隱私安全在淘寶尤為重要,用戶信息的安全性也在淘寶開放的過程中被放到了首位。在開放平臺設計中,除了採用普通開放平臺的認證模式以外(OAuth類似流程),還在服務調用過程中通過區分應用角色來限制對於用戶信息的獲取和使用。同時針對不同的應用類型(插件,Web應用,客戶端應用,手機應用)都有各自不同的用戶授權方式,保證用戶的知情權。App的安全其實也是為了保證對服務的請求及對用戶信息的獲取不被不法的應用信息盜取者所利用,根據應用角色及自己對於安全的需求,採取多種方式或者組合的方式來實現App信息的保密性,保護App自身安全,也保證了平臺服務的數據安全。服務安全指的是對於服務來說分成了幾個層級,不同層級的服務對於安全級別的要求不同(不需要交驗應用身份,需要交驗應用身份,需要用戶授權,用戶可選擇授權等),在應用訪問服務的時候,就會需要根據服務級別的不同採用不同的訪問控制流程。根據上述的四個角色對於安全的考慮,通過應用角色的定義,服務虛擬組的編排,黑名單(頻率控制及流量控制),多模式用戶令牌等手段,形成了多種模式的安全控制流程。

服務路由組件:

服務路由是開放平臺最基本的功能,如果排除商業因素,那麼對於TOP最基本上來看可以看作一個服務路由器,服務路由主要的功能如下圖展示:

服務路由組件需要支持多服務類型的服務接入,不同服務類型主要表現在兩個維度:1.服務對外的展現方式(REST OR RPC),這兩種形態的服務沒有任何好壞之分,只是根據各自的系統形態來選擇採用哪一種模式來對外暴露,RPC比較符合過去應用開放的風格,REST比較適合面向資源的架構。同時對於同步,異步,通知,大數據量的服務,都會有不同的接入方式和調用方式支持,滿足各種業務場景的需求。多通信協議支持,表示服務請求到了TOP以後,TOP負責將請求繼續發送給服務提供者,不論服務提供者採用什麼方式和TOP交互,最終將得到的結果返回給客戶,服務調用者將會對後端的服務請求過程透明,同時可以使TOP很容易接入一些傳統遺留系統的服務,或者是對通信有特殊需求的服務。特性支持主要是會有對內容的一些特殊處理,例如壓縮,在CS或者手機應用交互過程中,就會需要對數據量有所壓縮,滿足業務需求。

監控告警組件:

下圖是監控告警組件的基本功能圖:

監控和告警模塊在TOP中起到越來越重要的作用,訪問量逐日膨脹,運行期TOP是一個黑盒,無法知曉當前系統實際的健康狀況,當出現問題以後比較難以定位。服務監控主要是服務質量(響應時間),短時間段內的服務請求峰值,和階段性的趨勢。系統和平臺主要是對底層基礎組件的監控,同時及時地通知TOP負責人處理線上即將要發生的事情。對於應用的監控通常就是從客戶端和服務端兩面對於應用當前的情況作匯總分析。當監控發現異常以後,就交由告警部分按照一定的發送策略給相關的負責人,在第一時間將問題解決。

日誌組件:

日誌組件和其他系統的日誌組件基本沒有太大的區別,只是在對於海量數據寫出和獲取的方法做了優化(例如異步分頁批量輸出等)。日誌組件主要負責,打點,收集,分析,資料庫記錄,歸檔。

協議轉換組件:

這裡談到的協議轉換指的是對於請求和返回的協議,TOP可以做適配,來滿足服務調用者和服務發布者之間在服務協議失配的情況下還是能夠正常通信。當前支持JSON,XML,Atom,二進位協議之間的轉換,當然轉換描述文檔將會配置在TOP。同時返回的數據內容,也可以通過協議轉換,返回給客戶端常規的xml或者json類型的數據。

服務流程化組件:

服務流程化指的是將離散的服務通過流程描述文檔能夠虛擬的串聯成為一個新的服務,這樣更加適合調用者使用,同時將服務的一些內部邏輯隱藏起來。這很類似於SOA中的服務編排,同時也可以參看Yahoo的Pipe,那就是一種典型的服務串聯,同時還提供了方便的界面直接交由用戶通過手動拖拉的方式來使用服務串聯。


服務流程化最大的特點就是將不同類型的服務能夠根據業務場景的需求組合成簡單的流程性服務,極大降低了服務開發者由於對服務流程不熟悉而犯錯的機率,同時也為服務開發者提高了開發效率。

計費組件:

當前計費模型主要是按流量收費和插件分成兩種模式,因此計費組件還比較簡單,當前就是基於日誌做分析,未來會考慮在流量上的各種特殊模式(打包,優惠等等)。


容器組件(TBML):

產生原因:

1.數據隱私性

2.開發便利性

3.業務升級透明化

4.監控全局化

5.開發標準化

作用

1.數據操作可控,保護終端用戶隱私(結合cookie和標籤,控制ISV業務數據操作尺度,提高數據安全性)

2.提供標準業務流程標籤,簡化開發者對於業務流程理解過程。

3.標籤化接口方式,完成數據獲取和頁面渲染,後臺業務升級對ISV透明化。

4.標籤獲取客戶端信息,將監控擴展到整個業務請求過程。制定行業化標籤庫,形成統一開發標準

TBML首先需要根據業務需求及場景定義出對應的標籤庫,也就是制定Taobao的標籤標準,最簡單的獲取用戶信息標籤,到最複雜的業務操作流程標籤都會成為標籤庫中的一部分。同時在服務端需要有解釋引擎來翻譯標籤,解釋引擎一方面需要去了解標籤內容和含義,同時需要請求後臺多個API,串聯成為流程化的服務,從應用的輸入,得到最後的輸出,當然期間也需要處理異常的情況。最後還需要關注的就是安全控制,在交驗標籤傳遞來的數據時,需要對數據作完整性及合法性的交驗,防止通過標籤數據的特殊性攻擊後臺服務接口。

TBQL組件:

TBQL其實是一種服務調用的方式,也是通過一種程式設計師和開發者習慣的方式,將對資源的REST請求轉換成一種類似QL的請求,對於面向資源性的架構體系來說是十分有利的。同時對於API來說,使用者會更加自然的去採用連接和過濾得方式得到需要的數據。

QL解釋引擎負責對於TBQL的翻譯工作,數據存儲的MetaData保存在資料庫中,可以指導QL解釋引擎翻譯。需要支持不同數據來源的連接和過濾,在獲得結果以後需要做格式轉換返回給服務調用者(通常就是xml)。與容器一樣,需要著重考慮安全性問題,對於傳統的SQL注入就是典型攻擊QL系統的案例,需要謹慎處理解析中對於字符的翻譯工作。在流程中出現異常,需要制定策略來判斷是否直接返回錯誤還是支持部分容錯。

TOPID組件:

TOPID組件有點類似於Facebook的Connect,需要在淘寶和淘寶的合作開發者之間建立起雙向的用戶互通的標準和流程,同時也為服務互通打好基礎,畢竟業務的互動需要基於可以互通的用戶體系。

以上僅僅只是簡單的羅列了一下TOP技術體系架構中的一些組件化的內容,同時在這些組件的背後有著更多的基礎性項目的支持,例如統一配置中心對於系統動態擴容的支持,分布式緩存對於監控告警的支持,分布式文件系統對於海量小文件保存和獲取的支持等等。同時以上每一個模塊都有各自特殊的定製和優化,例如路由模塊就需要有Lazy的服務參數解析模式來提高處理性能,安全體系中需要有動態密鑰機制來保證高安全性等等。

TOP從萌芽走向成熟,不論從技術架構還是商業規劃都處於不斷摸索和改進的過程,當前的技術體系僅僅是現階段的一個需求縮影,未來在市場不斷成熟,開發者不斷介入和反饋的情況下,TOP會走得更快更遠,TOP的兵器譜會更加豐富,更加出彩。

Author:放翁(文初)
Email:fangweng@taobao.com
Blog:http://blog.csdn.net/cenwenchu79

延伸閱讀:

淘寶開放平臺開發指南之快速入門

淘寶開放平臺開發指南之熟悉API族

淘寶TOP開放平臺開發指南之API是如何誕生的

淘寶開放平臺TOP開發指南之解密TOP的認證授權機制(一)

淘寶開放平臺開發指南之淘寶動力開發者持續盈利的魔力

淘寶開放平臺開發指南之TOP的盈利模式

淘寶開放平臺開發指南之解密TOP服務分流與隔離

相關焦點

  • 開放平臺知多少 盤點國內主流開放平臺
    使用OAuth的授權機制進行開發,在網站的顯著位置添加「與新浪微博連接」的功能,讓用戶與能夠直接點擊並登錄。  分享與動態:新浪微博現有的用戶傳播體系非常完整,好友之間通過大量的信息分享帶來病毒式的傳播。平臺提供了分享按鈕和動態展現插件,讓你僅僅通過幾行HTML代碼就能夠在你的網站上加入社交特性。分享的內容也會在微博網站上展現,用戶點擊連結後可直接進入相關內容。
  • 騰訊陳磊談開放平臺架構設計
    這三點要素是開放平臺的三駕馬車,在本著這三個角度設計開放平臺之後,陳磊指出騰訊能夠做出優秀的開發平臺還有幾點:首先,騰訊開放平臺是全方位開放平臺,海量用戶關係鏈能夠開放;其次,騰訊開放平臺包括觸達海量用戶的渠道,開放平臺上有被用戶廣泛使用的功能,比如相冊、音樂、視頻、微雲等,把這些功能開放出來,讓開發商在這些強大的功能之上繼續創新。
  • SOA(面向服務的體系架構)基本概念
    首先說明SOA的特點,以及使用SOA對系統進行架構決策和設計的必要性。然後介紹了SOA的參考體系結構、設計原則及相關技術的簡介。引言《SOA:原理方法實踐》是一本全面探討SOA理念、SOA方法學、設計模式和案例分析的書籍。
  • QCon全球軟體開發大會:1人+1個平臺ID=10人網際網路架構開發團隊
    現場,從事科技行業二十餘年的飛算雲智總裁陳定瑋提出「管理制度+管理工具=解決之道」,推出飛算全自動軟體工程平臺,讓軟體工程從「人治」走向「法治」。飛算全自動軟體工程平臺一個ID等於運維工程師、需求分析師、項目經理、系統架構師、測試工程師、開發工程師(前端/後端),實現「1人+1個平臺ID=10人網際網路架構開發團隊」。
  • 想要變身Go運維開發架構師,看這一篇就夠了
    2020年馬哥Go運維開發架構師學習路線圖共八個階段的學習:GO核心編程--資料庫處理--Web開發框架--多雲管理平臺--用戶管理平臺--監控報警系統--發布系統--Docker與K8S。實現了比較完善的基礎設施建設以及開發工具鏈,提供了常用的基礎開發模塊,如:緩存、日誌、隊列、數組、集合、容器、定時器、命令行、內存鎖、對象池、配置管理、資源管理、數據校驗、數據編碼、定時任務、資料庫ORM、TCP/UDP組件、進程管理/通信等等。
  • ReactNative 的組件架構設計
    來開發 web 程序,本篇文章只能僅供參考,問題都沒有在 web 上去考慮過。RN 架構就是為解決上述問題提供的指導和方法論,是通盤考慮整個開發、測試、運維的狀況,做出的考慮最全面的抉擇,或者為抉擇提供依據。目前為 react 服務的架構也有一些了,如 Flux,Reflux,Redux,Relay,Marty。flux 是官方提供的架構,目的是分層解耦,職責劃分清晰,誰負責幹啥很明確。
  • Android組件化架構 - 5. 數據存儲 & GreenDao,Room
    組件化存儲Android原生的存儲體系是全局的,在組件化的開發中,五種原生的存儲方式是完全通用的;比較值得介紹的是兩個主流的資料庫框架GreenDao,RoomGreenDao是目前眾多orm資料庫中最穩定,速度最快,編寫體驗最好的框架,並且支持RxJava, 支持sqlcipher資料庫加密另外還有一個比較常用的資料庫框架realm
  • JNPF快速開發平臺-簡單快速高效開發java項目
    JNPF快速開發平臺 JNPF快速開發平臺採用前後端分離技術、採用B/S架構開發,形成一站式開發多端(APP+PC)使用。 使用JNPF開發平臺可以簡單、快速、高效的構建各種類型java項目。
  • 宇信科技:公司繼續在基於微服務架構的統一開發平臺方向上加大研發...
    來源:同花順金融研究中心同花順(300033)金融研究中心12月4日訊,有投資者向宇信科技(300674)提問, 能否介紹下公司在研發方面的投入,2020年在IT行業的研發是否有進一步加大?公司繼續在基於微服務架構的統一開發平臺方向上加大研發投入,提升了前端的快速配置開發能力,後端與華為鯤鵬架構、百度金融雲完成了兼容性認證,平臺底座完全支持兼容國產化作業系統和資料庫,該平臺目前已推廣了80餘家銀行和泛金融客戶,使得公司在分布式架構下的各個產品重構和升級過程中,顯著提升了開發效率。
  • 汽車開放系統架構完善車載網絡和ECU設計
    自2003年成立以來,AUTOSAR(汽車開放系統架構)聯盟便一直致力於改變車載網絡和電子控制單元(ECU)的設計方式。AUTOSAR為原始設備製造商(OEM)及其一級供貨商提供了一種產業的標準方法,以設計和開發位於現代車輛中心的ECU。
  • 開源雲計算架構介紹(三)
    變革架構的途徑  在 20 世紀 90 年代,人們談論的話題是關於如何把一個應用程式分解成各種組件,然後是如何將這些組件部署到不同的伺服器上,以便優化非功能要求,包括可擴展性、可用性、易管理性和安全性。現在,我們所維持的是一個分解式應用程式架構,同時實際部署到一個利用虛擬化的整合式架構上。
  • 胡志高:建設開放的中國招標投標公共服務平臺
    一、 電子招標投標系統三大平臺架構,奠定開放互聯的基石(一) 按獨立運營、互聯互通的原則分設三大平臺電子招標投標系統是電子招標投標活動的技術基礎,按照完成全過程招標投標活動,結合服務範圍、對象、建設運營主體的不同特點和需要,將電子招標投標系統科學劃分為三大平臺,即交易平臺、公共服務平臺和行政監督平臺。
  • 手機淘寶是用什麼語言開發的?
    淘寶可以說是國內使用最高的電商網站了,每年淘寶的崩潰次數都是屈指可數的。所有後來很多電商網站開發的時候,雖然定位與淘寶不同,但是技術上都是直接對標淘寶商城開發的。那麼手機淘寶是用什麼語言開發的,我們如果需要搭建一個像淘寶這樣的網站,用什麼語言比較好呢?
  • 架構組件之 ViewModel | 中文教學視頻
    生命周期管理庫 (Lifecycles) 由三個組件構成,包括 Lifecycle、LiveData 和 ViewModel。
  • 軟體項目實訓及課程設計指導——如何實現面向服務的系統架構設計
    )其實就是一種新型的軟體應用系統的系統體系架構設計形式,在基於SOA架構設計思想所開發實現的企業級軟體應用系統中,軟體應用系統中的各個業務功能的程序模塊是由一些鬆散耦合併且具有統一接口定義的服務組件相互組合而構建的。
  • 「首席架構師看微服務架構」介紹NGINX的微服務參考架構
    NGINX Docker映像是Docker Hub上排名第一的應用程式映像,您今天在Web上找到的大多數微服務平臺都包含一個演示,它以某種形式部署NGINX並連接到歡迎頁面。因為我們認為轉向微服務對於客戶的成功至關重要,我們NGINX已經啟動了一個專門的程序來開發支持Web應用程式開發和交付這種地震轉變的功能和實踐。
  • 架構設計:業務邏輯和技術分離
    為什麼需要架構? 有系統的地方就需要架構,大到航空飛機,小到一個電商系統裡面的一個功能組件都需要設計和架構。 我很喜歡《系統架構:複雜系統的產品設計與開發》裡面的一句話:結構良好的創造活動要優於毫無結構的創造活動。
  • DevOps平臺架構解析
    總結下一期的建設成果: 1.實現40+微服務的的持續集成、自動化部署 2.基於Scrum體系,統一管理20+產品、30+項目 3.統一持續交付流水線,9大環節,跨4大環境,驅動開發、測試、質量、運維、管理等多個角色協作
  • 【重磅】Docker企業級管理平臺開放下載,免費使用
    雲幫是一款基於容器技術的(應用管理/Docker管理/高效運維)PaaS平臺。社區版針對個人、企業完全免費,您可以自由的下載與傳播,但需要遵循我們的社區版協議。  雲幫從哪裡來? 雲幫是北京好雨科技有限公司結合容器技術整合的一套管理平臺。從2015年3月開始,歷經18個月,雲幫已經幫助30餘家傳統企業完成由傳統IT架構向容器技術架構的遷移。
  • 雲原生生態大會Day2,網易數帆Service Mesh與百勝中國中臺架構實踐
    在大會的第二天,網易數帆輕舟事業部微服務平臺負責人馮常健、網易數帆輕舟事業部資深解決方案架構師王必成與百勝中國系統架構師申海龍,分別介紹了網易數帆和百勝中國雲原生相關的技術實踐與經驗心得。申海龍介紹,百勝中國對中臺技術模型的訴求包括應用接入可管理、業務能力文檔化、運營KPI可視化、統一技術棧及接口規範、應用耦合能力標準化和數據整合能力標準化等六大原則,基於此,百勝中國需要一套完善的中臺技術方案,除了下層的基礎架構,還需要容器、中間件、服務治理和API網關等核心組件,以及覆蓋開發流水線、持續集成、監控報警、日誌、APM的支撐體系,和接口測試平臺。