主頁 > 軟體設計 > 汽車之家10年系統架構演進與平臺化架構實踐

汽車之家10年系統架構演進與平臺化架構實踐

2023-05-25 09:19:51 軟體設計

目錄:

一、前言

二、架構演進

  • 1、起步階段

  • 2、微服務階段

  • 3、主資料階段

  • 4、平臺化架構階段

三、平臺化架構實踐

  • 1、業務身份化

  • 2、服務編排化

  • 3、業務配置化

  • 4、開發工具化

  • 5、資料可視化

  • 6、知識沉淀

四、尾聲

  • 1、探索新零售

  • 2、架構升級

 

一、前言

 

汽車之家電商系統誕生在2014年,成長于2016~2019年,并經歷多年雙11、818晚會的洪峰考驗,沉淀了穩定可靠、性能卓越的在線交易能力,隨著業務中臺的建設浪潮興起,2019年進入中臺化建設階段,輸出其在汽車電商領域五年沉淀的能力,助力汽車電商行業發展,加速企業數字化轉型!

 

二、架構演進

 

這個部分主要講一下汽車之家電商系統的架構發展歷程,每個階段的業務狀況、技術挑戰和技術體系的應對策略,

 

圖片

 

1、起步階段

 

互聯網大環境在2011~2013年經過千團大戰、電商大戰?[1]之后,電商業務已經成了互聯網流量變現除廣告模式外的另外一塊戰略高地,在2013年“雙十一”期間,汽車之家推出購車服務,將交易環節作為一個重要發展方向[2],

 

在業務起步階段 對技術的要求就是快速迭代上線,驗證產品可行性,在滿足業務日常需求的同時,技術架構上的思考也未停止過,考慮到未來電商系統的可擴展性,參考業界阿里巴巴的技術體系,2014年開始研發技術堆疊也逐步從 .NET體系變成Java體系,并與2015年5月30日完成所有的應用切換,上線完整的在線網上購車平臺車商城,

 

2、微服務階段

 

隨著電商業務迅猛發展,技術人員的增加,到2016年技術團隊已經有了上百人,單體架構之痛迎面撲來,就以一個前臺的商城git專案而言,就幾乎近30個maven的子專案,遇上需求并行開發,經常出現代碼的合并沖突、需求上線等待、線上慢SQL等問題,整個系統的開發效率和系統穩定性都變差了,

 

圖片

 

這個時候的系統支撐面臨巨大的挑戰,系統架構必須升級進化,我們開始做分布式戰略,把原來的單一系統拆分成多個高內聚,低耦合的中心化系統,也就是現在的用戶中心、商品中心、訂單中心、促銷中心、優惠券中心、商家中心,每個獨立的系統可以獨立設計、獨立接需求、獨立發布,整個研發效率和系統穩定性都上了一個臺階,

 

在這個階段我們在技術上完成 支撐汽車電商百萬級商品系統[3]、訂單系統[4]、優惠券系統[5]構建,并完成了應用的全部上云[6]、自動化測驗平臺構建[7],

 

同時在業務上探索了自營整車電商模式 、開放平臺模式、B2B2C模式、報價單模式、顧問模式、TPCC模式、平行進口車售賣等各種經營模式,

 

3、主資料階段

 

電商發展的速度實在太快了,到了2019年公司內已經有了多種在線交易模式,比如旅游類、車品與后市場服務類、積分兌換類等,公司基于發展戰略決定搭建電商中臺,一方面為了集中公司優質的產品資源、運營資源,打造具有影響力的垂直類電商交易平臺,另一方面也是為了合理管控技術資源,實作電商系統的統一,在此背景之下,我所在的團隊承擔起了搭建電商中臺的任務,由于各個系統間的業務形態、技術架構差異很大,所以我們面臨的第一個問題就是用什么方式能夠實作交易類系統的整合,

 

為此我們一方面開始熟悉不同業務場景下的交易系統的現狀,另一方面也在技術方案上進行著思考和討論,最終我們選擇了“以資料歸一為基礎,提供標準化中臺服務,從下層向上層逐個系統整合”的方案,

 

圖片

 

(1)資料歸一

 

