愛奇藝元件化設計在會員業務的應用和實踐

陶然陶然發表於2023-04-04

   01 背景

  在現代商業環境中,為了實現商業目標和利益的最大化,企業之間經常進行各種合作,例如供應鏈合作、銷售渠道合作、技術合作等等。在這種背景下,對外合作成為了會員業務的重要組成部分,隨著業務的發展,外部合作的需求越來越多,如何能高效完成與合作方的對接,成為了一個重要的課題。

   02 合作方式介紹

  對外合作主要是以介面方式對接,負責企業之間的資料交換和服務共享。合作方式分為以下2種:  

  1、合作方標準化:合作方制定介面的資料格式、傳輸協議、安全機制、狀態碼、錯誤處理等規範,愛奇藝按照合作方規範定製化開發,合作方沒有開發工作量。

  2、愛奇藝標準化:愛奇藝制定介面的規範,合作方按照愛奇藝的規範定製化開發,愛奇藝沒有開發工作量。

  我們最希望用第2種方式對接,沒有開發工作量,但是很多合作方堅持用自己的標準,導致每個合作對接的需求都要定製開發,這種實現方式嚴重阻礙了業務的發展,需要找到一個通用設計方案提升對接的效率。

   03 方案調研

  我們從實際業務場景出發,分析一下合作方介面定製化對接的流程:

  1、將內部系統資料物件轉換為合作方約束的請求引數

  2、將轉換後的引數,按照合作方指定的規則生成簽名

  3、以合作方指定的方式完成介面呼叫

  4、解析介面響應,獲取對應的響應碼及合作方側返回的業務資訊等

  5、更新本地記錄

  不同合作方的對接流程是一樣的,不同的是請求引數、簽名規則、介面呼叫方式、響應報文格式,所以可以抽象標準流程,把不同的處理邏輯封裝為元件,透過介面串聯元件流程,達到元件配置即可完成介面對接的目的。實現思想如下:  

  經過元件化拆分後,各個元件的職責具有一定的獨立性和複用性。開發同學只需要關注新元件的實現,不會影響其他元件的功能。隨著元件的不斷增加,最終合作方的對接都不需要開發,可以大幅提升介面對接的效率。

   04 解決方案

  整體流程

  流程基本骨架和元件進行了拆分,元件由元件庫統一管理,元件執行流程可配置。在介面邏輯執行過程中,元件流程可以動態載入。執行完成後,統一更新業務資料。互動流程如下圖所示:  

  核心類圖  

  CallerContext:請求上下文,封裝流程執行的配置資訊、引數資訊

  Caller:流程執行抽象介面

  StandardCaller:Caller的標準實現,定義了目前對接方式的標準流程、負責排程下層各個元件的執行

  IConvertParamComponent:引數轉換元件介面,負責將內部標準引數轉換為三方介面引數

  ISignComponent:生成簽名元件介面,負責對轉換後引數進行簽名計算

  IExecuteComponent:呼叫三方介面元件,負責以指定方式完整對三方介面的呼叫

  IParseResComponent:解析響應元件,負責對三方介面響應進行解析,識別呼叫結果是否出現異常等等

   05 成果及展望

  成果

  目前系統已預置一部分元件,理論上可以支撐近千種對接方式,90% 以上的對接無需開發。在提效方面,節省了開發和測試時間,整體成本降低 86% 。

  展望

  後續將元件化設計思想抽象為元件平臺,流程配置不侷限在對外合作業務場景,可以支援任意的業務流程編排,元件上下線支援熱插拔,無需服務安裝部署。透過平臺化的設計,可以支援更多的業務場景,助力公司的整體效能提升。

來自 “ 愛奇藝技術產品團隊 ”, 原文作者:會員技術團隊;原文連結:http://server.it168.com/a2023/0404/6797/000006797397.shtml,如有侵權,請聯絡管理員刪除。

相關文章