Skip to content

Latest commit

 

History

History
283 lines (223 loc) · 26.5 KB

File metadata and controls

283 lines (223 loc) · 26.5 KB

电商平台 架构暡板

代衚产品:Amazon、Shopify、淘宝、各类圚线零售䞎亀易平台 䞀句话定䜍:圚海量并发䞋,让「钱莧䞀枅」这件事绝䞍出错,还芁扛埗䜏倧促那䞀波措峰。


1. 䞀句话定䜍

䞀䞪电商平台 = 䞀台「读倚写少、读可凑合、写必须分毫䞍差」的亀易机噚 + 䞀套䞓闚甚来扛倧促措峰的削峰装眮。

架构䞊最反盎觉的䞀点:它和普通眑站最倧的䞍同,䞍是页面倚,而是这里同时存圚䞀种截然盞反的数据。逛商品、看掚荐、读评价——这些是海量的读,慢䞀点、旧䞀点郜没人远究;䜆扣库存、䞋订单、付钱——这些写䞀旊错了,就是少卖了钱、超卖了莧、重倍扣了欟,是芁赔钱、芁打官叞的。敎套架构的栞心呜题,就是**「把这䞀种数据甚完党䞍同的区床去对埅」**:对钱和库存锱铢必蟃,对浏览和掚荐眑匀䞀面。

2. 䞚务本莚:它圚解决什么问题

平台芁做的事,诎癜了就䞀句:让买家胜攟心地把钱亀出来、让卖家胜准确地把莧发出去,䞭闎䞀分钱、䞀件莧郜䞍胜错。

它的䞚务现实垊来䞉条铁埋:

  • 钱莧必须䞀枅,䞔胜对莊:甚户付了钱就必须有莧、有订单;平台收了钱就必须胜和支付方对埗䞊莊。这里没有「最终倧抂䞀臎」的䜙地。
  • 库存是有限的、䌚争抢的:最后䞀件商品䞍胜同时卖给䞀䞪人(超卖),吊则就是必然的客诉和赔付。
  • 流量极䞍均匀,倧促是垞态:平时风平浪静,䞀到倧促/秒杀,瞬时流量可以涚几十䞊癟倍,系统芁么扛䜏、芁么厩盘䞊新闻。

关键事实:圚电商里,「读错了」甚户骂䞀句,「写错了」平台真金癜银地赔。 这䞀条决定了后面几乎所有架构取舍——尀其是「䞺什么䞍胜甚䞀䞪倧事务把敎䞪䞋单流皋䞲起来」。

3. 栞心需求䞎纊束

把需求拆成䞀类。区分「功胜」和「莚量」是架构垈的第䞀基本功。

功胜性需求(系统芁胜做什么):

  • 浏览䞎搜玢:逛商品目圕、搜关键词、看掚荐和评价。
  • 莭物蜊:加莭、改数量、结算。
  • 䞋单:校验、扣库存、生成订单。
  • 支付:发起支付、确讀收欟、倱莥回滚。
  • 库存管理:扣减、回补、防超卖。
  • 履纊/物流:发莧、跟螪、筟收。
  • 价栌䞎促销:定价、䌘惠刞、满减、秒杀价。
  • 甚户䞎莊户:登圕、地址、订单历史。

非功胜性需求 / 莚量属性(这才是架构的䞻战场):

莚量属性 目标 䞺什么对这类系统重芁
资金区䞀臎 100% 正确、可对莊 钱算错䞀分郜是事故;支付䞎莊务必须经埗起逐笔栞对。
库存正确性 绝䞍超卖 卖出去发䞍出莧,是必然的客诉和赔偿。
浏览延迟 商品/搜玢页快速返回 逛埗䞍顺手,甚户盎接关页走人,蜬化率䞋降。
峰倌吞吐 扛䜏倧促数十倍措峰 倧促圓倩厩了,是盎接的销售损倱和品牌事故。
可甚性 栞心亀易铟路高可甚 䞋单付欟挂了,等于停䞚。

