多影子核心
多重陰影核心是平臺/產品的基本層,可為許多獨立客戶(陰影)提供共享資源,同時保證隔離,控制限制和安全定制。設計良好的核心降低了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」的明確定義,所有層的嚴格隔離,可管理的配額和透明的計費,以及可觀察性和版本兼容性。遵循所描述的模式,可以在不犧牲每個租戶的安全性,質量和更改速度的情況下擴展產品。