国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

京東購物車如何提升30%性能

這篇具有很好參考價值的文章主要介紹了京東購物車如何提升30%性能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1、背景

京東購物車如何提升30%性能

購物車面臨的挑戰(zhàn):

1)新業(yè)務(wù):隨著業(yè)務(wù)形態(tài)的豐富,購物車在不斷支持各種新業(yè)務(wù),依賴的外部接口也隨之增加;

2)下沉:一些前端調(diào)用的接口下沉到購物車中臺;

3)前置:結(jié)算流程很多業(yè)務(wù)前置到購物車中,如優(yōu)惠券、京豆;

4)擴(kuò)容:為改善用戶體驗(yàn)購物車可容納的商品數(shù)量在不斷增長;

這些導(dǎo)致購物車依賴的RPC接口數(shù)量及分頁調(diào)用次數(shù)都在不斷增加。購物車作為交易流程開端,本身流量較大,在業(yè)務(wù)復(fù)雜化的背景下,如何提高性能保證用戶體驗(yàn),成為購物車面臨的較大挑戰(zhàn)。

2、全異步化改造方案

通過增加服務(wù)器資源雖然能在一定程度上解決問題,但會帶來較大的成本開銷,也與工匠精神相悖。能否通過技術(shù)手段提升性能呢?通過分析,異步化改造成為解決這一問題的有效手段。

1)不同RPC并行

購物車依賴接口達(dá)幾十個,各接口間存在復(fù)雜依賴關(guān)系。必須先梳理各接口間依賴,識別哪些可以并行。然后將原有代碼拆分為兩部分:RPC異步請求和結(jié)果處理,按照依賴關(guān)系,讓RPC最大限度并行執(zhí)行,減少在結(jié)果處理階段異步響應(yīng)等待時間,從而達(dá)到提升性能的目的。

京東購物車如何提升30%性能

2)批量接口多分頁并行

購物車依賴接口多為批量接口,且單次調(diào)用有數(shù)據(jù)量限制,需將數(shù)據(jù)拆分為多個分頁調(diào)用。那么多個分頁間也可以并行,改造中封裝了異步分頁工具,使業(yè)務(wù)層對分頁邏輯無感知,異步工具自動將超過接口上限的數(shù)據(jù)拆分為多個分頁并行調(diào)用,提升單接口響應(yīng)速度。

3)底層采用JSF異步調(diào)用

異步調(diào)用基于京東RPC框架JSF,推薦使用1.7.5以后版本,支持CompletableFuture。

3、問題及解決

異步化改造的總體方案并不復(fù)雜,但是在實(shí)際落地過程中,遇到了很多細(xì)節(jié)問題:

1)異常重試需精細(xì)化

同步調(diào)用時,如果超時會重新調(diào)用。改為異步后重試會失效,因?yàn)樵谡{(diào)用時一般不會報錯,需要在結(jié)果處理階段獲取異步響應(yīng)超時后,再進(jìn)行重試。

另外,多分頁并行時,當(dāng)某一頁請求超時后,應(yīng)該只重試出錯的分頁。底層對分頁調(diào)用進(jìn)行了封裝,上層業(yè)務(wù)代碼在獲取數(shù)據(jù)時無法感知是哪一頁超時,所以必須在異步調(diào)用時將現(xiàn)場信息保存在包裝類中,一起返回給業(yè)務(wù)層,在Get數(shù)據(jù)超時后,單獨(dú)重試出錯的分頁。

發(fā)生異常時,并不是所有情況都需要重試,當(dāng)遇到限流等異常時,不能進(jìn)行重試。底層工具需要自動過濾限流異常,當(dāng)然也支持自定義規(guī)則。

2)異步RPC監(jiān)控更復(fù)雜

底層RPC耗時監(jiān)控需要拆分為兩部分,在分頁調(diào)用時記為開始時間,在異步結(jié)果到達(dá)后,記為結(jié)束時間。如果調(diào)用異?;騁et超時,需要標(biāo)記本次調(diào)用失敗。對于重試同樣需要記錄調(diào)用耗時,且正常調(diào)用與重試調(diào)用需分開記錄。