关键纊束(䞍可速越的蟹界):

  • 🔎 䞍同数据芁甚䞍同区床的䞀臎性。这是倎号讟计原则:钱和库存芁区䞀臎,浏览和掚荐可以最终䞀臎。混䞺䞀谈,芁么慢死,芁么出错。
  • 🔎 库存的「最后䞀件」是倩然的争抢点。热点商品的单行库存䌚被无数请求同时抢,这是绕䞍匀的物理瓶颈。
  • 🔎 倧促措峰䞍可预测又极端,系统必须胜削峰、胜限流、胜降级,而䞍是硬扛到厩。
  • 🔎 䞀切涉及钱的操䜜必须幂等:眑络䌚重试、甚户䌚狂点按钮,绝䞍胜因歀重倍䞋单、重倍扣欟。

4. 架构党景囟

                                   甚户(Web / App)
                                        │
                          ┌─────────────▌─────────────┐
                          │   接入层:眑关 / CDN        │  鉎权、限流、削峰、降级
                          └─────────────┬─────────────┘
                                        │
         ┌──────────────── 读路埄(读倚,重猓存)─┮─ 写路埄(写少,芁区䞀臎)──────────┐
         │                                                                          │
         ▌                                                                          ▌
┌────────────────┐  ┌──────────┐  ┌──────────┐                          ┌────────────────────┐
│  商品目圕服务    │  │  搜玢     │  │  掚荐     │                          │     莭物蜊服务       │
│ (海量读,猓存)  │  │ (䞓甚匕擎)│  │ (最终䞀臎)│                          └─────────┬──────────┘
└───────┬────────┘  └──────────┘  └──────────┘                                    │ 结算
        │ 倚级猓存                                                                 â–Œ
        â–Œ                                                          ┌──────────────────────────┐
┌────────────────┐                                                 │  䞋单猖排(Saga 协调者)    │
│  内存级 KV 猓存  │  ◀── 猓存预热                                    │  䞀步步掚进,倱莥按步回滚    │
└────────────────┘                                                 └───┬────────┬─────────┬───┘
                                                                       │        │         │
                          ┌──── 削峰填谷:匂步䞋单队列 ─────────────────┘        │         │
                          │                                                     â–Œ         â–Œ
                          â–Œ                                          ┌──────────┐  ┌──────────┐
                  ┌──────────────┐      ┌──────────────┐             │ 订单服务  │  │ 支付服务  │
                  │  库存服务      │      │  ä»·æ Œ/促销     │             │(状态机)  │  │(区䞀臎)  │
                  │ 防超卖/分段库存│      └──────────────┘             └────┬─────┘  └────┬─────┘
                  └──────────────┘                                        │             │
                                                                          ▌             ▌
                                                          ┌──────────────────┐  ┌──────────────┐
                                                          │   履纊 / 物流      │  │  对莊系统      │
                                                          │ (发莧、跟螪)      │  │ (逐笔栞对)    │
                                                          └──────────────────┘  └──────────────┘

灵魂郚件是右䟧那条写路埄:䞋单猖排 → 库存 → 订单 → 支付。巊蟹的浏览/搜玢/掚荐再倧,本莚郜是「读」,可以靠猓存暪向堆机噚解决;真正隟、真正䞍胜错的,是这条又芁正确、又芁扛措峰的亀易铟路。

5. 组件职莣

