Skip to content

架构 ​

GMShop Edge 在 Cloudflare Workers 与 Bun/Nitro 上运行同一套 React/TanStack 全栈应用。一个部署同时负责公开商城、用户账户、结账、交付、供应商集成、Telegram 集成和管理后台。

共享应用边界 ​

路由保持轻量;功能页面、Schema、服务端函数和领域行为位于 src/features,跨领域运行时实现位于 src/server,Drizzle Schema 位于 src/db/schema。

身份、RBAC、商品、订单、库存、权益、供应商状态、余额账本、通知、重放保护、限流、Outbox 和审计数据均保存在权威数据库中。金额使用最小货币单位的十进制整数字符串存储,不使用浮点数计算。

Cloudflare Workers 适配器 ​

Workers 部署使用:

  • DB:D1,保存权威应用与商业数据。
  • FILES:私有 R2,保存商品媒体、下载文件、自动化产物和导出文件。
  • CACHE:KV,仅保存经过验证、带版本且有容量限制的读取缓存;安全限流仍以数据库为准。
  • COMMERCE_QUEUE:处理交付、自动化、通知、供应商和退款任务,并配置死信队列。
  • EMAIL:可选的 Cloudflare Send Email 绑定。
  • 每分钟 Cron Trigger:执行定时处理和维护。

Bun/Nitro 适配器 ​

Bun 运行时在一个数据目录内提供等价适配器:

  • SQLite 权威数据库。
  • 进程内有界缓存。
  • 私有本地对象存储。
  • 基于 SQLite 的持久队列。
  • 每分钟执行的进程内调度器。

GMSHOP_DATA_DIR 包含数据库、对象、队列状态和全部运行时数据。Bun 明确仅支持单实例,不支持多副本部署或共享网络存储。

数据与后台任务 ​

私有对象必须通过已授权的数据库记录解析,客户端不能选择对象键。队列和定时任务在同步商城请求之外处理供应商同步与采购、交付、通知、退款、重试、保留策略、Telegram 维护和密钥轮换。

全新安装的迁移基线是 drizzle/0000_gmshop.sql;后续迁移按顺序应用,Bun 数据操作会验证其校验和。

最近更新