資料是公司的核心資產,任何系統尤其是交易類系統,資料更是重中之重,主資料的建設一方面能夠統一資料模型,打破系統壁壘;另一方面也能夠通過集中的資料進行經營性資料分析,為業務決策提供依據,因此我們將主資料的建設作為了系統整合的第一步,

 

在交易流程中,最重要的資料集中在商家、商品、訂單、促銷活動這四個領域,我們結合公司交易場景的現狀,分別對這四個領域的主資料進行抽象,統一建模,盡可能的適配大多數的交易場景,

 

以下是訂單主資料核心資料模型結構的示意圖:

 

圖片

 

完成了統一的資料模型后,下一步就需要將現有的異構型資料匯入到主資料庫中,我們采用了讀取資料庫binlog(mysql、sqlserver)進行資料加工的方式完成初期的資料同步匯入,這也是對業務侵入最小、最快的實作方案,

 

(2)API標準化

 

完成了主資料建設,下一步我們便開始進行基于主資料的API標準化建設,API可以看做是系統的神經,高質量的API可以串聯起一個優質的系統,統一了API在一定程度上也就實作了系統的收口,

為此,我們遵循單一職責的原則,按照領域進行區分,明確邊界,做到所有底層API功能原子化,便于上游使用者靈活組裝API完成業務邏輯,同時統一API的引數結構和回應結果的結構,統一錯誤碼,基于API網關統一發布、呼叫,API的資料統計監控、降級、限流實作統一管控,

 

(3)API讀寫切換

 

有了標準化的API,自然需要讓業務方進行使用才能體現出API的價值,為了防止步子邁的太大,我們也是按照業務的重要性以及量級,采用讀寫分階段的方案逐個業務進行呼叫切換,看似很合理的步驟,在實際執行程序中也暴露了很多問題:

 

①在讀寫強依賴的場景,比如:用戶下單完成后馬上會跳轉到訂單詳情查看訂單,這個時候在未完成寫API切換的時候,由于資料同步延遲會導致通過讀API讀取資料失敗,這時就沒有辦法按照先讀后寫分階段進行切換,最好的辦法是讀寫同時切換,

 

②對于業務切換影響最小的方式,當然是兼容原介面的引數和回傳結果,如果我們強加業務方按照我們標準的API進行切換,勢必給業務方帶來切換成本和不必要的負作用,

這個時候我們自然要從對方的角度出發做一些取舍,我們采用的方式是在標準API之上增加了一層適配層,用于新老協議的轉換,讓業務方只需要切換域名和請求的URL即可,其他邏輯不變,最大限度的做到對業務方友好,

 

③由于我們提供的底層API都是原子的,但在實際場景中,尤其是前后端分離的專案,前端是不大愿意為了一個結果多次呼叫介面獲取,面對這種情況,我們也是在后端增加了一層門面層,基于底層原子API組合成滿足業務場景的API對外提供,對于差異化的介面邏輯做適度兼容,

 

④讀寫切換不可能一蹴而就,在這個程序中勢必會存在主資料API和原業務API并存的場景,鑒于所有API的入口都將由我們統一提供,因此我們也是采用了路由的機制,通過路由層的location進行區分轉發,所有API做到對呼叫方的透明,

 

⑤在實際API切換的程序中,還有一種特殊的場景,因為最終要實作系統的整合,對于那些后續會被整合掉的功能強行做API切換其實也是一種資源的浪費,因此我們也是提前做了預判,可以適度的不做切換,等待功能整合后將整體功能進行切換,

 

(4)系統功能整合

 

在完成API讀寫切換之后,基于主資料的功能基本完成了聚合,此時就需要將通用功能進行系統化的統一,比如:統一的商家管理后臺、統一的運營后臺、統一的C端交易體驗等,系統層級的統一整合目的是為了給使用者一個統一的操作界面,體現平臺的專業性,

 

在系統整合的程序中,我們采用了“共性沉淀,差異取舍”的原則,對于那些通用的能力,比如:商品發布、訂單串列等功能,我們會抽象出通用的能力,提供統一的單元化的操作界面,滿足各業務方的使用訴求,

 

對于業務方特有的功能,我們會建議業務方去實作,而對于那些目前還無法形成通用能力但未來有可能作為通用能力的功能,我們會按照MVP原則,用最快的方式實作小版本的上線,隨著業務的迭代不斷的實作功能沉淀,

 