逐䞪诎明䞊囟里每䞪关键郚件做什么 + 䞺什么需芁它(没有「䞺什么」的郚件就是过床讟计)。

  • 接入层(眑关 / CDN):鉎权、限流、把静态资源和囟片掚到蟹猘,倧促时承担削峰和降级的第䞀道闞。䞺什么需芁:措峰必须圚最倖层就被敎圢和拊截,别让它盎接砞到栞心服务。
  • 商品目圕服务:管理商品信息,读极倚、写极少,靠倚级猓存扛量。䞺什么需芁:逛商品是流量最倧的入口,必须甚猓存把数据库技圚后面。
  • 搜玢:甚䞓甚的搜玢系统支持关键词、筛选、排序。䞺什么需芁:商品搜玢是「按内容扟」,这是通甚数据库做䞍奜的,需芁䞓闚的倒排玢匕胜力。
  • 掚荐:基于行䞺算「䜠可胜想买」,可以最终䞀臎、可以略旧。䞺什么需芁:提升蜬化,䜆它本莚是「锊䞊添花」,慢䞀点、旧䞀点䞍圱响钱莧。
  • 莭物蜊服务:暂存甚户想买的䞜西,盎到结算。䞺什么需芁:加莭到䞋单之闎有时闎差,需芁䞀䞪蜻量、可快速读写的暂存区。
  • 䞋单猖排(Saga 协调者):把「扣库存 → 创建订单 → 调支付 → 确讀/回滚」这䞀䞲步骀按顺序掚进,任䞀步倱莥就按盞反顺序补偿回滚。䞺什么需芁:䞋单跚倚䞪服务,又䞍胜甚䞀䞪倧事务锁䜏党郚(倪重、扛䞍䜏量),所以甚 Saga 把它拆成「可逐步掚进、可逐步回滚」的长流皋。
  • 库存服务:扣减、回补库存,死守䞍超卖;对热点商品甚分段库存或排队化解争抢。䞺什么需芁:库存是钱莧䞀枅的物理前提,超卖盎接等于赔付。
  • 订单服务:绎技订单的状态机(埅支付 → 已支付 → 已发莧 → 已完成 / 已取消 / 已退欟),保证状态只胜合法流蜬。䞺什么需芁:订单是亀易的「事实凭证」,它的每䞀次状态变化郜芁可远溯、䞍可乱跳。
  • 支付服务:对接资金,区䞀臎 + 幂等,确保「钱只扣䞀次、䞔和订单对埗䞊」。䞺什么需芁:这是敎条铟路䞊最䞍胜错的环节,任䜕重倍或䞢倱郜是资损。
  • ä»·æ Œ / 促销:计算最终成亀价(原价、䌘惠刞、满减、秒杀价)。䞺什么需芁:价栌涉及钱,䞔促销规则倚变,需芁集䞭、可审计地算。
  • 履纊 / 物流:订单确讀后安排发莧、提䟛物流跟螪。䞺什么需芁:把「线䞊成亀」萜地成「线䞋到莧」,䞔这郚分倩然是匂步的。
  • 对莊系统:逐笔栞对订单、支付、莊务,发现并修倍䞍䞀臎。䞺什么需芁:既然亀易铟路甚了「最终䞀臎」(Saga),就必须有䞀套兜底机制来保证最终真的䞀臎——对莊是资金安党的最后防线。

6. 关键数据流

挑 3 䞪最胜䜓现这䞪系统特点的场景。

场景䞀:浏览到加莭(读倚、重猓存的路埄)

1. 甚户逛銖页/类目 ──▶ 眑关 ──▶ 商品目圕服务
2. 先查【内存级 KV 猓存】── 呜䞭 ──▶ 盎接返回(绝倧倚数请求走这里)
                        └ 未呜䞭 ─▶ 回源数据库 ─▶ 结果写回猓存 ─▶ 返回
3. 搜玢关键词 ──▶ 䞓甚搜玢匕擎(倒排玢匕)返回结果
4. 页面䞊的「猜䜠喜欢」──▶ 掚荐服务(数据可略旧,最终䞀臎即可)
5. 甚户点「加入莭物蜊」──▶ 莭物蜊服务暂存

泚意:这䞀敎条路埄几乎䞍碰栞心数据库的写,党靠猓存和䞓甚匕擎扛量。逛埗越倚,猓存价倌越倧。这是「读可凑合」的䜓现——数据旧几秒、掚荐䞍那么准,郜无所谓。

场景二:䞋单(写路埄,Saga 䞀步步掚进、倱莥就回滚)

甚户点「提亀订单」──▶ 䞋单猖排(Saga 协调者)启劚:

  步骀① 扣库存 ──▶ 库存服务:预扣成功?
        ├─ 倱莥(没莧了)──▶ 盎接结束,告诉甚户「已售眄」
        └─ 成功 ─▶ 继续
  步骀② 创建订单 ──▶ 订单服务:生成订单,状态=「埅支付」
        └─ 倱莥 ─▶ 补偿:回补步骀①扣掉的库存 ──▶ 结束
  步骀③ 调支付 ──▶ 支付服务:发起扣欟(幂等,垊唯䞀䞋单号)
        ├─ 成功 ─▶ 订单状态→「已支付」,预扣库存蜬䞺正匏扣减 ──▶ 觊发履纊
        └─ 倱莥/超时 ─▶ 补偿:订单→「已取消」,回补库存 ──▶ 结束

  ★ 每䞀步郜可独立重试;倱莥时按【盞反顺序】补偿。党皋没有䞀䞪暪跚所有服务的倧事务。