除了需要監(jiān)控RPC耗時外,還需要監(jiān)控結(jié)果處理階段Get等待時長,這個時間才是真正對應(yīng)用性能有影響的時間。由于底層是分頁調(diào)用,所以業(yè)務(wù)調(diào)用次數(shù)和底層RPC調(diào)用次數(shù)并不相同。

3)分頁異步結(jié)果不能合并,否則無法獲取異常Provider信息

底層異步調(diào)用結(jié)果,必須通過包裝類原樣返回給上層,除了上邊提到的需要單分頁重試外,另一個原因是必須保留異步結(jié)果,在分頁超時后才能輸出超時的Provider信息。這是由于Provider信息依賴JSF框架的JSFCompletableFuture,如果在底層合并結(jié)果,會導(dǎo)致信息丟失。

4)每頁超時時間需單獨(dú)控制

京東購物車如何提升30%性能

分頁調(diào)用過程如上圖所示,在結(jié)果處理時,每頁Get超時時間需要單獨(dú)控制,因?yàn)楂@取結(jié)果是順序進(jìn)行,獲取后邊的分頁時,前邊分頁等待的時間也應(yīng)計算在內(nèi),以保證整個獲取結(jié)果的時間不超過單個分頁的最大超時時間。計算公式如下:

超時=RPC超時時間 > (當(dāng)前時間-異步調(diào)用開始時間) ? RPC超時時間 – (當(dāng)前時間-異步調(diào)用開始時間) : 0

5)分頁均衡

為避免最后一頁數(shù)據(jù)過少造成數(shù)據(jù)傾斜,需要將請求數(shù)據(jù)均分到每一頁,以最大限度提高整個請求的性能。

4、收益

改造完成后購物車核心接口耗時減少30%,保證用戶體驗(yàn),節(jié)省大量服務(wù)器資源。后續(xù)增加新的RPC接口時,只要處在調(diào)用拓?fù)涞姆顷P(guān)鍵路徑上,對購物車性能沒有太大影響。另外,容量增加時除少數(shù)不能分頁調(diào)用的接口外,對性能影響已經(jīng)比較小。

京東購物車如何提升30%性能

作者:京東零售 王利輝 梁奉龍

內(nèi)容來源:京東云開發(fā)者社區(qū)文章來源地址http://www.zghlxwxcb.cn/news/detail-455845.html