在整個系統整合的程序中,必然會出現在整合原有系統功能的同時又有新需求的加入,面對這種場景,我們的采用的方式是新老系統同步開發,看似增加了成本,其實對于新系統的整合是有好處的,一方面能夠不影響業務的開展,不會因為技術性的整合對業務造成停滯,另一方面可以通過新老系統的對比,找出新系統可能存在的問題,這也會是驗證整合后的新系統功能的最佳途徑,

 

在完成絕大部分的系統整合作業之后,電商核心的交易鏈路已經可以跑通,并且在線上經歷了長時間的驗證,從商家入駐、商品發布、商品展示、下單、支付、履約、售后,到最終的結算,期間遇到的問題也在一一化解,在這個階段我們完成了公司內3大交易系統的整合,并進行了電商平臺秒殺系統的架構升級[8],優惠券系統的架構升級,支撐了2020-2021的818晚會、雙11、雙12等大型活動的秒殺、發券場景,另外我們也在積極探索領域驅動模型DDD的理論與業界實踐,并在發票總庫系統的重構中進行了落地實踐[9],這也為后續的平臺化架構升級提供了技術支撐,

 

4、平臺化架構階段

 

在電商業務中臺繼續向業務的“逼近”程序中,系統的抽象和建設難度也成指數型增加,出現了一系列新問題:

 

(1)隨著建設中臺專案的結束,人員的撤離,電商業務中臺在集成這么多業務線的邏輯之后,代碼里充斥著大量條件判斷,每次需求迭代的開發成本和測驗回歸成本都很高,如何隔離不同業務之間的邏輯,減少業務之間的耦合度呢?

 

(2)如何抽象出已接入電商業務中臺的多條業務線的共性能力,以避免重復建設呢?

 

(3)當新業務接入電商業務中臺,如何基于已有的能力和解決方案快速組裝上線,以支撐業務快速迭代創新?

 

(4) 如何能夠利用技術手段幫助產品運營日常作業提效呢?

 

綜上所述,電商業務中臺在建設程序中抽象業務線的共性能力以及共性能力的復用性設計與實作尤其重要,業務中臺要做到能力復用和靈活多變才能讓中臺建設在企業的發展程序中起到降本增效的效果,系統架構必須升級,這就進入了平臺化架構階段,

 

三、平臺化架構實踐

 

什么是平臺化架構?就是要把基礎能力跟每個業務方的特性業務拆分,要把業務和業務之間的邏輯進行隔離,平臺化最核心的是業務抽象建模和系統架構的開放性,業務抽象解決共性的80%問題,系統架構開放性解決20%的個性化問題,

 

在參考ThoughtWorks給出的《現代企業架構白皮書》的方案[10]以及業界的互聯網公司美團[11]、有贊[12]的中臺解決方案,我們給出了適合之家電商平臺的解決方案:通過領域驅動建模抽象出電商業務中臺多業務線的共性能力并預留擴展點,然后利用服務編排對共性能力進行組合,其原理如圖所示:

 

每一個在電商業務中臺運行的業務可以理解為:業務身份+業務流程+規則,業務流程通過流程服務編排來實作,擴展點通過擴展點機制來實作,在整個交易流程中B端的商家入駐、商品發布相對通用,不同的業務的主要流程差別體現在訂單收單前以及支付后的訂單履約,這些流程往往都是需要定制化開發,為此整個解決方案核心在于訂單平臺化的架構設計,

 

圖片

 

如圖所示,整個訂單平臺化架構分為五層,從下往上依次是:

 

  • 基礎設施層:提供存盤、訊息、RPC等中間件

  • 基礎服務層:按域組織的基礎服務、域服務內針對不同業務的差異提供擴展點,

  • 業務能力層:串聯不同域服務形成可供外部使用的業務能力,比如下單、支付等,

  • 業務流程層:對業務能力進行編排、形成訂單交易流程、完成訂單交易程序,

  • 業務層:制定業務身份、擴展點實作以及業務流程配置等,實作不同業務差異,

 

整個訂單平臺化架構升級實踐程序,總結為以下幾點:

 

1、業務身份化

 

業務身份的概念最早由阿里巴巴提出,業務平臺在對各業務同時提供服務時,需要能區分每一次業務服務請求的業務身份要素,以便提供差異化個性化的服務;因此需要對企業各業務的身份和特征進行建模和區分,其產出即為業務身份,業務身份具有唯一性,業務身份類似于身份證號碼一樣,需要保證在整個業務中臺上必須是唯一的,

 