架构芁点:甚「可补偿的长流皋(Saga)」替代「䞀䞪倧分垃匏事务」。 倧事务䌚长时闎锁䜏库存、订单、支付,圚高并发䞋盎接把系统拖垮;Saga 把它拆成「每步快进快出、错了再退回」,甚最终䞀臎 + 对莊换来了吞吐。

场景䞉:倧促秒杀(削峰填谷 + 排队 + 限流)

癟䞇人同时抢 1000 ä»¶ ──▶ 眑关【限流】:倧郚分请求圚闚口就被挡掉/排号
        │ 攟进来的请求
        ▌
  匂步䞋单队列(削峰填谷)──▶ 把瞬时措峰摊平成系统胜消化的皳定速率
        │ 逐䞪出队
        ▌
  库存服务:对这件热点商品做【分段库存 / 排队扣减】,把单行争抢打散
        │ 抢到的
        ▌
  正垞走 Saga 䞋单流皋;没抢到的 ──▶ 立刻返回「已抢光」(快速倱莥,别让它干等)

架构芁点:措峰䞍芁硬扛,芁「敎圢」。 限流圚闚口拊、队列圚䞭闎摊平、分段库存圚底层散热、降级圚厩溃前䞢蜊保垅——四件套合力,把「几十倍的尖峰」变成「系统胜皳皳消化的氎流」。

7. 数据暡型䞎存傚选择

栞心实䜓:商品 ─ 库存(SKU 绎床);甚户 ─ 莭物蜊 ─ 订单 ─ 订单项;订单 ─ 支付单;促销/价栌规则。其䞭订单垊状态机,支付单和莊务流氎是资金对莊的䟝据。

数据 存傚类型 䞺什么
订单 / 支付 / 莊务流氎 关系型(区事务) 涉及钱,芁区䞀臎、芁事务、芁胜逐笔对莊
库存(可扣减计数) 支持原子扣减的区䞀臎存傚 防超卖靠原子操䜜;热点项再做分段
商品目圕(海量读) 关系型䞺底 + 内存级 KV 猓存 读极倚写极少,猓存挡䜏绝倧郚分读
搜玢玢匕 䞓甚搜玢系统(倒排玢匕) 「按内容扟」是通甚数据库做䞍奜的
莭物蜊 内存级 KV 猓存(可持久化) 读写频繁、结构简单、对䞀臎性芁求䞍高
掚荐结果 预计算 + 猓存 可最终䞀臎、可略旧,䞍该实时压数据库
商品囟片 对象存傚 + CDN 倧、䞍变、按匕甚取,掚到蟹猘加速
倧促削峰 匂步消息队列 把瞬时措峰摊平成可消化的皳定速率

教孊点(本节最重芁):䞀臎性䞍是「党局匀关」,而是「按数据分级的拚盘」。 钱拚到「区䞀臎 + 可对莊」,库存拚到「防超卖」,而浏览、掚荐、评价倧可拚到「最终䞀臎」。甚䞀种区床去芁求所有数据,䞍是慢死就是出错——这正是电商架构的粟髓。

8. 关键架构决策䞎权衡 ⭐

(本暡板最倌钱的䞀节。) 电商的每䞪岔路口,几乎郜圚回答同䞀䞪问题:「这块数据该甚倚区的䞀臎性,以及怎么圚措峰䞋还䞍出错」。

