feat(cache): adopt FusionCache for business caching
Some checks are pending
ci / release-gate (push) Waiting to run
Some checks are pending
ci / release-gate (push) Waiting to run
This commit is contained in:
@@ -6,11 +6,11 @@
|
||||
|
||||
| 进程 | PostgreSQL | Redis | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `Tiku.Api` | 必需 | Development 可选;Production 必需 | 提供 HTTP API、认证、授权和缓存 |
|
||||
| `Tiku.Worker` | 必需 | Development 可选;Production 必需 | 承载周期任务、任务队列、商业账务和授权缓存失效重试 |
|
||||
| `Tiku.DbMigrator` | 必需 | 不需要 | 执行 Migration、内置目录 seed 和管理员引导 |
|
||||
| `Tiku.Api` | 必需 | Development 可选;Production 必需 | 提供 HTTP API、认证、授权、FusionCache L1/L2 和 Output Cache |
|
||||
| `Tiku.Worker` | 必需 | Development 可选;Production 必需 | 承载周期任务、业务缓存 Backplane 和授权缓存失效重试 |
|
||||
| `Tiku.DbMigrator` | 必需 | 不需要 | 执行 Migration、内置目录 seed 和管理员引导;FusionCache 仅使用本地 L1 |
|
||||
|
||||
Development 未配置 Redis 时,安全服务使用进程内/数据库防线。Production 不允许 Redis 降级;后台任务在所有环境统一使用 PostgreSQL。
|
||||
Development 未配置 Redis 时,业务 FusionCache 只使用进程内 L1,安全服务使用进程内/数据库防线。Production 不允许 Redis 降级;后台任务在所有环境统一使用 PostgreSQL。
|
||||
|
||||
## 数据库
|
||||
|
||||
@@ -50,10 +50,14 @@ dotnet run --project Tiku.DbMigrator -- --bootstrap-platform-admin
|
||||
连接串读取 `ConnectionStrings:Redis` 或 `REDIS_URL`。当前用途:
|
||||
|
||||
- 密码、短信发送和短信校验的安全窗口计数;
|
||||
- 租户 Feature 分布式缓存;
|
||||
- `TikuBusiness` FusionCache 的租户目录、Feature 快照和运行时配置 L2;
|
||||
- FusionCache Backplane,用于跨 API/Worker 节点驱逐业务 L1;
|
||||
- 可选的 Session、安全状态和版本化权限快照缓存;
|
||||
- Production 的 ASP.NET Core Output Cache。
|
||||
|
||||
Redis key 使用环境前缀;配置解析会强制 `AbortOnConnectFail=false`。Redis 不是用户、Session、权限、套餐或用量的权威数据源。
|
||||
业务缓存 key 和 Backplane channel 使用 `tiku:<environment>:business:v2` 前缀;配置解析会强制 `AbortOnConnectFail=false`。FusionCache 复用现有 `IConnectionMultiplexer`,不创建额外 Redis 连接。业务缓存禁用 fail-safe 与后台分布式写入,Redis 异常时回退 PostgreSQL;Redis 不是用户、Session、权限、套餐或用量的权威数据源。
|
||||
|
||||
`TikuBusiness` 的 TTL 和安全边界见[认证、授权与租户隔离](architecture/security-and-tenancy.md#fusioncache-业务缓存)。FusionCache、授权缓存与 Output Cache 是三套不同语义:业务读模型使用 FusionCache,安全状态保留版本化专用实现,HTTP 响应继续由 ASP.NET Core Output Cache 管理。
|
||||
|
||||
授权缓存由 `Security:AuthorizationCache` 配置,默认 `Mode` 为 `Disabled`。切换为 `Shadow` 或 `Active` 前,应先确认 API 与 Worker 使用同一 Redis 和 PostgreSQL,并观察 `Tiku.Security.AuthorizationCache` 的 mismatch、fallback 与 Redis 延迟指标。回滚只需切回 `Disabled`,不应回退授权版本或失效事件相关数据库结构。详细故障语义见[认证、授权与租户隔离](architecture/security-and-tenancy.md#redis-授权缓存模式)。
|
||||
|
||||
@@ -191,7 +195,7 @@ Worker 使用 ClamAV `INSTREAM` 协议,不在本地落盘待扫描对象。启
|
||||
- `GET /api/platform/operations/health`:需要 `platform:operations:view`,返回 PostgreSQL、Redis、Worker heartbeat、ClamAV 和对象存储配置状态。
|
||||
- `GET /api/platform/operations/workers`:查询 Worker 心跳、周期循环和 stale 状态。
|
||||
- `GET /api/platform/operations/job-metrics`:查询队列状态、最老 Pending 任务与过期租约。
|
||||
- 设置 `OpenTelemetry:OtlpEndpoint` 后导出 ASP.NET Core、HTTP client 和数据库观测数据。
|
||||
- 设置 `OpenTelemetry:OtlpEndpoint` 后导出 ASP.NET Core、HTTP client、数据库和 FusionCache 的 hit/miss、L1/L2、工厂、Backplane 指标与 trace。
|
||||
- Serilog 输出结构化请求日志;数据库性能拦截器记录慢查询指标。
|
||||
|
||||
Readiness 为绿色不等于认证授权、跨租户隔离或后台任务恢复演练已通过,发布仍需执行对应集成测试。
|
||||
|
||||
Reference in New Issue
Block a user