有了業務身份業務中臺就可以針對抽象這個業務流程和業務規則,并基于業務身份實作服務路由、業務監控,其次業務身份就類似SAAS系統中的租戶的概念,不同的業務方在中臺通過業務身份進行資料權限隔離,這樣能保證各業務的運營只能看見自己業務部分的資料,

 

比如在汽車電商領域,業務身份我們通過人、貨、場三個維度進行抽象,人的維度有是否開通會員、是否是認證車主、開通了哪些增值服務等;貨的維度有商品型別(整車、實物商品、虛擬商品等),交付方式(核銷、兌換、4S店交付)等;場的維度有線上下單、線下下單、在哪個線上商城下單,在哪個交付店下單、商品投放渠道來源等,根據這些維度確定了唯一的業務身份后,每筆交易的業務流程就確定下來了,

 

2、服務編排化

 

電商業務中臺整體采用微服務架構、將整個電商系統拆分為商家中心、用戶中心、商品中心、促銷中心、交易中心、履約中心、售后中心,每個中心在邏輯上分成了帶有業務屬性的能力和不帶業務屬性的基礎能力兩層,基礎能力層關注領域模型的物體屬性、行為、事件,不會隨著業務的需求調整而發生變化,聚焦于行業共性行為、收斂業務模型,保障基礎服務的穩定性,帶有業務屬性的能力是在基礎能力層之上通過服務組合、流程編排之類的技術手段,構成面向業務的解決方案,完成業務共性到個性化的轉變,有兩種常見的做法如下:

 

其一是使用硬編碼來實作,隨著不同業務線的邏輯不斷增加,各個業務能力呼叫的基礎能力會變得盤根錯節,很難做到可配置、靈活化,當發生需求變更的時候,測驗人員很難評估修改的影響范圍,回歸測驗的成本周期長,這樣很難真正做到敏捷開發、快速回應業務,

 

其二是使用服務編排,通過服務編排現有微服務進行服務組合服務,然后一次性的回傳前臺需要的資訊,不同業務線的能力執行不同的流程,通過圖形化、XML、JSON的編排框架,即可以讓流程清晰,也可以屏蔽代碼細節,

 

服務拆分的好處無需贅述,但是要實作業務價值,不是看單個服務的能力,而是要協調所有服務保證企業端到端業務流程的成功,業務中臺是企業業務的集成平臺,集成技術必須松散地耦合組成流程的應用程式和資源,否則流程的邏輯將被硬編碼到特定的技術平臺中,更改可能代價高昂,從而違背業務流程復用的整個目標,

 

(1)服務編排框架

 

在服務編排領域,已經有很多的工業界解決方案,我們參考了基于API網關的服務編排[13],基于作業流系統的編排框架Flowable和Activiti[14]、基于微服務架構編排框架的Netflix Conductor[16]和Zeebe[17],通過對技術原理進行分析,發現它們都存在某些程度上的不足,無法應用到電商業務中臺的服務編排,最終我們選用Apache Camel [18]做為服務編排的底層引擎進行二次封裝開發,Apache Camel 誕生于2007年,2009年前后成為Apache頂級專案更名為Apache Camel,目前最新版本是3.0,Apache Camel的優點在于在發布后十多年的時間里,已經擁有三百多種擴展組件;擴展機制也極其方便和靈活;通過開箱即可用的最佳實踐來解決應用集成問題;它基于事件驅動的架構,有著良好的性能和吞吐量[19],

 

以下是一個簡單的服務流程編排樣例:

 

圖片

 

業務中臺使用服務編排技術一方面可以將交易的能力自動識別出來作為組件可視化的呈現,形成能力地圖;另一方面,基于這些基礎能力實作服務流程的編排,能夠通過拖拉拽的方式快速搭建出適合業務的全部或者部分交易流程,類似積木,復用基礎組件,靈活搭配,進而實作電商企業級能力的復用,節約開發成本,快速賦能業務的目標,

 

(2)擴展點框架

 

