Nuxt 前端
保留现有页面体验,只通过 /api/v1 调用业务能力
网站架构
1ll.me 使用前后端分离的模块化单体:Nuxt 负责体验,Go 负责业务 API 与跳转,PostgreSQL 保存权威数据,Redis 和后台 Worker 承担可恢复的加速与异步任务。
当前已运行 · 本地开发环境
管理请求和短链跳转共享同一套安全策略与权威数据,但在 Go 内部走各自清晰的模块边界。
保留现有页面体验,只通过 /api/v1 调用业务能力
访问 1ll.me/{code},进入精简的跳转热路径
API、身份、链接、跳转、统计与管理模块运行在一个可独立部署的系统中
账户、工作空间、链接、审计与同步意图的唯一权威来源
redis-cache 可丢弃;redis-control 承担限流、计数和统计 Stream
批量聚合统计、处理通知与受限后台任务,不阻塞跳转
一致性边界
链接修改不会依赖 Redis 成功。权威记录、审计与 outbox 意图在同一个 PostgreSQL 事务中提交,提交后才失效缓存。
运行原则
缓存命中直接解析;未命中回到 PostgreSQL,并把统计发送到有界异步通道。
Redis 缓存不可用时回到数据库;统计流不可用时使用有容量限制的本地 spool。
工作空间授权、URL 策略、会话摘要、CSRF、Origin 与敏感日志处理不依赖前端。
请求体、连接池、队列、批任务和并发入口保持有界,并支持优雅关闭。
演进目标 · 尚未接入生产
目标是在 VPS 不可用时,让已经同步的短链继续跳转。PostgreSQL 仍是唯一权威数据源;D1 只保存跳转所需的最小投影,并可从 PostgreSQL 重建。
Worker 将租约、批量发送、重试、死信与对账补齐后,才能连接测试环境。
D1 只接受更新版本,删除事件不能被迟到的旧消息重新复活。
边缘故障访问单独记录,VPS 恢复后再由后台任务幂等合并。
完成安全检查、恢复演练与生产等价压测,并获得明确确认后才会变更线上链路。