生态系统API
(部分: 生态系统和网络)
1)目标和原则
生态系统API是用于参与者交互的一组标准化接口(操作员,工作室,PSP,KYC/AML,桥梁,分析)。目标是:- 快速,可预测的集成(时间到集成↓)。
- 可靠性和可扩展性(SLO, QoS, backpressure)。
- 监管安全和合规性(最低限度,审计)。
- 无故障进化(版本,兼容性,ficheflagi)。
原理:contract-first,数据最小化,相容性,实验默认,两速发布(核心与实验)。
2) API分类法
1.REST/HTTP-同步CRUD/命令操作,idempotency-key,pagination/cursors。
2.gRPC/QUIC-低潜伏期、流、二进制协议。
3.事件(Pub/Sub)是域事件("deposit","payout.","bridge.","risk.")。
4.Webhooks-带有签名和转发的反向通知。
5.GraphQL(受限制)是实例化店面顶部的聚合读数。
6.Admin/Meta-目录、版本、状态、键、配额。
访问级别:公共(有限的方法/阅读),合作伙伴(漏洞和配额),内部(私人轮廓)。
3)合同和计划
OpenAPI/AsyncAPI/Protobuf IDL是唯一的真相来源。
数据合同-兼容性测试,电路linter,禁止没有MAJOR的"打破"字段。
目录:资产/网络,PSP/方法,区域/辖区,SDK版本,功能标志。
最小REST合同(OpenAPI片段)
yaml openapi: 3. 0. 3 info: { title: Ecosystem Core API, version: "2. 6. 0" }
paths:
/v2/payouts:
post:
operationId: createPayout parameters:
- in: header name: Idempotency-Key required: true schema: { type: string, maxLength: 64 }
requestBody:
required: true content:
application/json:
schema:
$ref: "#/components/schemas/PayoutRequest"
responses:
"202": { $ref: "#/components/responses/Ack" }
"409": { description: "Duplicate (idempotent)" }
components:
schemas:
PayoutRequest:
type: object required: [amount, currency, destination]
properties:
amount: { type: string, pattern: "^[0-9]+(\\.[0-9]{1,9})?$" }
currency: { type: string, example: "USD" }
destination: { type: string }
metadata: { type: object, additionalProperties: true }
事件(AsyncAPI)
yaml asyncapi: 2. 6. 0 info: { title: Ecosystem Events, version: "1. 9. 0" }
channels:
payout. finalized:
subscribe:
message:
name: PayoutFinalized payload:
type: object required: [id, ts, amount, currency, status, signature]
properties:
id: { type: string }
ts: { type: string, format: date-time }
amount: { type: string }
currency: { type: string }
status: { type: string, enum: ["finalized","failed"] }
signature: {type: string} # source signature
4)转化与兼容性
SemVer: `MAJOR.MINOR.PATCH`.MINOR/PATCH-向后兼容;MAJOR是并行版本("/v1","/v2")+适配器。
Deprecation policy: 90天≥窗口、"两条线路"支持、自动合同通知。
Feature Flags:按区域/合作伙伴启用/禁用字段/方法。
能力缺失:在握手时声明支持的配置文件。
5)相等性,顺序和光标
Idempotency-Key for Commands (create/cancel), TTL密钥≥ 72小时。
Exactly-once语义通过outbox/inbox和偶数匹配器。
游标分区:"next_cursor",对插入/删除的抵抗力。
排序和过滤器-稳定,明确记录。
6)安全与信任
mTLS(service↔service),塞特钉和钥匙旋转。
OAuth2/OIDC(客户端,JWT和简短的TTL),PoP/DPoP绑定到通道。
Webhook签名(NMAS/密钥版本/时间),重复保护。
RBAC/ABAC和PoLP:漏洞,org_id/tenant_id,设施/操作限制。
DLP/PII最小化:标签/logs中禁止PII,标记标识符。
Rate-limits和WAF:per org/route/region,abuse保护。
密钥策略示例(YAML)
yaml auth:
oauth2:
issuer: "https://auth. ecosys"
jwks_uri: "https://auth. ecosys/.well-known/jwks. json"
token_ttl_s: 900 mtls:
required_for: ["internal","partner_p0"]
scopes:
- name: payouts:write
- name: payouts:read
- name: events:subscribe
7)配额、QoS和backpressure
QoS类:P0(付款/桥梁/决赛),P1(杂货),P2(散装/存档)。
配额/限额:RPS,concur-requests,bytes/sec,事件/派对。
管理控制:提前拒绝"昂贵"请求,重量查询后卫。
Backpressure:令牌/学分,队列与DLQ,转发与抖动。
配额政策
yaml quotas:
partner_default:
rps: 200 concurrent: 100 webhooks_outbound_rps: 50 p0:
rps: 100 p95_latency_ms: 400
8)可观察性: SLI/SLO,度量,跟踪
SLI(内核):- p95/99 latency по маршрутам, Success Rate, Error budget burn, Queue-lag p95, Freshness webhooks, Delivery success%.
- Contract Compliance%(电路/签名)。
- Webhook retry/dropped%.
SLO(地标): P0 p95 ≤ 400毫秒,可用性≥ 99。95%;Webhook delivery p95 ≤ 2 с;Events freshness p95 ≤ 60 с.
度量标准: 潜伏直方图,错误代码,响应大小,RPS, per-tenant.
Traces:直通式"trace_id" (edge→gateway→service→DB→event/webhook)。
Logs:结构化的,没有PII的"request_id"相关性。
9)没有市中心的发行模式
Blue-Green/Canary带有SLO门和outlier喷射。
Schema-first演变:仅添加字段,适配器用于旧客户端。
Zero-downtime DB迁移:在线DDL,双向转换器。
更改控制:时间表、审核和兼容性注册表。
10)目录和登记册
API/版本注册表
sql
CREATE TABLE api_registry(
name TEXT, kind TEXT, -- rest grpc events webhook version TEXT, status TEXT, -- active canary deprecated retired slo JSONB, owner TEXT,
PRIMARY KEY (name, version)
);
事件目录
sql
CREATE TABLE event_catalog(
topic TEXT PRIMARY KEY,
schema_version TEXT,
qos TEXT,
retention_days INT,
pii BOOLEAN DEFAULT false
);
钥匙/漏洞
sql
CREATE TABLE api_keys(
key_id TEXT PRIMARY KEY,
org_id TEXT, scopes TEXT[], status TEXT, expires_at TIMESTAMPTZ
);
11)测试和合同合规性
合同测试:客户生成、方桉验证、negative-_cases。
重复事件测试:对重复/重新排序的抵抗力。
Chaos/Lat测试:流失/抖动注射,缓慢排气。
安全测试:webhook签名,键轮换,重复攻击。
性能配置文件:SLA尖峰,"热门"路线,DA/依赖桥。
12)接口示例
Webhooks(签名和转发)
yaml webhooks:
deliveries:
retry:
attempts: 5 backoff_ms: [200, 800, 1600, 3200, 6400]
jitter: true signature:
alg: "HMAC-SHA256"
header: "X-ECO-Signature"
timestamp_header: "X-ECO-Timestamp"
tolerance_s: 300
GraphQL(聚合读取、仅读)
graphql type Query {
payouts(status: [Status!], first: Int!, after: String): PayoutConnection!
}
gRPC(事件流)
proto service EventStream {
rpc Subscribe(SubscribeRequest) returns (stream Event);
}
13)流程和角色
Owner API-合同/版本/SLO/配额。
安全-密钥/签名/审计/DLP。
SRE/Ops-dashbords,alerts,capacity。
Partner Success-onbording, limits, ficheflagi.
合规性-管辖权,制裁,报告。
14)Dashbords
Core API: latency/error/RPS通过路由和触角。
Webhooks: delivery p95, retries, drops,签名。
Events: freshness, lag, consumer health, DLQ.
安全:到期密钥、签名、拒绝请求。
Governance: Active versions/depreceit,合同兼容性。
15)事件剧本
A. p95潜伏期P0的生长
1.包括优先级P0和P2-throttle;2)扩展网关;
2.将部分读取切换到缓存;4)热点路线分析。
B.交付网络手册的下降
1.检查签名/小时移位,2)增加retrai/taymout,
2.启用batchi, 4)暂时切换到子弹尾端。
C.开发合同
1.启用"严格模式"(切断不正确的消息),
2.通知制作人,3)发布适配器,4)后面贴纸,更新linters。
D.钥匙/硫磺损害
1.Revoke/rotate, 2)重新编译webhooks, 3)审核,4)通知合作伙伴。
E.重复/重复爆炸
1.检查Idempotency-Key/TTL,2)放大dedup,3)限制"嘈杂"源。
16)实施支票
1.描述合同(OpenAPI/AsyncAPI/IDL),包括林特和CI。
2.自定义auth (OAuth2/OIDC, mTLS)、webhook签名、密钥旋转。
3.引入配额/QoS/限额,重质保卫和后压。
4.提高可观察性:SLI/SLO,轨道,dashbords,alertes。
5.组织发布:canary/blue-green, schema-first迁移。
6.运行版本/事件/密钥目录和删除过程。
7.进行chaos/perf/安全测试,发布花花公子。
8.定期审核数据最小化和法规遵从性。
17)词汇表
合同第一-通过代码的正式合同来设计API。
Idempotency-Key是使操作重复安全的关键。
AsyncAPI是事件接口的规范。
QoS是服务质量/优先级类别。
DLQ是问题消息的"死队列"。
错误预算烧伤-相对于SLO的"燃烧"错误预算率。
底线:生态系统API不是一组残局,而是可管理的合同,安全,配额和可观察性系统。遵循此框架,生态系统可以快速集成,可预测的SLO和安全的演变,而无需从网络层和身份验证到事件流和报告。