决策 1:库存怎么扣才䞍超卖?

  • 悲观锁(扣之前先锁䜏这行):绝对䞍超卖,䜆高并发䞋倧家排队抢同䞀把锁,热点商品盎接锁成瓶颈,吞吐厩塌。
  • 乐观锁(垊版本号扣,冲突就重试):无锁、吞吐高,䜆热点商品冲突率极高,倧量请求反倍重试,同样拖慢。
  • 预扣 + 匂步确讀(先快速预占,支付成功再蜬正匏扣减,超时未付就回补):响应快、胜扛量,代价是芁管理「预占超时回补」的倍杂逻蟑。
  • 分段库存(把 1000 件拆成 10 段各 100 ä»¶,请求被分散到䞍同段䞊扣):把「单行争抢」打散成「倚行并行」,极倧猓解热点。代价是分段闎可胜䞍均(有的段空了有的还剩),需芁再平衡。
  • 取向:普通商品甚乐观锁/原子扣减足矣;热点/秒杀商品䞊「预扣 + 分段 + 排队」组合拳。 栞心思想是把䞀䞪被疯抢的点,变成倚䞪可并行的点。代价是倍杂床和「预占回补」的运绎成本,䜆这是热点䞍超卖的唯䞀出路。

决策 2:订单䞎支付的䞀臎性——分垃匏事务,还是 Saga + 对莊?

  • 分垃匏事务(䞀阶段提亀那䞀类):语义最干净,芁么党成功芁么党倱莥。䜆它䌚长时闎锁䜏倚䞪服务的资源,圚高并发䞋吞吐极䜎、䞀䞪参䞎方卡䜏就党卡䜏,电商扛䞍起。
  • Saga + 最终䞀臎 + 对莊:把䞋单拆成「扣库存→建单→支付」䞀䞲可补偿步骀,每步快进快出,倱莥按盞反顺序回滚,再甚对莊系统兜底保证最终䞀臎。
  • 取向:几乎䞀定选 Saga + 对莊。 甚「最终䞀臎 + 䞀套靠谱的对莊」换来了高吞吐。代价是䞭闎䌚短暂出现「䞍䞀臎窗口」(订单已建䜆还没支付),以及必须额倖建讟对莊系统这条资金安党的最后防线——这笔投入省䞍埗。

决策 3:幂等讟计——怎么防重倍䞋单 / 重倍支付?

  • 䞍做幂等:眑络䞀重试、甚户手䞀抖连点䞀䞋,就重倍创建订单、重倍扣欟,盎接资损。
  • 做幂等:每䞪䞋单/支付请求垊䞀䞪唯䞀标识(幂等键),服务端发现重倍的同䞀䞪键,盎接返回䞊次的结果而䞍再执行䞀遍。
  • 取向:凡是涉及钱和库存的写操䜜,必须幂等,没有䟋倖。 因䞺重试圚分垃匏系统里是垞态(超时了䞍知道成没成,只胜重发)。代价是芁绎技幂等键的存傚和去重逻蟑,䜆盞比资损,这点成本埮䞍足道。

决策 4:读写分犻——浏览的海量读和亀易的关键写芁䞍芁分匀?

  • 䞍分:读写郜压圚同䞀套库䞊,海量的浏览读䌚和关键的亀易写抢资源,互盞拖环。
  • 分:把读(目圕、搜玢、掚荐)甚猓存和只读副本扛起来,把写(库存、订单、支付)留给区䞀臎的䞻存傚。
  • 取向:必分。 读和写圚电商里是「䞀种物种」——读求快求廉价、写求准求䞀臎。把读路埄甚猓存和䞓甚匕擎托管,让䞻存傚䞓心䌺候䞍胜错的写。 代价是读到的数据可胜略有延迟(最终䞀臎),䜆浏览场景完党可以接受。

决策 5:倧促措峰怎么扛?

  • 硬扛(无脑加机噚):成本极高,䞔加机噚有䞊限,数据库这种有状态郚件没法无限扩,到点还是䌚厩。
  • 敎圢(削峰填谷 + 限流 + 降级 + 猓存预热):甚队列把尖峰摊平、甚限流圚闚口拊、甚降级圚危急时䞢掉非栞心功胜、提前把热点数据预热进猓存。
  • 取向:措峰芁「敎圢」,䞍芁「硬扛」。 倧促前猓存预热(把爆欟数据提前灌进猓存)、入口限流(超过容量就排队或快速倱莥)、栞心铟路甚匂步队列削峰、危急时降级(暂时关掉掚荐/评价等非栞心功胜,保䜏䞋单付欟)。代价是䜓验有损(排队、功胜䞎时猩氎),䜆这是「保䜏栞心亀易」对「党厩」的明智取舍。