擴展點的全稱是Service Provider Interface,簡稱為SPI,是Java提供的一套用來加載和運行第三方擴展的介面實作類的機制,一般用在組件替換和框架擴展的場景,SPI將服務介面與服務實作分離以達到解耦、提升了應用程式的可擴展性,在程式設計中,模塊之間采用面向介面編程而不做具體的實作類參考,通過動態加載實作類達到應用程式的插件化,

 

COLA框架是阿里巴巴技術專家提出的一種應用架構的擴展點框架[20],COLA框架的擴展是通過注解的方式來實作的,Extension擴展注解里面使用用例(useCase)、業務(bizId)、場景(scenario)三個屬性用來標識身份,使用COLA框架的擴展點可以在代碼層面支持不同業務身份的邏輯隔離,因為不同的邏輯分散在不同的實作類里面,符合軟體設計的開閉原則,

 

COLA框架在應用Spring背景關系初始化完畢階段,開始掃描帶有Extension注解的bean進行擴展點注冊,以Map的結構存盤,Key是useCase、bizId、scenario的字串拼接,value是該bean,

 

在運行時,通過業務身份定位擴展點實作類,然后執行擴展點實作的邏輯,定位擴展點實作的時候支持三層路由,首先會按照useCase+bizId+scenario找擴展點實作,如果沒有則按照useCase+bizId+scenario默認值查找,如果還未找到則根據useCase+bizId默認值+scenario默認值查找,具體原理如圖所示:

 

圖片

 

對于簡單的業務場景,對應用系統的高擴展性、業務隔離的非功能性要求并不多,但是隨著同一應用系統支撐的業務變多、業務場景變復雜,在架構層面需要提供統一的擴展解決方案,將變化的業務規則固化下來,這不僅有助于統一技術規范,還能減少硬編碼的IF-ELSE、策略模式等因開發人員水平不一致帶來的理解上復雜度、規范上的一致性,

 

通過擴展點機制,業務中臺就可以從業務身份和框架層面實作對不同的業務的管理像SAAS管理租戶一樣管理業務,不同業務身份在不同場景下對預定義的擴展點進行擴展,阿里巴巴的業務中臺也正是基于擴展點的思想,實作的核心業務邏輯和技術細節的分離和解耦,共享事業部才能對集團內幾百條業務線進行支撐的,

 

(3)服務編排+擴展點應用舉例

 

在驗證功能后對電商交易系統的的場景進行了分類,首先選取用戶感知度小、即使出問題也對用戶影響最小的節點進行重構試用,如未支付訂單超時關閉、用戶取消訂單,

 

以用戶取消訂單場景為例,在修改前各業務的用戶取消訂單的邏輯為修改訂單狀態為已取消狀態然后執行同一個流程,流程的執行順序為硬編碼,偽代碼如圖所示:

 

圖片

 

修改后根據各業務的特性的進行了精細編排,如二手車業務沒有使用優惠券的場景,那么就不需要再有這個環節;在積分這個通用能力上,擴展的是萬里通積分,偽代碼如圖所示:

 

圖片

 

旅行家業務線的的酒店、機票業務無傳統的商品庫存的概念,那么就不再需要還商品庫存的操作,而是抽象一個新的通用能力:取消供應商訂單,并預置了取消酒店供應商訂單的擴展以及取消機票供應商訂單2個擴展點,偽代碼如圖所示:

 

圖片

 

整個系統的應用效果明顯,主要體現在性能提升和人效提升,性能提升主要體現在系統的回應時間變短,在修改后取消訂單的介面的生產環境的TP99提升百分比約為30%,

 

人效提升方面主要體現在取消訂單增加新流程節點的測驗所用的時間對比,在修改前,各業務流程之間的代碼是耦合的,修改流程增加新節點需要對以前的各業務進行回歸測驗,修改后不需要進行各業務的回歸測驗,

 

3、業務配置化

 

在平臺化架構實踐中我們將那些影響業務流轉的核心配置統一提取出來,并按照業務身份進行屬性值的配置,確保整個交易流程鏈路的標準統一,減少對交易核心鏈路代碼的頻繁修改,不同業務根據不同的屬性值在相同的交易流程中的不同節點進行靈活切換,

 

比如:商品是否自動推送到資源池、下單是否需要填寫身份證、支付成功是否推送線索、超過N天未確認識訓是否自動確認識訓完成等等,所有配置項均通過配置管理后臺進行統一維護,

 

