海外版外卖结算上线后,周结导出任务与用户下单共用一台小规格云主机时,常见现象是:周五导出 CSV 时下单变慢。选规格不是「越大越好」,而是按写库、读库、异步导出三类负载分开看。
一、三类负载分开估
下单写库:短事务、高 QPS,宜 API + MySQL 主库。
商家列表 / 历史单:读多,宜只读实例或 Redis 缓存。
周结导出:长查询、大结果集,宜异步 worker 写 OSS。
不宜在 API 进程里同步跑全量导出。
二、试跑期规格参考思路
单城日单量万级以内:2 核 4G API ×2 + 4 核 8G MySQL 主库往往够用。导出 worker 可与 API 同 VPC 独立 ECS,内存略大(8G)以缓冲 CSV 生成。具体以压测为准,非固定套餐。
三、磁盘与 IOPS
订单库用 SSD 云盘;导出文件写 OSS,不占系统盘。若 binlog 与数据同盘,注意预留空间,避免打满导致写入失败。
四、连接池与实例数
API 水平扩容时,每实例连接池上限 × 实例数不得超过 MySQL max_connections。宜先调 pool,再加 API 台数。
五、大促前预留
大促前一周:压测下单峰值;检查慢 SQL;确认导出任务队列堆积告警。爆品库存与结算导出错峰,不宜同一窗口全量重算。
六、光合同城边界
光合同城支持私有化部署与常规水平扩展;结算导出可走异步任务;各国通道按需定制;商务规则由客户确定;系统侧不抽成客户平台订单。
七、适合谁
适合海外首城已跑通、准备加导出自动化或升配的团队。也适合财务要求「周五固定出账」、需要把导出从 API 剥离的运营商。
八、周五出账窗口怎么留余量
导出任务宜排低峰 cron,worker 规格略大于日常 API。若周五下午同时大促与全量导出,磁盘 IO 和 CPU 会互相抢。提前在测试环境跑一遍「导出时长 + 下单 P99」叠加场景,比临时升配更省钱。
九、常见误区
误区 1:导出与 API 同进程
周五出账拖慢下单。
误区 2:worker 无独立规格
大导出 OOM 连带 API 重启。
误区 3:结果文件放系统盘
磁盘满导致服务不可用。
误区 4:无任务失败重试
财务以为已出账、实际半成品。
误区 5:不做导出与下单叠加压测
真高峰才发现资源不够。
十、小结
海外结算场景下,云主机规格要为写库、读库、异步导出留不同余量。周五出账宜与下单错峰;worker 独立规格、OSS 存结果、低峰 cron 是常见组合。大促与全量导出叠加前务必压测。光合同城支持私有化部署与异步导出任务对接。财务若要求「每周五 18 点前出账」,宜在测试环境先量一次全量导出耗时,再反推 worker 规格与 cron,而不是周五下午才发现要三小时。
十一、负责人检查表
导出 worker 独立、结果写 OSS、与下单叠加压测过、cron 在低峰。财务要的截止时间与系统能力对齐,再写进 SLA。若全量导出需 2 小时,cron 应早于截止点 3 小时触发,留重试与人工复核窗口,而不是卡点到秒。
十二、磁盘与导出文件生命周期
导出 CSV 体积随商家数线性涨,OSS 生命周期策略宜提前设定,避免账单文件无限堆积占满预算。同时保留最近 90 天样本供财务抽查,与合规要求对齐即可,不必永久保留每一版中间文件。财务若需长期存档,宜自行下载到内部文档系统,而不是无限占用生产 OSS 空间。OSS 费用异常上涨时,优先查导出任务是否未设生命周期,而不是先怀疑被攻击。导出目录宜按 merchant_id/日期 分前缀,方便财务按商家归档,也便于生命周期规则分批清理。