到了這里,關(guān)于京東購物車如何提升30%性能的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Vue項(xiàng)目商品購物車前端本地緩存邏輯(適用H5/ipad/PC端)——前端實(shí)現(xiàn)購物車刪除商品、購物車增減數(shù)量,清空購物車功能

    Vue項(xiàng)目商品購物車前端本地緩存邏輯(適用H5/ipad/PC端)——前端實(shí)現(xiàn)購物車刪除商品、購物車增減數(shù)量,清空購物車功能

    Vue3 + Vite + Ts開源后臺管理系統(tǒng)模板 基于ElementUi或AntdUI再次封裝基礎(chǔ)組件文檔 基于Element-plus再次封裝基礎(chǔ)組件文檔(vue3+ts)

    2024年02月12日
    瀏覽(31)
  • Android商城開發(fā)----點(diǎn)擊加入購物車,購物車商品的增刪減

    Android商城開發(fā)----點(diǎn)擊加入購物車,購物車商品的增刪減

    上一章節(jié):【分類頁面】點(diǎn)擊左側(cè)類別,實(shí)現(xiàn)右側(cè)對應(yīng)類別商品的展示 本文是在上一章節(jié)基礎(chǔ)上開發(fā)的,點(diǎn)擊【分類】頁面商品的加入購物車按鈕,實(shí)現(xiàn)將商品加入購物車的功能。 本文主要實(shí)現(xiàn)的功能是: 1.點(diǎn)擊加入購物車按鈕,將商品加入購物車。 2.點(diǎn)擊相同的商品加入

    2024年02月03日
    瀏覽(32)
  • JavaWeb購物系統(tǒng)(五)購物車模塊的實(shí)現(xiàn)

    JavaWeb購物系統(tǒng)(五)購物車模塊的實(shí)現(xiàn)

    未添加商品效果圖 添加商品之后的效果圖 添加商品 購物車中商品的數(shù)量增加、減少、通過鍵盤輸入改變數(shù)量 清空購物車 計算購物車商品的總價格 我們的購物車采用的是在服務(wù)端,即:使用session來存儲。這樣做的 缺點(diǎn) :無法永久存儲,當(dāng)服務(wù)端關(guān)閉的時候,會銷毀。 優(yōu)點(diǎn)

    2024年02月07日
    瀏覽(28)
  • JavaWeb購物系統(tǒng)(六)購物車訂單模塊的實(shí)現(xiàn)

    JavaWeb購物系統(tǒng)(六)購物車訂單模塊的實(shí)現(xiàn)

    有訂單時的效果圖 無訂單時的效果圖 訂單詳情頁 生成訂單 訂單頁的展示 查看訂單詳情 和購物車同樣的,首先得知道我們的訂單對應(yīng)的哪個實(shí)體對象。一個用戶可能有多條訂單記錄,一個訂單里邊可以包含多個 商品(也可以理解為多個購物項(xiàng)) 。理清這個邏輯之后,我們

    2024年02月05日
    瀏覽(20)
  • JavaWeb 購物車項(xiàng)目

    JavaWeb 購物車項(xiàng)目

    今天是基于我們所學(xué)的服務(wù)器存儲端和三層架構(gòu)來完善該項(xiàng)目,今天先完善一部分的功能。 ? 1.登錄 先創(chuàng)建一個用戶表,表中有id,name,pwd三個屬性首。 需要具備一個登錄頁面,一個處理登錄數(shù)據(jù)的頁面,在該頁面進(jìn)行判斷,當(dāng)該用戶存在,我們跳轉(zhuǎn)到商城,用戶不存在回到登

    2024年02月07日
    瀏覽(27)
  • JavaWeb購物車項(xiàng)目

    JavaWeb購物車項(xiàng)目

    目錄 項(xiàng)目前提 數(shù)據(jù)庫的創(chuàng)建 用戶表 商品表 eclipse進(jìn)行創(chuàng)建包和類: 主要實(shí)現(xiàn)功能 1、購物車用戶登錄 2、商品顯示 3、購物車添加商品總數(shù)和價格的計算 1、購物車并不是一直放數(shù)據(jù)庫 2、選擇使用的技術(shù): session:(購物車項(xiàng)目使用session) 好處:快(放在內(nèi)存當(dāng)中),存對象的

    2024年02月05日
    瀏覽(33)
  • js實(shí)現(xiàn)購物車

    ### 嘎嘎原生,看就完了 ### # # html部分 ### css部分 ### js部分

    2024年01月21日
    瀏覽(28)
  • Html購物車

    Html購物車

    目錄 一.登陸界面 二.注冊界面 三.購物車界面 ?我的登陸界面用正則判斷,昵稱輸入框的輸入要求時3到6個大寫或小寫字母, placeholder時信息提示 ,它在輸入框中顯示,當(dāng)你在輸入框中輸入值時,就會消失 ?我寫了非空判斷,在沒有輸入值就點(diǎn)擊登陸時,就會彈出提示框(

    2024年02月08日
    瀏覽(22)
  • 購物車程序?qū)崿F(xiàn)教程

    購物車程序?qū)崿F(xiàn)教程

    在本教程中,我們將實(shí)現(xiàn)一個購物車程序,實(shí)現(xiàn)在界面中以列表的形式顯示購物車的商品信息。商品信息包含商品名稱,價格和數(shù)量,并能實(shí)現(xiàn)對應(yīng)的增刪改查操作。我們將使用 Android Studio 和 SQLite 數(shù)據(jù)庫來完成這個任務(wù)。 我們的購物車程序由以下四個主要類組成: MainAct

    2024年02月04日
    瀏覽(20)
  • Android -- 購物車

    Android -- 購物車

    購物車功能描述 ????????第一次進(jìn)入購物車頁面,購物車?yán)锩媸强盏?,同時提示去逛手機(jī)商場, 如 首次進(jìn)入的頁面 圖所示。接著去商場頁面選購手機(jī),隨便挑了幾部手機(jī)加入購物車,再返回購物車頁面,即可看 到購物車的商品列表,如 購物車已選列表圖 所示,有商品

    2023年04月08日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包