欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

高并發(fā)業(yè)務(wù)接口開發(fā)思路(實(shí)戰(zhàn))-創(chuàng)新互聯(lián)


高并發(fā)業(yè)務(wù)除了需要有支撐高并發(fā)的服務(wù)器架構(gòu),還需要根據(jù)業(yè)務(wù)需求和架構(gòu)體系。
.
設(shè)計(jì)出合理的開發(fā)方案,這里根據(jù)一個(gè)實(shí)踐過業(yè)務(wù)場(chǎng)景分析開發(fā)思路,羅列出高并發(fā)接口需要注意的點(diǎn),以及設(shè)計(jì)上的巧思,共勉之,望共鳴

成都創(chuàng)新互聯(lián)公司主營富拉爾基網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),富拉爾基h5微信小程序開發(fā)搭建,富拉爾基網(wǎng)站營銷推廣歡迎富拉爾基等地區(qū)企業(yè)咨詢

.

業(yè)務(wù)場(chǎng)景

業(yè)務(wù):今日好貨
.
交互端:IOS/Andorid
.
需求點(diǎn):(實(shí)際業(yè)務(wù)會(huì)復(fù)雜些,為了容易理解,這里簡(jiǎn)化需求點(diǎn))
提供最新的好貨商品信息列表,支持分頁
.
需要時(shí)時(shí)獲取最新的商品數(shù)據(jù)列表,以下情況商品信息會(huì)發(fā)生變化
● 品數(shù)據(jù)字段更新(人為編輯,熱度字段更新,等)
● 不定時(shí)上新,在固定時(shí)段會(huì)有大量商品更新(目前 10點(diǎn)/20點(diǎn)上新量大)
● 商品在會(huì)在規(guī)律時(shí)間里重新排序(根據(jù):銷量,曝光量,點(diǎn)擊量 等計(jì)算排序)
.
商品加載過程中不能出現(xiàn)重復(fù)商品
.
客戶端和服務(wù)端需要考慮加載商品的交互體驗(yàn)
.
終極目標(biāo):
支持高并發(fā)下業(yè)務(wù)穩(wěn)定
.

設(shè)計(jì)思路

.

前提:

【商品服務(wù)API】:通過商品服務(wù)提供的API獲取商品數(shù)據(jù),當(dāng)商品有上新、字段更新、排序有更新時(shí),通過API都可以獲取到最新的數(shù)據(jù)(db查詢,支持獲取未來時(shí)間里的商品數(shù)據(jù))
.
緩存使用Redis

.

緩存更新分析:

● 商品數(shù)據(jù)緩存到Redis:支撐高并發(fā)的查詢業(yè)務(wù),數(shù)據(jù)需要進(jìn)行緩存
.
● 提供商品緩存刷新接口:商品顯示需要即時(shí)性,需要時(shí)時(shí)展示最新數(shù)據(jù),當(dāng)商品發(fā)生變化的時(shí)候,我們需要刷新商品緩存數(shù)據(jù)
.
● 支持未來時(shí)間緩存提前更新:為了更好支撐即時(shí)性,尤其在固定時(shí)段商品的大量上新,緩存更新會(huì)比較慢,所以我們需要提前備好未來時(shí)間的緩存數(shù)據(jù)
.
● 緩存刷新需要注意點(diǎn):緩存更新的過程中不能出現(xiàn)前臺(tái)無數(shù)據(jù)展示的情況
.
● 商品緩存支持版本號(hào)區(qū)分:每次緩存更新都要生成一個(gè)新的數(shù)據(jù)版本號(hào)緩存Key,數(shù)據(jù)存儲(chǔ)在對(duì)應(yīng)的緩存版本Key里
.
● 緩存版本Key存儲(chǔ)到列表 :列表可以用來篩選出當(dāng)前時(shí)間可以使用的最新版本號(hào)

.

商品緩存更新設(shè)計(jì):

