欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

架構(gòu)與思維:秒殺和競(jìng)拍的業(yè)務(wù)架構(gòu),永不過(guò)時(shí)的話(huà)題

freeflydom
2024年7月22日 10:44 本文熱度 993

1 互聯(lián)網(wǎng)架構(gòu)越來(lái)越復(fù)雜?

為啥感覺(jué)互聯(lián)網(wǎng)架構(gòu)越來(lái)越復(fù)雜了,早期我們的系統(tǒng),可能也就那么少部分人使用,大都是一些后臺(tái)管理系統(tǒng)。
所以不用考慮很多東西,比如:

  • 流量少,無(wú)需考慮并發(fā)問(wèn)題

  • 數(shù)據(jù)少,不用考慮什么索引優(yōu)化、分庫(kù)分表

  • 訪(fǎng)問(wèn)不集中,不用考慮緩存、過(guò)載保護(hù)

  • 如果數(shù)據(jù)不重要,不用考慮安全策略,甚至不用考慮容災(zāi)備份

  • 可重復(fù)提交,所以不用關(guān)系冪等性

  • 允許短暫宕機(jī)和定期關(guān)停維護(hù),所以不用考慮多活架構(gòu)

但是隨著互聯(lián)網(wǎng)的普及和用戶(hù)的激增,為了應(yīng)對(duì)流量增量帶來(lái)的各種問(wèn)題,我們的架構(gòu)體系衍生出很多強(qiáng)大的技術(shù)方案。

2 什么是秒殺/競(jìng)拍業(yè)務(wù)

秒殺業(yè)務(wù)也是隨著互聯(lián)網(wǎng)電商的發(fā)展而不斷普及的,我們來(lái)看看普通業(yè)務(wù)和秒殺業(yè)務(wù)的區(qū)別

2.1 普通的業(yè)務(wù)

  1. 微信的個(gè)人信息:個(gè)人的注冊(cè)信息,公眾號(hào)、視頻號(hào)的基礎(chǔ)信息,微信好友列表,微信群列表。這種是 1:1 的,一般也不會(huì)被別人看到。

  2. 微信朋友圈:你盆友圈公開(kāi)的內(nèi)容是可以被多個(gè)好友看到的,你也可以對(duì)應(yīng)看到你多個(gè)好友的盆友圈。這種是 1:n 的,多讀的一種場(chǎng)景。

2.2 秒殺/競(jìng)拍業(yè)務(wù)

只有少量的數(shù)據(jù),卻會(huì)在集中的時(shí)間段被一批人看到和搶購(gòu),集中式的高頻讀寫(xiě)。
業(yè)內(nèi)也稱(chēng)為 群蜂請(qǐng)求 ,你可以想象下你捅了馬蜂窩的場(chǎng)景。哈哈哈

典型秒殺/競(jìng)拍業(yè)務(wù)案例:

  1. 春運(yùn)前的火車(chē)票開(kāi)售那一刻,可能瞬間有千萬(wàn)級(jí)請(qǐng)求涌入

  2. 將來(lái)某個(gè)遙遙領(lǐng)先開(kāi)售,可能是一秒售罄

這些業(yè)務(wù)場(chǎng)景有如下技術(shù)難點(diǎn):

  1. 瞬時(shí)流量特別大,你的接入層、應(yīng)用層、數(shù)據(jù)層等能否扛得住

  2. 大量流量涌入 對(duì)一個(gè)數(shù)據(jù)進(jìn)行操作,怎么保證數(shù)據(jù)原子增減、順序公平性,怎么保證數(shù)據(jù)不超賣(mài)

  3. 如何 保證數(shù)據(jù)安全,如防攻擊、防刷數(shù)、保持冪等

  4. 如果使用 并發(fā)控制,如何保證不產(chǎn)生死鎖

所以,一個(gè)優(yōu)秀的秒殺業(yè)務(wù)架構(gòu),在現(xiàn)在的互聯(lián)網(wǎng)業(yè)務(wù)中,是一個(gè)永不過(guò)時(shí)的話(huà)題

3 如何優(yōu)化

這邊只針對(duì)幾個(gè)對(duì)秒殺業(yè)務(wù)有效改進(jìn)的點(diǎn)做展開(kāi),什么集群動(dòng)態(tài)擴(kuò)容、流量控制、彈性伸縮、智能限流啊,可以參考我的這篇文章《千萬(wàn)級(jí)流量沖擊下,如何保證極致性能》。

3.1 清除無(wú)效請(qǐng)求