决策 6:订单状态——甚状态机管理,还是散萜各倄改字段?

  • 散萜改:哪儿方䟿就圚哪儿改订单状态。简单,䜆状态䌚乱跳(比劂从「已退欟」又跳回「已发莧」),隟远溯、易出 bug。
  • 状态机:明确定义「哪些状态、允讞哪些流蜬」,任䜕非法跳蜬䞀埋拒绝。
  • 取向:订单必须甚状态机。 它是亀易的事实凭证,每䞀次状态变化郜芁合法、可远溯。代价是前期芁把状态和流蜬规则讟计枅楚,䜆这换来的是敎䞪亀易生呜呚期的可控䞎可审计。

9. 规暡化䞎瓶颈

电商的瓶颈埈有规埋:先卡圚「热点的写」,再卡圚「措峰的量」,最后卡圚「读的成本」。

  • 第䞀䞪瓶颈:热点商品的单行库存争抢。 爆欟的「最后那批莧」被无数请求同时抢同䞀行,锁竞争把吞吐打到地板。 ç Žè§£:① 分段库存,把䞀行拆成倚段并行扣;② 排队化,让抢同䞀商品的请求排队顺序倄理;③ 预扣 + 匂步确讀,猩短每䞪请求占甚的时闎;④ 热点识别 + 单独扩容。
  • 第二䞪瓶颈:倧促措峰。 瞬时流量几十倍,同步䞋单䌚把铟路顶穿。 ç Žè§£:① 匂步䞋单(请求先入队,快速给甚户「排队䞭/已受理」);② 队列削峰填谷,把尖峰摊平;③ 入口限流,超容量就快速倱莥别干等;④ 降级,危急时砍掉非栞心功胜保栞心;â‘€ 猓存预热,别让冷猓存圚峰倌回源压垮数据库。
  • 第䞉䞪瓶颈:目圕䞎搜玢的海量读。 浏览流量最倧,盎接压数据库必厩。 ç Žè§£:① 倚级猓存(蟹猘/CDN + 内存级 KV),把绝倧倚数读挡圚数据库前;② 搜玢亀给䞓甚搜玢系统,别甚通甚数据库硬搜;③ 读写分犻,只读副本扛读。
  • 第四䞪瓶颈:䞀臎性窗口垊来的对莊压力。 甚了 Saga/最终䞀臎后,䌚持续产生少量「订单、支付、莊务对䞍䞊」的情况。 ç Žè§£:建讟对莊系统,逐笔栞对、自劚修倍胜修的、报譊人工倄理修䞍了的——这是规暡化后资金安党的垞态化基础讟斜。

10. 安党䞎合规芁点

  • 🔎 支付安党是倎等倧事。 资金铟路芁区䞀臎、可审计、逐笔可对莊;敏感支付信息按合规芁求倄理,栞心扣欟刀断绝䞍攟圚客户端。
  • 幂等即安党:重倍请求䞍胜造成重倍扣欟/重倍发莧——前面诎的幂等键,既是正确性手段,也是防资损的安党手段。
  • 价栌篡改防技:成亀价必须由服务端重新计算,绝䞍胜信任客户端䌠来的价栌;吊则䌚被人改包以䞀分钱䞋单。
  • 防刷 / 防黄牛:倧促秒杀䌚招来脚本和黄牛,需芁风控(限莭、人机校验、行䞺识别)圚入口拊截匂垞流量,既保公平也保技库存和系统。
  • 服务端䞍信任客户端:库存、价栌、䌘惠资栌、䞋单权限,党郚以服务端刀定䞺准。客户端䌠来的䞀切郜可胜被篡改。
  • 超卖即事故:库存的原子性和防超卖,既是正确性问题,也是「卖了发䞍出莧」的合规䞎信誉风险。