接口參數(shù):updatetime【更新時(shí)間】(可空),默認(rèn)等于當(dāng)前時(shí)間,可以傳未來時(shí)間
.
每次刷新緩存都會(huì)生成新的數(shù)據(jù)版本號(hào)作為【商品緩存Key名】,將數(shù)據(jù)存到版本號(hào)對(duì)應(yīng)的緩存Key中,所以需要生成一個(gè)唯一字符串,這里我們把【更新時(shí)間】的時(shí)間戳作為緩存的Key名,為何這么設(shè)計(jì),后面會(huì)介紹到
.
首先請(qǐng)求【商品服務(wù)API】獲取【更新時(shí)間】對(duì)應(yīng)的商品數(shù)據(jù),接著對(duì)數(shù)據(jù)進(jìn)行字段處理、排序,最后把最終商品數(shù)據(jù)更新到【商品緩存Key名】的Redis SortedSet中
.
商品緩存成功后,把【商品緩存Key名】存到【版本號(hào)集合】Redis SortedSet中,同時(shí)把【更新時(shí)間】的時(shí)間戳作為排序的值
.
【商品緩存Key名】=【更新時(shí)間】的時(shí)間戳,這個(gè)設(shè)計(jì)的目的是可以支持未來時(shí)間版本數(shù)據(jù)的提前更新,并且可以通過SortedSet排序,過濾出當(dāng)前時(shí)間最新的版本號(hào)

.

緩存結(jié)構(gòu)圖

高并發(fā)業(yè)務(wù)接口開發(fā)思路(實(shí)戰(zhàn))

.

今日好貨API設(shè)計(jì):

接口參數(shù):version:數(shù)據(jù)版本號(hào)(可空),pageindex:頁碼
.
響應(yīng)JSON數(shù)據(jù):Datas:商品數(shù)據(jù)集合,CurrentVersion:當(dāng)前數(shù)據(jù)版本號(hào)
.
【當(dāng)前最新版本號(hào)】【版本號(hào)集合】通過SortedSet機(jī)制,獲取當(dāng)前時(shí)間能夠使用的數(shù)據(jù)版本號(hào),
如:取[當(dāng)前時(shí)間戳]-[(當(dāng)前時(shí)間-1h)時(shí)間戳]區(qū)間的版本號(hào),排序后獲取離當(dāng)前時(shí)間最近的版本號(hào)作為最新版本號(hào) <這里為何取區(qū)間,而不是直接取最新版本號(hào),會(huì)有個(gè)容錯(cuò)處理,后面會(huì)說到>
.
用戶在瀏覽商品的時(shí)候客戶端請(qǐng)求【今日好貨API】需要上傳版本號(hào)和頁數(shù),如果是第一次(pageindex=1,首頁),會(huì)獲取【當(dāng)前最新版本號(hào)】,然后返回最新商品數(shù)據(jù)
.
客戶端本地緩存首頁數(shù)據(jù)返回的版本號(hào),后續(xù)翻頁需要客戶端上報(bào)緩存的版本號(hào),API返回版本號(hào)對(duì)應(yīng)的商品分頁數(shù)據(jù),這樣設(shè)計(jì)的目的是當(dāng)用戶繼續(xù)加載后面頁數(shù)數(shù)據(jù)的時(shí)候不會(huì)出現(xiàn)重復(fù)的數(shù)據(jù)(數(shù)據(jù)會(huì)不定時(shí)更新,避免用戶加載到重復(fù)的數(shù)據(jù),如:商品A原來是第一頁數(shù)據(jù),數(shù)據(jù)更新后變成第二頁數(shù)據(jù))
.
當(dāng)請(qǐng)求首頁數(shù)據(jù),客戶端上報(bào)的版本號(hào)=【當(dāng)前最新版本號(hào)】,就不進(jìn)行數(shù)據(jù)緩存查詢,直接返回空數(shù)據(jù)(數(shù)據(jù)不變),客服端無需重新渲染商品列表,同時(shí)可以避免無限下拉刷新帶來的服務(wù)器壓力
.
如果version參數(shù)沒有上傳,獲取【當(dāng)前最新版本號(hào)】和當(dāng)前最新數(shù)據(jù)返回,數(shù)據(jù)版本號(hào)參數(shù)有上傳,就獲取對(duì)應(yīng)版本號(hào)的分頁數(shù)據(jù)

.

其他注意點(diǎn):

