當(dāng)前位置:首頁 > 公眾號(hào)精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]在閑魚主推商品流的業(yè)務(wù)場景中,商品中臺(tái)數(shù)據(jù)庫的抖動(dòng)會(huì)造成主推商品流的卡頓或者頁面顯示空窗現(xiàn)象,個(gè)性化算法中臺(tái)向量集群的擴(kuò)容也會(huì)造成推薦內(nèi)容延時(shí)被拖到非常長,后面還有可能依賴其他的業(yè)務(wù)中臺(tái),作為上層業(yè)務(wù)如何保證依賴的中臺(tái)越來越多的情況下,還能保證服務(wù)的穩(wěn)定性運(yùn)行呢?

背景

近幾年互聯(lián)網(wǎng)的快速發(fā)展中,互聯(lián)網(wǎng)業(yè)務(wù)發(fā)展越來越復(fù)雜,業(yè)務(wù)也被拆分得越來越細(xì),阿里內(nèi)部業(yè)務(wù)也發(fā)生著翻天覆地的變化,從最初的單體應(yīng)用,到后面的分布式集群,再到最近幾年大中臺(tái)小前臺(tái)的業(yè)務(wù)形態(tài),作為后端開發(fā),依賴的服務(wù)方越來越多,同時(shí)依賴服務(wù)方的故障因素也會(huì)越來越多的會(huì)影響到閑魚的上層業(yè)務(wù)的穩(wěn)定。
例如在閑魚主推商品流的業(yè)務(wù)場景中,商品中臺(tái)數(shù)據(jù)庫的抖動(dòng)會(huì)造成主推商品流的卡頓或者頁面顯示空窗現(xiàn)象,個(gè)性化算法中臺(tái)向量集群的擴(kuò)容也會(huì)造成推薦內(nèi)容延時(shí)被拖到非常長,后面還有可能依賴其他的業(yè)務(wù)中臺(tái),作為上層業(yè)務(wù)如何保證依賴的中臺(tái)越來越多的情況下,還能保證服務(wù)的穩(wěn)定性運(yùn)行呢?

業(yè)界主流溜一遍

根據(jù)日常解決問題的經(jīng)驗(yàn),不能直接解決業(yè)務(wù)問題本身,可以折中解決業(yè)務(wù)問題也是一個(gè)不錯(cuò)的辦法。上述業(yè)務(wù)問題中,當(dāng)業(yè)務(wù)出現(xiàn)問題的時(shí)候,可以折中提前置備好所需的業(yè)務(wù)數(shù)據(jù)返回給業(yè)務(wù),也是一個(gè)不錯(cuò)的辦法。在閑魚主推商品流的業(yè)務(wù)場景中,對可靠性要求非常高,因?yàn)橥扑]商品失敗,用戶看到推薦頁出現(xiàn)空窗,業(yè)務(wù)所需的數(shù)據(jù)量大概是5頁的推薦商品數(shù)據(jù)流,大概為3M左右。在實(shí)際解決問題中,筆者從業(yè)務(wù)所需的數(shù)據(jù)量級(jí)、可靠性要求級(jí)別等角度調(diào)研了業(yè)界一些通用解決辦法。
閑魚如何一招保證推薦流穩(wěn)如泰山?
為了給用戶良好的業(yè)務(wù)體驗(yàn),筆者主要使用服務(wù)端數(shù)據(jù)冗余、客戶端數(shù)據(jù)冗余、熔斷機(jī)制等方法,來確保用戶對閑魚App流暢的業(yè)務(wù)體驗(yàn)。筆者主要服務(wù)端數(shù)據(jù)冗余聊聊本地緩存,根據(jù)筆者在阿里斷網(wǎng)演練的經(jīng)驗(yàn),斷網(wǎng)演練時(shí),某個(gè)區(qū)域的所有服務(wù)不可用,所以筆者在技術(shù)選型的時(shí)候沒有考慮分布式緩存Redis,Memcache之類等。目前就業(yè)界本地緩存庫有Guava、Caffeine、Ehcache、Cache2K、ConcurrentHashMap、Varnish、JackRabbit等,筆者選取了幾個(gè)性能比較優(yōu)越的緩存庫比較,下面筆者從功能上、性能上、易用性、集群能力、可視化報(bào)表上等分別比較。 閑魚如何一招保證推薦流穩(wěn)如泰山?
筆者對照目前業(yè)務(wù)需求對比了上述四個(gè)組件,在定時(shí)失效策略能力上,除了ConcurrentHashMap都是使用定時(shí)失效能力,并且三個(gè)組件時(shí)間復(fù)雜度都是O(n)。在集群能力上,Ehcache依賴自身網(wǎng)絡(luò)協(xié)議 保證集群數(shù)據(jù)一致性,不能使用現(xiàn)有集團(tuán)內(nèi)部組件保證數(shù)據(jù)一致性。在本地緩存能力上, Caffeine的寫能力優(yōu)于Guava 。在組件通用性上,Guava組件更加通用。最終筆者選用了Guava組件作為本地緩存組件,因?yàn)镚uava 組件更加通用,并且很方便與 阿里內(nèi)部中間件集成配合使用。在集群數(shù)據(jù)同步能力,通過配置中心中間件實(shí)現(xiàn)數(shù)據(jù)同步,在可視化報(bào)表能力,通過定時(shí)任務(wù)打印日志,日志采集系統(tǒng)采集展示數(shù)據(jù)報(bào)表。接下來筆者介紹如何添加上述三種能力和優(yōu)化Guava本地緩存能力。