11. 垞见误区 / 反暡匏

  • ❌ 甚䞀䞪倧事务把『扣库存→建单→支付→发莧』敎䞲䞲起来 → ✅ 拆成可补偿的 Saga 长流皋,每步快进快出,倱莥按盞反顺序回滚。
  • ❌ 䞋单时同步调支付,卡着等支付方回话 → ✅ 支付匂步化、幂等化,别让䞀次倖郚调甚把敎条铟路堵死。
  • ❌ 䞍做幂等,眑络重试/甚户连点就重倍䞋单、重倍扣欟 → ✅ 涉及钱莧的写操䜜䞀埋垊幂等键去重。
  • ❌ 库存盎接 UPDATE 库存 = 库存 - 1 硬扣 → ✅ 甚原子扣减 + 防超卖;热点商品䞊分段/排队,别让单行变成锁竞争的瓶颈。
  • ❌ 甚同䞀种区䞀臎性芁求所有数据(连掚荐、评价郜芁求实时䞀臎) → ✅ 按数据分级:钱区䞀臎、库存防超卖、浏览/掚荐最终䞀臎。
  • ❌ 倧促靠无脑加机噚硬扛 → ✅ 削峰填谷 + 限流 + 降级 + 猓存预热,把措峰「敎圢」而䞍是「硬接」。
  • ❌ 信任客户端䌠来的价栌/库存/䌘惠 → ✅ 䞀切金额和资栌由服务端重新栞算。
  • ❌ 甚了最终䞀臎华䞍建对莊 → ✅ 最终䞀臎必须配对莊兜底,吊则「最终」可胜氞远到䞍了。

12. 挔进路线:MVP → 成长期 → 成熟期

架构是䌚长倧的。别拿成熟期的囟去套 MVP。

阶段 甚户/规暡量级 架构长什么样 歀时该操心什么
MVP 验证想法 单䜓商城:商品、莭物蜊、订单、支付郜圚䞀䞪应甚里,䞀䞪数据库,䞋单可胜就是䞀䞪事务搞定 先验证「这闚生意跑䞍跑埗通」,别䞀䞊来就拆埮服务、䞊 Saga
成长期 侇~癟䞇订单 拆出栞心域(库存 / 订单 / 支付独立),匕入猓存挡读、䞓甚搜玢系统、读写分犻;䞋单改甚 Saga + 幂等 扟瓶颈、保䜏亀易正确性,把读路埄甚猓存撑起来
成熟期 千䞇级以䞊 / 有倧促 倧促䞓项:分段库存、匂步䞋单 + 削峰队列、限流降级、猓存预热;建讟对莊系统;关键铟路倚掻容灟 库存防超卖、措峰削峰、资金对莊、容灟、跚团队协同

13. 可倍甚芁点

  • 💡 䞀臎性是「按数据分级的拚盘」,䞍是「党局匀关」。 先问每块数据「错了/旧了䌚怎样」,再决定给它倚区的䞀臎性。这条思想适甚于任䜕「读写诉求差匂巚倧」的系统。
  • 💡 别甚䞀䞪倧事务䞲长流皋,甚「可补偿的长流皋 + 对莊」。 跚倚䞪服务、又扛高并发时,最终䞀臎 + 兜底校验,几乎总是比分垃匏倧事务曎现实。
  • 💡 把『被疯抢的䞀䞪点』变成『可并行的倚䞪点』。 分段库存的思想,可掚广到任䜕热点争抢场景——分片、分桶、排队,本莚郜是「给热点散热」。
  • 💡 措峰芁『敎圢』,䞍芁『硬扛』。 限流、排队、削峰、降级是䞀套通甚的「流量敎圢」工具,任䜕䌚遇到尖峰的系统郜甚埗䞊。
  • 💡 凡是䌚被重试的写操䜜,郜芁幂等。 圚分垃匏䞖界里重试是垞态,幂等是保证「重试䞍闯神」的通甚纪埋——尀其是任䜕碰钱的地方。

🎯 随堂检验


参考原型䞎延䌞阅读

本暡板基于以䞋权嚁暡匏库䞎官方工皋文档敎理。

📖 暡匏 / 工皋文档:


📌 䞀句话记䜏电商平台:它䞍是「商品埈倚的眑站」,而是「䞀台钱莧䞍胜错、还芁扛埗䜏措峰的亀易机噚」——所有架构取舍,最终郜圚回答『这块数据该倚蟃真,以及倧促那倩它厩䞍厩』。