多影子核心
多重阴影核心是平台/产品的基本层,可为许多独立客户(阴影)提供共享资源,同时保证隔离,控制限制和安全定制。设计良好的核心降低了TCO,加快了爬行速度,简化了发布,并为每个租户提供了可预测的质量。
1)租户模式和隔离边界
二.定义
Tenant (Tenant/Org/Account):具有内部用户、数据、策略和限制的逻辑组织。
隔离:防止一个租户影响另一个租户的数据、性能和安全性的能力。
隔离级别
1.数据:单个DB/电路/表,"租户密钥"加密,"tenant_id"过滤器。
2.计算:CPU/RAM/IO配额,每个特南特或"加权"队列的worker池。
3.网络:细分,私有endpoints/VPN,租户权限列表。
4.操作:迁移,备用,DR和"每个租户"影响边界事件。
多重性模式
Silo(硬绝缘):每个特南特的单个集群/DB。最大安全性,价格高。
池(共享资源):具有逻辑隔离的共享基础架构;效率更高,风险更高的"噪音邻居"。
Bridge/Hybrid:溷合动力车是VIP/受监管客户的通用控制平面+选择性"silo"。
2)识别和路由租户查询
租户许可证(Tenant Resolution)
通过域: 'https: //{tenant} .example。com`
途中: '/t/{tenant}/……'
在标题: "X-Tenant-Id","X-Org"(签名验证)
通过令牌: "tenant_id","org_id","plan","scopes"的污名'
路由
L7网关(API 网关/Ingress)提取"tenant_id",丰富上下文("计划",限制,区域),并写入预告片/徽标。
功能服务采用"只读"上下文。路线和限制的解决方案由网关/polysi引擎做出。
3)数据和模式: 战略
存储选项
共享方案,row-level:一组表格,"tenant_id"字段,严格的RLS(Row-Level Security)。
Shared-DB,按计划:单个DBMS,每个Tenant的单独计划;管理与隔离之间的平衡。
Per-DB/集群:每个Tenant的单独的DB/集群;更昂贵,更容易满足主权要求。
关键实践
在任何地方显式传输"tenant_id"并将其包含在复合键/索引中。
RLS/访问策略在 DBMS+服务级"双锁"验证中。
加密:密钥层次结构(root KMS → key-envelope到tenant → DEK到对象)。
归档/重建和"遗忘权"由租户级别的政客管理。
4)设置,fici和版本
Tenant配置
表/存储"tenant_config"(计划,配额,幻灯片,本地化,SLA)。
Configs优先级:默认→计划→ tenant →环境→用户。
短暂的TTL和在事件中致残的configs囊肿。
Ficha标志和兼容性
包含点数(per-tenant/per-cohort)功能,金丝雀展开。
API转化:稳定合同+边界适配器(后端/前端兼容格式)。
5)限制,配额和账单
消费政策
Rate limiting: "requests/sec" per tenant/route, "token-bucket" with plan property。
Quotas:存储量,设施数量,消息/分钟,jobs/小时。
Fairness:队列的"加权时间表"+VIP的制造者隔离。
账单
通过"tenant_id"(使用度量)计数器→聚合器→发票。
在边界上使用snapshots(等效性和事件损失保护)。
模型:固定计划+反向消费、后佩伊/前佩伊,"tiered"折扣。
6)安全性和访问
身份验证/授权
OIDC/SAML带有"tenant_id","roles","scopes"的烙印。
RBAC/ABAC:租户级角色(Owner/Admin/Reader),项目/部门属性。
使用mTLS和受限令牌委托访问(服务到服务)。
信任边界
请求接受策略:验证标题签名,nonce/timestamp,绑定到源。
秘密和密钥:按任务轮换,单独的KMS上下文,审核关键操作。
多区域与数据驻留:跨区域流控制的tenant到区域。
7)观察力"按租户"
跟踪和指标
强制性标签:"tenant_id"、"plan"、"region"、"endpoint"、"status"。
SLI/SLO per tenant: `availability`, `p95 latency`, `error budget`.
Dashbords和Alerta按细分市场(VIP/调节/新)。
徽标和审计
活动日志(谁/什么/何时/何地),具有不可变的存储和租户策略的还原。
将事件汇总为廉价存储,恢复"按点击"的细节。
8)性能和"无声邻居"
反噪音措施
队列/锻炼者级别,CPU共享和IO比例的限制。
缓存拆分:"tenant: {id}:",TTL按计划,保护"cache stampede"。
考虑到"tenant_id"选择性的索引和查询计划。
冷启动和"温暖"池
VIP/峰值窗口的预热。
通过指标信号(backpressure/autoskeyling)弹性锻炼池。
9)更新和迁移无停机
二.战略
反向兼容迁移(expand → migrate → contract)。
"按租户"迁移:具有进度控制的蹦床,特定"tenant_id"的"暂停/回滚"。
在租户的子集上采样和"金丝雀"迁移。
DR和事件
带有RTO/RPO per tenant的DR计划;部分的"只阅读模式",没有全球的市中心。
隔离事件:在"tenant_id"上融合,扑灭"热"租户不会影响其他人。
10) API和协议
具有强制性租户上下文的REST/gRPC(在标题/标题中)。
事件(event-driven): topics with neiming'tenant {id} .event', filters and ACL by subsigns。
全局入口点:L7网关验证上下文,应用限制,根据Tenant策略加密PII。
11)租户生命周期
1.Provizhining:创建租户记录,生成钥匙/配音,绑定区域。
2.激活:释放OIDC/SAML客户端,创建角色/策略,主配额。
3.运营:监视,计费,旗帜/计划更新。
4.Suspend/Trottling:数据保存/出口冻结。
5.删除/导出:重建、封存备份、加密键擦除(crypto-shredding)。
12)建筑的迷你基准(言语方案)
Edge (API网关):TLS/mTLS、"tenant_id"检索、限制、审核。
控制平面:租户目录,configa,幻灯片,账单,政治家。
Data Plane(服务):无状态服务,队列,配额制造商;Redis/kv在tenant上带有前缀。
存储:RLS-DB/单个电路/DB;KMS带有租户钥匙;对象存储c envelope加密。
观察力:带有"tenant_id" 标签的预告片/度量/logi,按计划排序。
Admin:租户子集上的隔离操作(迁移/备用)。
13)销售前清单
- 在边界和服务中定义"tenant_id"的单一方法。
- RLS/ACL策略经过测试和"负面场景"验证。
- 配额/限制/计费在实际负荷上确认;有对"账单"的保护。
- 可观察性和SLO per tenant;VIP/可调的差分。
- 迁移是兼容的,有部分回滚和选择性蹦床。
- 具有RTO/RPO per tenant和定期演习的DR脚本。
- 加密"租户密钥",轮换和审核密钥。
- API合同/事件和审查政策的文档。
14)典型错误
"一举一动"全球迁移,无法阻止陷入困境的租户。
在缓存/队列中隐藏依赖于"tenant_id" →数据泄漏/队列交叉。
上下文混合(无意中没有"tenant_id"的管理操作)。
缺少"双锁":只有DB中没有RLS的服务检查。
整个集群的单一限制→"噪音邻居"和SLO违规。
不透明的计费,无偶然性和审计跟踪。
15)快速选择策略
严格的隔离/监管:Silo(单个DB/集群),区域锁。
平衡效率:共享的DB per schema+RLS,按键。
高实时流量:具有"加权"配额和VIP专用窃听器的共享队列。
很多定制:幻灯片+API适配器,按优先级存储configs。
结论
多影子内核是工程边界的学科:"tenant_id"的明确定义,所有层的严格隔离,可管理的配额和透明的计费,以及可观察性和版本兼容性。遵循所描述的模式,可以在不牺牲每个租户的安全性,质量和更改速度的情况下扩展产品。