.
版本號(hào)無限累加
【版本號(hào)集合】隨著時(shí)間增長,版本號(hào)數(shù)據(jù)會(huì)不斷累加,需要在每次更新的時(shí)候刪除掉最近一天的版本,操作 SortedSet 過濾掉比(當(dāng)前時(shí)間-1天)的時(shí)間戳小的版本號(hào)
.
容錯(cuò)處理
獲取【當(dāng)前最新版本號(hào)】的時(shí)候,操作【版本號(hào)集合】集合,獲取最近一個(gè)小時(shí)的,即操作SortedSet[當(dāng)前時(shí)間戳]至[(當(dāng)前時(shí)間-1h)時(shí)間戳]范圍內(nèi)的版本號(hào),然后從大到小排序版本號(hào),過濾出版本號(hào),并且有版本號(hào)相對(duì)于的商品數(shù)據(jù),如果不存在商品數(shù)據(jù),就往下遍歷,直到有符合規(guī)則的版本號(hào)返回

.

雙11模式:

.
一級(jí)緩存
將商品數(shù)據(jù)短暫的緩存到站點(diǎn)服務(wù)區(qū)Cache中

.

降級(jí)方案:

.
● 資源監(jiān)控,自動(dòng)降級(jí)
● 開啟降級(jí)方案后,客服端會(huì)從cdn中拉取商品數(shù)據(jù)
● 商品分頁數(shù)據(jù)生成JSON數(shù)據(jù)文件存儲(chǔ)到cdn中
.


架構(gòu)圖

高并發(fā)業(yè)務(wù)接口開發(fā)思路(實(shí)戰(zhàn))

.

總結(jié)

以上舉例的高并發(fā)接口設(shè)計(jì)的實(shí)踐方案,有些設(shè)計(jì)可能比較針對(duì)此業(yè)務(wù)場(chǎng)景,但是思路是有共性的,重點(diǎn)在于理解設(shè)計(jì)上的思路
.
高并發(fā)接口的開發(fā)需要考慮因素:
● 接口性能
● 接口的穩(wěn)定
● 容錯(cuò)機(jī)制
● 服務(wù)端壓力:竟可能減少服務(wù)端壓力,可以與客戶端交互配合
● 服務(wù)降級(jí):資源高壓力的情況下進(jìn)行降級(jí)

.

有任何想說的請(qǐng)留言哦
轉(zhuǎn)載請(qǐng)申明原文地址,謝謝合作

.

感謝你的支持,我會(huì)繼續(xù)努力!~

高并發(fā)業(yè)務(wù)接口開發(fā)思路(實(shí)戰(zhàn))

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。

分享名稱:高并發(fā)業(yè)務(wù)接口開發(fā)思路(實(shí)戰(zhàn))-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://aaarwkj.com/article16/hoggg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)搜索引擎優(yōu)化網(wǎng)站內(nèi)鏈、網(wǎng)站改版、網(wǎng)站排名、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
中文字幕日韩有码在线| 在线观看高清欧美国产视频| 色综合婷婷九月中文字幕| av真人青青小草一区二区欧美| 午夜福利尤物一区二区| 人妻少妇久久久久久69| 亚洲永久免费在线观看| 91人妻成人精品一区二区| 亚洲精品丝袜成人偷拍| 中文字幕av不卡一区| 国产91九色蝌蚪在线观看| 国产情侣最新地址在线| 日本不卡的三区四区五区| 日本人妻久久中文字幕| 亚洲天堂av在线播放| 福利午夜福利在线观看| 亚洲一区二区三区色偷偷| 日本久久精品视频一区| 蜜臀在线免费观看黄片视频| 伊人丁香六月日日操操| 高级会所口爆视频在线播放视频| 男人自拍天堂在线观看| av基地蜜桃蜜桃蜜桃| 成人午夜激情四射av| 亚洲男人堂色偷偷一区| 日韩视频精品一区二区 | 中文字幕国产精品专区| 亚洲国产精品区一区二区| 欧美日韩精品视频专区| 日日摸夜夜添添出白浆| 亚州欧美精品一区二区| 高潮内射一区二区三区| 美女午夜福利精品视频| 日本在线一区二区中文| 成人深夜免费观看视频| 国产一区二区日本在线| 未满十八勿进黄网观看| 亚洲国产精品二区三区| 亚洲激情欧美激情在线| 国产亚洲欧美精品在线观看| 中字幕人妻一区二区三区|