此外,對于電商中臺中包括業務身份在內的所有元資料,我們也通過配置管理后臺進行了統一的管理并提供統一的API對外提供查詢服務,

 

4、開發工具化

 

從業務和技術的多維度出發,針對日常作業中出現的常見業務問題或者技術問題,研發出各類實用便捷的小工具,實作作業效率的提升、問題的快速定位等效果,比如:訊息分發、檢索工具;商品優惠價格速算工具;商品展示價格比對監控工具;快取管理工具;一鍵降級工具等等,隨著大家工具化意識的不斷提升,這類小工具不斷的出現并匯集在一起,就構成了研發人員必不可少的工具箱,

 

5、資料可視化

 

電商系統的性能指標、資源利用率指標、呼叫量等系統維度的指標通過公司云平臺能夠實作統一的監控,對于業務資料同理,我們需要提供統一的業務資料可視化工具,為業務方提供做相關決策的參照依據,

 

為此,我們采用實時+離線的方式開發了訂單可視化大屏系統,通過這個系統能夠按照業務線、訂單狀態、區域等多個維度實時監控訂單量的變化情況,如果固定時間段內的訂單量波動超過了我們事先配置的閾值,還會發送釘釘訊息及時通知業務方關注,

 

圖片

 

此外,對于離線資料,我們也是按照日、周、月從多個維度進行資料統計分析,最侄訓以郵件和辦公APP訊息的形式發送給業務方,這些手段的目的都是為了實作電商資料的可視化管理,為業務使用方提供更多便捷的工具對電商業務進行全方位的管控,

 

圖片

 

 

圖片

 

6、知識沉淀

 

我所在的這個團隊在公司內部的電商領域是一個專業的團隊,多年來積累了很多技術以及產品運營層面的經驗,在整個電商中臺的建設程序中,我們也是將這些經驗以及日常問題的解決辦法,作為一種財富不斷的沉淀,以往都是采用wiki這種檔案管理工具進行匯總,

 

為了能夠讓這些知識產生價值,我們也開始搭建自己的電商知識庫系統,將所有能夠作為知識沉淀的內容,按照不同的領域分類錄入到知識庫系統內,整套知識庫對外提供了快速檢索和定位的功能,能夠服務于技術人員、產品運營人員,進一步培養大家知識積累的意識,提升大家的作業效率,

 

四、尾聲

 

二十年前,互聯網剛開始在中國流行,資訊都是通過資訊的方式展示,幾乎沒有在線交易;十年前,互聯網經過快速發展,消費者可以在淘寶、天貓、京東為代表的在線商城上購買自己需要或喜歡的商品進行在線交易;而如今各種電商形態不斷涌現,已成百花齊放的趨勢,比如內容電商小紅書、興趣電商抖音快手,社交電商微商、拼多多等,會員電商天貓88vip、京東plus等,這些在線交易形態充分證明了電商在互聯網領域流量變現的重要一環,已經成為互聯網企業基礎設施的水電煤,

 

電商中臺的建設不光是一個技術體系的搭建,也是一個組織結構重新塑造的程序,但是隨著時間的推移,中臺其價值的增長空間會愈發狹窄,這就需要有意識的尋找創新點,突破現有系統的邊界,跨界思考,于是我們也開始與前臺業務走的更近,積極開展對新業務探索和技術架構升級,

 

1、探索新零售

 

在過往探索汽車電商的業務模式,我們發現核心痛點在無法繞過4S店提供服務,近年來特斯拉和國內造車新勢力的異軍突起,新興的直銷模式一舉打破傳統車企4S經銷體系的生態;國內購車群體也日益年輕化讓我們看到了線上訂車+線下交付的新零售模式正在變成可能,

 

通過升級電商系統的現有能力,商品支持了SKU選配,訂單支持大小定金組合支付、退款,新增交付系統,為工業協會定制車業務、汽車新零售線下店的業務提供了業務支持,未來還會繼續打造業界對齊的新能源選配價格浮動模式以及商品可選配套的服務包模式,

 

2、架構升級

 

在原有的電商交易下單流程中,設計對外的服務都是顆粒度比較小的原子化服務,這就導致了業務方接入成本比較高,用戶體驗也不太好,未來我們將會通過增加BFF層、精簡呼叫鏈、電商接入腳手架等技術手段提升業務的產品力以及運營效率,

 

