feat: Gateway store 桩换真实 GORM/Postgres + go-redis (含自动迁移与优雅降级)
第 2 层网关持久层落地,遵守 sundynix_ 表名前缀 + AutoMigrate 约定。 - store: GORM(NamingStrategy 前缀 sundynix_/单数) → User=sundynix_user, Task=sundynix_task 启动 AutoMigrate;go-redis/v9 滑动窗口限流(Incr+Expire,按 IP) - 优雅降级:连不上库则 warn 继续(不 fatal),保证无 Docker 的 make demo 仍跑通 - handler: SubmitTask 持久化任务(best-effort),Billing 真实读库返回 tasks_submitted - main: OpenPostgres/OpenRedis 读 POSTGRES_DSN/REDIS_ADDR 环境变量 - 验证: 4 模块 build ✓;e2e 3 测试 PASS;live 双路径(真实库持久化 + 坏DSN降级)实测通过 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -12,9 +12,13 @@ import (
|
||||
|
||||
func main() {
|
||||
natsURL := envOr("NATS_URL", "nats://localhost:4222")
|
||||
pgDSN := envOr("POSTGRES_DSN", "postgres://sundynix:sundynix@localhost:5432/sundynix?sslmode=disable")
|
||||
redisAddr := envOr("REDIS_ADDR", "localhost:6379")
|
||||
|
||||
db := store.MustOpenPostgres() // MainDB: Users / Billing / DSL
|
||||
cache := store.MustOpenRedis() // CacheDB: Session / Rate Limit
|
||||
db := store.OpenPostgres(pgDSN) // MainDB: Users / Billing / DSL(连不上则降级)
|
||||
defer db.Close()
|
||||
cache := store.OpenRedis(redisAddr) // CacheDB: Session / Rate Limit(连不上则降级)
|
||||
defer cache.Close()
|
||||
bus := nats.MustConnect(natsURL) // 接入 NATS 零拷贝骨干网 + 声明任务流
|
||||
defer bus.Close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user