日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

京東詳情頁怎么做,京東詳情頁技術(shù)解密?

京東手機(jī)單品頁在每次大促時(shí)承載所有流量的入口 , 它被天然賦予的一個(gè)標(biāo)簽就是抗壓 , 對(duì)系統(tǒng)的穩(wěn)定性、性能方面要求極其苛刻 , 另外單品頁本身業(yè)務(wù)復(fù)雜度較高 , 單品頁有幾十種垂直流程業(yè)務(wù) , 并且展示上都要求個(gè)性化的單品頁 , 加上依賴有50+的基礎(chǔ)服務(wù) , 稍有抖動(dòng) , 對(duì)整體服務(wù)質(zhì)量都會(huì)有比較大的影響 , 因此之前大促也出現(xiàn)過各種問題 , 不斷打磨 , 持續(xù)優(yōu)化升級(jí) , 當(dāng)前系統(tǒng)架構(gòu)可支撐接近百萬的QPS瞬時(shí)訪問 , 并且今年雙11表現(xiàn)非常平穩(wěn) , 借此機(jī)會(huì)一塊和大家做一次分享 。
一、先聊聊APP接口開發(fā)的特點(diǎn)
1. 手機(jī)網(wǎng)絡(luò)、流量受限
手機(jī)單品頁提供給APP的API受限于運(yùn)營(yíng)商的網(wǎng)絡(luò) , 手機(jī)的信號(hào)時(shí)有時(shí)無、時(shí)好時(shí)壞極其不穩(wěn)定 , 為了減少客戶端和后端建連握手的過程 , 因此接口下發(fā)內(nèi)容大而全 , 涵蓋了頁面上的所有內(nèi)容 , 沒辦法像瀏覽器BS的結(jié)構(gòu)可以有大量的ajax請(qǐng)求;
API接口依賴了幾十個(gè)基礎(chǔ)服務(wù) , 任何接口的抖動(dòng)對(duì)整體接口性能影響很大 , 因此必須是并發(fā)請(qǐng)求依賴 , 減少接口抖動(dòng)疊加的影響;
單品頁有大量的圖片信息 , 商品主圖、插圖、推薦商品、手機(jī)配件商品、排行榜等等圖片信息量比較大 , 單個(gè)圖片的大小對(duì)手機(jī)流量影響較大 , 所有下發(fā)的圖片采用是webp格式 , 極大減少網(wǎng)絡(luò)傳輸流量 。
2. 手機(jī)不同分辨率、網(wǎng)絡(luò)環(huán)境、系統(tǒng)版本的適配
不同環(huán)境下用戶的體驗(yàn)存在差異 , 比如在弱網(wǎng)、低版本、分辨率差的手機(jī)會(huì)保持最基本的購物車流程 , 會(huì)減少一些增值的體驗(yàn);
圖片的展示尺寸也會(huì)根據(jù)網(wǎng)絡(luò)環(huán)境、分辨率大小進(jìn)行適配 。
3. APP版本兼容
新業(yè)務(wù)需求變更盡可能兼容老版本 , 但有些業(yè)務(wù)很難兼容老版本 , 因此系統(tǒng)里面存在很多版本適配的邏輯 , 增加了系統(tǒng)的復(fù)雜度;
【京東詳情頁怎么做,京東詳情頁技術(shù)解密?】客戶端如果出現(xiàn)重大bug并且沒辦法進(jìn)行hotfix的情況下 , 需要服務(wù)端針對(duì)特定版本進(jìn)行打補(bǔ)丁 , 也增加代碼復(fù)雜度以及后期的維護(hù)成本 。
因此APP的接口開發(fā)邏輯復(fù)雜度和后續(xù)的維護(hù)成本被放大很多 。
二、單品頁業(yè)務(wù)系統(tǒng)架構(gòu)
這是當(dāng)前單品頁系統(tǒng)的整體架構(gòu)圖 , 其他的核心交易流程 , 比如購物車、下單等也都基本類似 , 單品頁系統(tǒng)主要有三個(gè)進(jìn)程:OpenResty、Tracer-Collect、Tomcat , 以及包含幾個(gè)旁路系統(tǒng) 。OpenResty是nginx層的web容器 , 主要職責(zé)是做靜態(tài)化和限流防刷 , 只有經(jīng)過清洗過的流量才會(huì)流轉(zhuǎn)到tomcat的java進(jìn)程真正的業(yè)務(wù)處理 , Tracer-Collect進(jìn)程是通過旁路的方式異步埋點(diǎn)到統(tǒng)一的監(jiān)控平臺(tái) , 進(jìn)行實(shí)時(shí)的數(shù)據(jù)分析 。
三、核心技術(shù)點(diǎn)
1. OpenResty
這個(gè)是在今年618之前架構(gòu)上做的一個(gè)變化 , 主要有以下幾點(diǎn)考慮:
業(yè)務(wù)需要 , 業(yè)務(wù)流量到一定程度 , 需要把靜態(tài)化數(shù)據(jù)以及限流策略前置 , 更多把流量擋在前端 , 減少業(yè)務(wù)系統(tǒng)壓力;
ngx_openresty模塊有效地把Nginx 服務(wù)器轉(zhuǎn)變?yōu)橐粋€(gè)強(qiáng)大的 Web 應(yīng)用服務(wù)器 , 在其他0級(jí)系統(tǒng)中已經(jīng)很好驗(yàn)證了帶來的高可用、高并發(fā)的能力 。
使用規(guī)范上
Lua屬于腳本語言 , 開發(fā)相對(duì)java語言比較開放 , 比如方法可以返回多對(duì)象 , 這對(duì)長(zhǎng)期java開發(fā)人員就有很多不適應(yīng) , 在灰度過程中及時(shí)發(fā)現(xiàn)并進(jìn)行修復(fù) , 因此利用lua來滿足特殊需求外 , 不會(huì)進(jìn)行過多業(yè)務(wù)邏輯處理;

推薦閱讀