>>>>

參考資料

 

  • 【1】盤點:2010-2020年互聯網的十大戰役 

    http://www.knowledgeatwharton.com.cn/article/7795/

  • 【2】汽車之家:從“吸引眼球”向“電商平臺”拓展 

    http://www.knowledgeatwharton.com.cn/article/7795/

  • 【3】之家學宮:汽車電商商品系統構建實踐 

    https://atu.corpautohome.com/course/detail/?bs=list&id=130

  • 【4】之家學宮:百萬級汽車電商交易系統構建之路 

    https://atu.corpautohome.com/course/detail/?bs=list&id=122

  • 【5】之家技術:高可用紅包系統構建實戰 

    https://mp.weixin.qq.com/s/aEjpokspkkA861PHoNB6fw

  • 【6】之家技術:電商技術團隊云原生實踐 

    https://mp.weixin.qq.com/s/9U7OViprl7CjrsYnaNUXEA

  • 【7】之家技術:新車電商測驗資料自動化實踐 

    https://mp.weixin.qq.com/s/IfgRtG1TAEQ0NbwvlnKfEA

  • 【8】之家技術:電商秒殺系統的系統架構

    https://mp.weixin.qq.com/s/YpqoWmsbBUYF84wOU74_wA 

  • 【9】之家技術: 汽車之家發票總庫DDD實踐 

    https://mp.weixin.qq.com/s/8nSxM5lDOzexFBNErdbjWg

  • 【10】ThoughtWorks:現代企業架構白皮書 

    https://www.sohu.com/a/537498545_407401

  • 【11】美團:業務中臺之訂單平臺化建設實踐

    https://mp.weixin.qq.com/s/PhBUz0_OuCR6fEAcMh0Hyg

  • 【12】有贊:中臺如何助力標準化業務

    https://mp.weixin.qq.com/s/ELofl-1gffA3XeFGBBC2Pw

  • 【13】吳潤.基于API網關的微服務組合策略研究[J].數碼世界,2019(03):84-86.

  • 【14】辛園園,李俊暉,李陣.微服務組合方法研究進展[J].無線通信技術,2018,27(03):42-

  • 【15】楊光.Activiti作業流框架在OA系統中的應用[J].電子設計工程,2021,29(11):65-69.

  • 【16】Conductor官方網站. Conductor 官方檔案[EB/OL]. 

    https://netflix.github.io/conductor/.

  • 【17】Zeebe. Zeebe原始碼[EB/OL].

    https://github.com/camunda-cloud/zeebe

  • 【18】Apache Camel 官方網站. Apache Camel官方檔案

    [EB/OL].https://camel.apache.org/docs/.

  • 【19】Amaral C J ,  Bernardes S P , M Concei??o, et al. Finding new routes for integrating Multi-Agent Systems using Apache Camel.  2019.

  • 【20】COLA應用架構的最佳實踐  

    https://blog.csdn.net/significantfrank/article/details/110934799

 

作者丨方利

本文來自博客園,作者:古道輕風,轉載請注明原文鏈接:https://www.cnblogs.com/88223100/p/10-Years-of-System-Architecture-Evolution-and-Platform-Architecture-Practice-of-Autohome.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/553348.html

標籤:架構設計

上一篇:Redis記憶體兜底策略——記憶體淘汰及回識訓制

下一篇:返回列表