盡量在前面就把一些無(wú)效請(qǐng)求給清理掉,所以這些操作Web前端 或者 App Client端做就行了,越前端越好,盡量不要傷害到服務(wù)端,比如:

  • 未登錄攔截

  • 重復(fù)提交攔截(未響應(yīng)則按鈕置灰,直至響應(yīng)或者5S超時(shí)才恢復(fù),冪等保證)

  • 頻繁提交攔截(單用戶(hù)一分鐘不超過(guò)100次,避免AI刷機(jī))

  • 驗(yàn)證碼攔截(避免AI刷數(shù)據(jù)、黑客攻擊等)

  • 參與條件攔截(可提前加載名單):如用戶(hù)等級(jí)不夠、注冊(cè)未滿(mǎn)3個(gè)月、用戶(hù)進(jìn)入黑名單等

3.2 服務(wù)端+緩存層做高效原子操作

公共數(shù)據(jù)做緩存
緩存是提升系統(tǒng)性能的重要手段。通過(guò)緩存熱點(diǎn)數(shù)據(jù),緩存還可以提高數(shù)據(jù)的訪(fǎng)問(wèn)速度,見(jiàn)很少對(duì)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)速度,提升用戶(hù)體驗(yàn)。Redis單機(jī)每秒10w沒(méi)什么問(wèn)題,再加上多集群多副本模式。

原子操作保證秒殺的計(jì)數(shù)
在Redis中,高效地進(jìn)行原子計(jì)數(shù)通常使用INCRINCRBYDECRDECRBY等命令。這些命令都是原子操作,意味著在執(zhí)行時(shí)不會(huì)被其他Redis命令打斷,從而保證了計(jì)數(shù)的準(zhǔn)確性和一致性。

# 計(jì)算已售賣(mài)1000臺(tái)庫(kù)里南

> INCRBY cullinan_counter 1000


# 獲取當(dāng)前售賣(mài)數(shù)量

> GET cullinan_counter

> 1000


# 超過(guò)1000,返回秒殺失敗

隊(duì)列保證請(qǐng)求有序進(jìn)入
使用Redis的 Stream 隊(duì)列功能。Stream 實(shí)際上是一個(gè) key,你可以使用 XADD 命令向其中添加消息。

XADD mystream * field1 value1 field2 value2

這里 mystream 是 Stream 的名稱(chēng),* 表示讓 Redis 自動(dòng)生成一個(gè)唯一的消息 ID。field1 value1 和 field2 value2 是消息的內(nèi)容,你可以根據(jù)需要添加任意數(shù)量的字段。
如果你只有1000臺(tái)庫(kù)里南供搶購(gòu),那么第1001就不要進(jìn)入隊(duì)列了。

擴(kuò)展閱讀
緩存可以擴(kuò)展閱讀作者的這個(gè)系列的文章:★ Redis24篇集合

3.3 數(shù)據(jù)層做終兜底

經(jīng)過(guò)上面的保證之后,到數(shù)據(jù)層的量就很少了,大概率就是你定額的商品數(shù)量同等的數(shù)量。
比如1000,數(shù)據(jù)庫(kù)絕對(duì)的扛得住的。
唯一可以做的就是檢查數(shù)量是否符合預(yù)期,這個(gè)可以創(chuàng)建約束或者觸發(fā)器來(lái)實(shí)現(xiàn)。

3.4 全球式業(yè)務(wù),單元化處理

有些人可能會(huì)說(shuō),我的商品全球售賣(mài),那我的緩存中心、數(shù)據(jù)中心放哪里,如果放中國(guó),那跨地域跨機(jī)房訪(fǎng)問(wèn),在0.1微妙都能決定我是不是買(mǎi)得到,歐洲的客戶(hù)鐵定搶不到庫(kù)里南了。
現(xiàn)在的做法一般是單元化隔離,比如:

A/B中心都有這樣的緩存或者數(shù)據(jù)結(jié)構(gòu),配置中心統(tǒng)一下發(fā)配置。然后在各自的單元里面玩耍,互不干預(yù)。 秒殺業(yè)務(wù)千萬(wàn)不要想著跨地域+跨機(jī)房,用戶(hù)存在不公平性。

4 寫(xiě)在最后

  1. 無(wú)效請(qǐng)求攔截,盡量在前端完成,避免走入后端,造成服務(wù)端壓力

  2. 緩存支持高性能檢索、原子計(jì)算和有序隊(duì)列

  3. 數(shù)據(jù)層做存儲(chǔ)兜底

  4. 分治原理:?jiǎn)卧綦x,避免集中處理



該文章在 2024/7/22 10:45:43 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved