先回答一个很土的问题:流量上来,哪块先垮

去年有个做家居跨境的老板找我,说大促当天下午三点,后台订单数卡在 1.2 万单不动了。技术一查,数据库连接池满了。修了两个小时,流量没了,还多卖了 300 多单,客服电话从下午响到晚上。

这种事见得太多了。电商平台的系统架构,不是画几张微服务的图就完事。它得回答一个很土的问题:流量上来的时候,哪一块先垮,你打算怎么扛。

一、系统到底分成哪几块

模块 干什么 一般怎么选
前台商品与购物车 商品详情、SKU 选择、加购、下单页 自己写,跟业务强绑定
接入层、网关 限流、鉴权、灰度 用现成组件,别自己造
订单中心 下单、拆单、状态流转 必须自己写,最核心
库存中心 扣减、回滚、多仓分配 必须自己写,别外包
支付中心 渠道对接、回调、退款 自己写薄薄一层,渠道用官方 SDK
履约、仓储 拣货、发货、物流回传 国内对接 ERP,跨境自己搭
会员与营销 等级、优惠券、满减 前期能买就买
数据与对账 报表、对账文件、清结算 自己写,财务要认账

这张表的意思是:订单、库存、支付、对账这四块管着钱和货,不要偷懒。其他的能买就买。

二、库存和订单,坑最多

  • 扣库存的时机。是下单时扣,还是支付时扣?下单就扣,能防超卖,但会占库存;支付才扣,体验好,但容易超卖。跨境多仓,建议改成:下单预占,支付后确认,超时后释放,预占时间设 15 到 30 分钟。
  • 幂等。用户手抖点两次,或者网络重试,同一个订单号会进来两次。订单创建、支付回调、发货通知,全都要做幂等。别拿时间戳当唯一键,并发下会重复。
  • 订单状态机。待支付、已支付、待发货、已发货、已签收、退款中、已关闭。每个状态由谁修改、能改成什么,都要写死在代码里。不要为了省事,让运营在后台随便拖,否则出了问题根本对不上账。
  • 分布式事务。不要一上来就上 Seata、TCC。订单和库存不在一个库,用本地消息表加定时对账兜底,够用。真出了偏差,财务对账也能找回来。

三、支付和跨境,是另一个坑区

  • 汇率。下单时记录汇率快照,不要等支付成功再按当时汇率算,客户会跟你吵。
  • 回调重复。Stripe、PayPal 的回调都可能重复推送,也可能延迟半小时。回调里只做两件事:记流水、改状态。不要在回调里跑重逻辑。
  • 对账。每个渠道每天一份对账文件,T+1 拉下来,跟自己的流水逐笔比。差一笔就查一笔。跨境清结算这笔账算不清楚,月底财务会跟你翻脸。
  • 本地支付方式。香港 FPS、新加坡 PayNow、巴西 Pix 和信用卡分期、尼日利亚的银行转账和 USSD、南非 EFT。不是接一个 Stripe 就能全球通吃。非洲很多地方网络差,页面要能在弱网下打开,下单失败要能存草稿。

四、多国多仓,履约怎么排

新加坡客户下单,从深圳发还是从马来仓发?系统得按库存、运费、时效算一遍再决定。拆单是常事:A 仓有货先发,B 仓的等两天。运费规则按国家、重量、体积、渠道算,别写死。退货流程要能回库存、回财务,跨境退货还要算关税和退运成本。

五、团队和预算,说点实在的

第一版别追微服务。2 个后端、1 个前端、1 个测试、1 个产品,3 到 4 个月能出一套能跑的单体应用,模块边界划清楚就行。日均订单到 5 万单以上,再考虑把订单、库存拆出去。预算从几十万到几百万都有,差别在支付渠道数量、多语言多币种、仓储对接和后期运维。别信「一套系统打全球」,架构是根据业务逐步调整出来的,不是买出来的。

如果现在正卡在「该买 SaaS 还是自己搭」「先做哪块」这种问题上,把你们现在的单量、目标国家和预算发过来,我们帮你过一遍。鼎汇通做过 ERP、物业系统、跨境贸易平台,也帮客户从零搭过电商中台,坑踩得不少,聊半小时可能省你三个月。