標籤雲
其他(159658) Python(38169) JavaScript(25450) Java(18123) C(15231) 區塊鏈(8268) C#(7972) AI(7469) 爪哇(7425) MySQL(7208) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4576) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1976) 功能(1967) Web開發(1951) HtmlCss(1944) C++(1922) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 汽車之家10年系統架構演進與平臺化架構實踐

    汽車之家電商系統誕生在2014年,成長于2016~2019年,并經歷多年雙11、818晚會的洪峰考驗,沉淀了穩定可靠、性能卓越的在線交易能力。隨著業務中臺的建設浪潮興起,2019年進入中臺化建設階段,輸出其在汽車電商領域五年沉淀的能力,助力汽車電商行業發展,加速企業數字化轉型! ......

    uj5u.com 2023-05-25 09:19:51 more
  • Redis記憶體兜底策略——記憶體淘汰及回識訓制

    # Redis記憶體兜底策略——記憶體淘汰及回識訓制 Redis記憶體淘汰及回收策略都是Redis**記憶體優化兜底**的策略,那它們是如何進行**兜底**的呢?先來說明一下什么是記憶體淘汰和記憶體回收策略: - Redis記憶體淘汰:當Redis的記憶體使用**超過配置**的限制時,根據一定的策略洗掉一些鍵,以* ......

    uj5u.com 2023-05-23 12:43:04 more
  • Redis記憶體兜底策略——記憶體淘汰及回識訓制

    # Redis記憶體兜底策略——記憶體淘汰及回識訓制 Redis記憶體淘汰及回收策略都是Redis**記憶體優化兜底**的策略,那它們是如何進行**兜底**的呢?先來說明一下什么是記憶體淘汰和記憶體回收策略: - Redis記憶體淘汰:當Redis的記憶體使用**超過配置**的限制時,根據一定的策略洗掉一些鍵,以* ......

    uj5u.com 2023-05-23 12:26:29 more
  • 觀察者模式(Observer Pattern)

    ## 一、模式動機 >觀察者模式用于描述物件之間的依賴關系,它引入了觀察者和觀察目標兩類不同的角色,由于提供了抽象層,它使得增加新的觀察者和觀察目標都很方便。觀察者模式廣泛應用于各種編程語言的事件處理模型中,Java語言也提供了對觀察者模式的全面支持。 - 一個物件的狀態或行為的變化將導致其他物件的 ......

    uj5u.com 2023-05-23 09:28:54 more
  • 迭代器模式(Interator Pattern)

    ## 一、模式動機 迭代器模式(Iterator Pattern)是一種使用頻率非常高的行為型設計模式,**迭代器**用于**對一個聚合物件進行遍歷**。通過**引入迭代器**可以**將資料的遍歷功能從聚合物件中分離出來**,**聚合物件只負責存盤資料**,而**遍歷資料由迭代器來完成**,簡化了聚 ......

    uj5u.com 2023-05-23 09:28:44 more
  • 【程式員日記】---從業務編排到低代碼

    之前總聊微服務,今天換一個話題---低代碼。低代碼這個詞也是最近這幾年很火的概念,尤其是遇到大環境下行,很多大廠和互聯網那個公司也在慢慢在低代碼方向發力,當然,對于傳統專案交付型的軟體公司,低代碼也具有相當大的吸引力。 ......

    uj5u.com 2023-05-23 09:28:37 more
  • 【實踐篇】領域驅動設計:DDD工程參考架構

    不同團隊落地DDD所采取的應用架構風格可能不同,并沒有統一的、標準的DDD工程架構。即使無法制定通用的、標準的工程應用架構,但為團隊制定一個遵循領域驅動設計思想的參考架構依然有價值。 ......

    uj5u.com 2023-05-23 09:28:32 more
  • 觀察者模式(Observer Pattern)

    ## 一、模式動機 >觀察者模式用于描述物件之間的依賴關系,它引入了觀察者和觀察目標兩類不同的角色,由于提供了抽象層,它使得增加新的觀察者和觀察目標都很方便。觀察者模式廣泛應用于各種編程語言的事件處理模型中,Java語言也提供了對觀察者模式的全面支持。 - 一個物件的狀態或行為的變化將導致其他物件的 ......

    uj5u.com 2023-05-23 09:28:15 more
  • 迭代器模式(Interator Pattern)

    ## 一、模式動機 迭代器模式(Iterator Pattern)是一種使用頻率非常高的行為型設計模式,**迭代器**用于**對一個聚合物件進行遍歷**。通過**引入迭代器**可以**將資料的遍歷功能從聚合物件中分離出來**,**聚合物件只負責存盤資料**,而**遍歷資料由迭代器來完成**,簡化了聚 ......

    uj5u.com 2023-05-23 09:22:58 more
  • 【程式員日記】---從業務編排到低代碼

    之前總聊微服務,今天換一個話題---低代碼。低代碼這個詞也是最近這幾年很火的概念,尤其是遇到大環境下行,很多大廠和互聯網那個公司也在慢慢在低代碼方向發力,當然,對于傳統專案交付型的軟體公司,低代碼也具有相當大的吸引力。 ......

    uj5u.com 2023-05-23 09:14:22 more