天天看點

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

在集團大資料、算法的背景下,貓客(天貓用戶端)首頁率先從2015年的坑位營運走向2016年的全面個性化,貓客首頁個性化業務點多達50多處,個性化場景大部分通過通過aladdin(天貓推薦)接入tpp(集團個性化平台)來實作的。走向個性化的同時也接入大量的第三方服務,例如:阿裡媽媽鑽展、新人禮包等。

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

2016老版本貓客首頁問題梳理

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

線上問題定位周期長:首頁用戶端同學+首頁服務端同學+阿拉丁+算法同學。定位參與同學過多,定位問下效率低下

個性化業務支援效率低:首頁用戶端同學+首頁服務端同學+阿拉丁+算法同學。參與同學過多、鍊路過長,對業務的快速支撐有影響

在走向個性化的同時也接入大量的第三方服務,例如流量寶、新人禮包、超品等,每次接入第三方業務服務,首頁服務端都需要做開發釋出,頻繁的釋出導緻首頁的穩定性變差。

2016老版本貓客首頁問題分析

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

從圖上看首頁服務端同學做大量的服務接入、字段轉換、埋點拼接等工作,對服務端同學成長并不利,價值不高

阿拉丁同學在這個鍊路主要做些tpp算法資料透傳的工作,對服務端開發的阿拉丁同學價值同樣不高

如果通過“服務端動态化技術方案”,把整個鍊路價值低環節去掉,讓端上同學直接對接業務&算法,這樣讓端上同學直接了解業務,同時有問題端上同學可以快速定位,同時對業務支援的鍊路也大大縮減。

把價值低的首頁服務端同學解放出來,去建設價值高“服務端動态化”平台。

2017新版貓客首頁業務架構

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

為了承接2017新的業務架構,貓客首頁研發的服務端動态化平台tac,後面我們主要介紹動态化平台tac。

tac

tangram app container

tac目标

低成本開發與釋出流程

低成本搭建與維護開發環境

高穩定性保障

動态化腳本語言選型

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

結論:在目前高并發,低延時,追求極緻使用者體驗的移動會聯網背景下,穩定性、性能對服務端來說至關重要,故容器化使用集團很多開發人員精通的java語言。對應目前貓客tangram,android開發人員可以完全勝任。

java語言動态釋出: 動态編譯、動态加載、熱部署

1. 動态編譯技術選型

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

結論:為了讓開發人員獲得的類編譯資訊、友善問題定位,同時結合集團服務端早普及jdk1.6且目前很多應用已更新1.8,故使用了standardjavafilemanager進行類的動态編譯。

2. 動态加載技術選型

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

結論:結合tomcat的類加載結構進行,以及類加載雙親委派模型,采用了通過多個classloader來實作類的動态加載

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

3. 類熱部署技術選型

java的熱部署一直是個比較難解決,無論asm,cglilb也隻能實作方法體的熱部署,對于整個類檔案的修改無法支撐

結合jvm的垃圾回收機制,采用了重新定義classloader,老的classloader又jvm自動回收,來實作類的熱部署

tac —架構1.0

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

tac包括兩部分:tac控制台、tac引擎

tac控制台:動态服務開發,測試,釋出的流程,類的動态編譯在該部分的“預釋出”階段。

tac引擎-協定層:主要是目前hsf支援的rmi和hessian,通過hsf向外提供服務。

tac引擎-core: 主要負責動态服務的加載和執行工作,已經一下安全,監控等職責。類的動态加載、熱部署在該部分承載。

tac引擎-資料池:主要承擔資料服務接入

tac流程和和相關流程節點的核心技術

1.tac控制台-申請階段

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

2. tac控制台-開發階段

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

3.tac控制台-預釋出階段

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

預釋出階段-類的動态編譯

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

4. tac控制台-開發調試

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

5. tac控制台-正式釋出(将觸發tac引擎-core做類的動态加載、熱部署)

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

6. tac引擎-core(類的動态加載、熱部署)

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

7. tac控制台-線上回歸

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

8. tac控制台-釋出結果

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

目前tac支援的業務,動态服務已達50+

目前tac已支撐支援天貓無線業務

貓客-首頁精選

貓客-品牌+

貓客-我的

貓客-全鍊路猜你喜歡

貓客-全鍊路商品資訊一緻性

貓客-商品說明書

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

tac 2.0 規劃

微服務獨立部署

微服務互相調用

tac混合雲部署

引擎core完全獨立

立體監控大盤

2017新首頁開發模式

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

2017新貓客首頁服務端技術架構圖-理想生活上天貓

架構師是如何煉成的?以天貓APP架構&開發模式更新工程為例

架構師的成長之路,永無止境。如果你對這套架構模式、解決方案,還有其他的想法和建議,也歡迎在文章底部留言,我們一起交流、學習。