我的集群Cache組件

Guava Caching提供了定時(shí)失效、最后訪問失效、最后寫入失效策略等能力,筆者主要使用了定時(shí)失效能力,在首次寫入Key后,指定時(shí)間過后,該Key會(huì)失效,業(yè)務(wù)獲取該Key時(shí),會(huì)調(diào)用reload方法重新同步加載該Key。如果使用invalid方法使該Key無效,業(yè)務(wù)并發(fā)再次獲取該Key,多線程加載該Key時(shí),只有一個(gè)業(yè)務(wù)線程調(diào)用load方法加載該Key,其他線程等待該Key,加載完成后重新進(jìn)入指定時(shí)間后流程。筆者在原來Guava Cache本地緩存能力上結(jié)合Spring自動(dòng) 注入能力,進(jìn)行工程化,添加了業(yè)務(wù)所需的如下三種能力
  • 當(dāng)key失效,本地緩存reload異步加載

  • 失效本地緩存key,整個(gè)集群機(jī)器上key失效能力

  • 定時(shí)上報(bào)本機(jī)Cache內(nèi)各個(gè)Key在本地緩存大小

根據(jù)上述業(yè)務(wù)能力,整體流程圖如下所示 閑魚如何一招保證推薦流穩(wěn)如泰山?
集群本機(jī)Cache組件的整體結(jié)構(gòu)類圖如下:

閑魚如何一招保證推薦流穩(wěn)如泰山?


  • AbstractCacheLoader重寫父類CacheLoader的reload方法,添加異步加載能力

  • LocalCacheManager管理所有實(shí)現(xiàn)AbstractCacheConfig的子類,并上報(bào)各自本地緩存大小。

  • 實(shí)現(xiàn)AbstractCacheConfig的業(yè)務(wù)配置子類,例如CurrentCacheConfig等,調(diào)用invalidate方法時(shí),會(huì)通知集群本機(jī)Cache中Key消息。

業(yè)務(wù)同學(xué)在使用集群本機(jī)Cache組件時(shí),只需要繼承AbstractCacheConfig抽象類,聲明為Bean,即用集群本機(jī)Cache組件,業(yè)務(wù)同學(xué)無需關(guān)心集群環(huán)境問題等。相比Guava cache組件,提供了集群本機(jī)Cache Key失效能力,以及對Key集中管理和監(jiān)控,減少了單獨(dú)使用Guava cache帶來內(nèi)存無法管理的問題。
接下來筆者介紹使用集群本機(jī)Cache組件能力的典型案例:自動(dòng)置備兜底組件。

典型栗子:自動(dòng)置備兜底組件

兜底是在服務(wù)遇到外部依賴異常(超時(shí)、不可用、數(shù)據(jù)異常等),可能導(dǎo)致服務(wù)無可以返回的正常數(shù)據(jù)時(shí),服務(wù)通過使用兜底數(shù)據(jù)提供服務(wù)的一種降級(jí)行為。自動(dòng)置備兜底組件使用集群本機(jī)cache的本機(jī)緩存能力和集群失效能力,很方便完成兜底數(shù)據(jù)置備。在閑魚的業(yè)務(wù)場景中使用兜底置備組件的場景非常多,例如閑魚主推商品流等。
兜底自動(dòng)置備組件原理如下:

閑魚如何一招保證推薦流穩(wěn)如泰山?


  • 使用定時(shí)任務(wù)scheduleX2定時(shí)觸發(fā)服務(wù)集群中的一臺(tái)服務(wù)器,執(zhí)行兜底置備,更新tair緩存內(nèi)容,失效本地緩存,即失效集群server的本地緩存。

  • 當(dāng)業(yè)務(wù)請求獲取key時(shí),會(huì)獲取tair中最新內(nèi)容,并緩存到本地,再次請求,直接本地獲取。

詳細(xì)業(yè)務(wù)請求流程圖如下所示 閑魚如何一招保證推薦流穩(wěn)如泰山?
自動(dòng)兜底組件已經(jīng)在閑魚的多個(gè)業(yè)務(wù)場景得到使用,在斷網(wǎng)演練情況下,服務(wù)端RT延時(shí)和成功率有了明顯的提升,閑魚主要業(yè)務(wù)場景的提升效果如下:
閑魚如何一招保證推薦流穩(wěn)如泰山?

展望

在集群本機(jī)cache組件使用過程中也發(fā)現(xiàn)一些問題,例如有時(shí)候集群本機(jī)cache緩存錯(cuò)誤的配置,需要重啟集群或者等待key失效,所以需要集群本機(jī)cache組件web管理功能。在集群本機(jī)cache組件推廣中,發(fā)現(xiàn)有些業(yè)務(wù)場景的緩存key對應(yīng)的緩存對象比較大,或者緩存key的數(shù)量比較多,后期按照key使用頻率等級(jí),考慮對于長期不使用的key存儲(chǔ)到本機(jī)磁盤上,讓業(yè)務(wù)方不關(guān)心緩存Key過大可能造成的問題。


免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