GH GambleHub

提供商适配器

提供商适配器是一个隔离的集成层(反腐败层,ACL),可将提供商的外部合同(游戏提供商,支付网关,KYC/AML,风险评分,符号化等)转换为内部域语言并返回。它保护域免受不稳定API,网络异常,电路演变和安全策略的影响。

主要目标:

1.Decupling:没有"原始"外部付费进入内核。

2.可靠性:管理故障(timeouts、retries、DLQ、circuit breaker)。

3.一致性:等效性,按键顺序,事务性加速。

4.操作:度量标准,示踪剂,限制,阴极绝缘和居住。

1)适配器责任区

合同:外部计划/结束说明;mapping →内部命令/事件。
运输:REST/gRPC/WebSocket/SQS/Kafka/SFTP;连接池,backpressure。
安全:mTLS,OAuth2,HMAC,按电话/区域的密钥/证书,秘密轮换。
可靠性:Taymauts,回程夹具,电路断路器,重复数据消除。
相似性:"Idempotency-Key"/"request_id",答案/状态的存储。
可观察性:SLO度量,结构逻辑,跟踪。
转化:支持多个版本的电路/残局。
运营:ficheflagi,金丝雀发行,沙箱,认证。

2)应用地点(上下文示例)

游戏/RGS:开始/结束回合,投注/获胜,会话令牌,提供商状态。
Payments/PSP:存款/收取,webhooks状态,充电器,3-D安全。
KYC/AML:验证,制裁/RER验证,交易监控。
Risk/Fraud:得分,触发器,锁定建议。
Comms: e-mail/SMS/push,邮寄限制,模板。

每种类型都有自己的活动状态机和SLA-适配器必须使其正常化。

3)合同和mapping(内部↔外部)

原则:
  • 在适配器内键入Published Language,从不向外拖动ISP字段。
  • 所有消息均带有"tenant_id","region","provider_id","operation_id"和"version_ts"。
  • 通过映射器支持多个版本的外部电路。
yaml mapping:
provider: "AcmeRGS"
version: "v3"
inbound:
SpinResultV3 -> Round. Resulted
BonusWinV3  -> Bonus. Wagered outbound:
StartRound  -> POST /v3/sessions/{id}/start
Stake    -> POST /v3/spins compat:
accepts: ["v2","v3"]
emits:  ["v3"]

4)相似性和顺序

请求de-dup:'Idempotency-Key:<查询中的operation_id>';TTL的"(op_id →最终状态/回应)"。
Webhook de-dup:表格'inbox (provider, event_id)'作为PK。
按键顺序:通过"aggregate_id"(例如"round_id"或"psp_tx_id")对调用和处理进行序列化。
Outbox/Inboxing:在传送带的两边进行事务性加速。

5)可靠性: taymouts, retrais, circuit breaker

Taymauts:短客户端侧面(p95方向),分别用于connect/read。
Retrai:仅在retryable(5xx/timeout/429),指数backoff+full jitter,尝试限制和总截止日期。
Circuit Breaker:当错误/潜伏期增加时打开;graceful degradation(例如,禁用次要RGS fici,放置"等待结果")。
DLQ:具有丰富元信息的"有毒"消息,安全稀有。

yaml reliability:
timeout_ms:
connect: 1000 read:  1500 retry:
max_attempts: 6 initial_backoff_ms: 200 max_backoff_ms: 8000 jitter: full retry_on: [TIMEOUT, 5xx, 429]
circuit_breaker:
failure_rate_threshold: 20%   # за окно slow_call_threshold_ms: 1500 half_open_max_calls: 10

6)价格限制,配额,竞争力

遵守提供商的限制(RPS, burst, concurency)。
实施per tenant WFQ/DRR (fairness),以便"嘈杂"的客户不会吃掉预算。
尊重"Retry-After"/"X-RateLimit-头条新闻。
Prodewser上的内部队列+backpressure。

7)安全性和合规性

运输:mTLS,TLS 1。2+,最新的cipher套房,尽可能获得证书。
身份验证:OAuth2 client-credentials/MTLS,HMAC(签名的身体哈希+timestamp),API密钥。
PII最小化:只有必要的字段;log和DLQ中的伪装/编辑。
保密:KMS/HashiCorp Vault,自动旋转,per tenant/region隔离。
合规性:用于PSP的PCI DSS,代币存储而不是PAN,GDPR/本地数据法。

8)多特南特和多区域

每个特南特/地区的密钥/尾端配置。
数据驻留:呼叫来自"家庭"地区;跨区域-仅聚合。
隔离:本机连接池和per tenant限制。

yaml tenants:
T1:
region: eu-central provider_keys:
acme_rgs: { client_id: "...", cert_ref: "vault://..." }
psp_foo: { hmac_key_ref: "kms://..." }
endpoints:
acme_rgs: "https://eu. api. acme-rgs. com"
psp_foo: "https://eu. api. psp-foo. com"
T2:
region: sa-east
...

9)可观察性: 度量,徽标,示意

度量标准:
  • 按类别分列的成功/错误(2xx/4xx/5xx/timeout/429)。
  • p50/p95/p99方法延迟。
  • 触发率极限,breaker打开/关闭,DLQ-rate,redrive-success。
  • 结构逻辑是:"tenant_id","provider_id","operation_id","endpoint","status","attempt","backoff_ms"。
  • Tracing:单个"trace_id",演唱"serialize → send → receive → map → publish",标签"schema_version","region"。

10)Version和ficheflagi

平行维护v1/v2外部合同;迁徙是金丝雀/tenant。
提供商的任何新幻灯片都在旗帜后面;不发布切换。
进化条约:增益第一,严格验证方案(JSON Schema/Proto)。

11)花花公子(runbooks)

1.429冲击/极限:打开全局trottling,尊重"Retry-After",在tenant之间重新分配窗口。
2.Taymauts的增长:减少混乱,小心翼翼地增加taymauts,打开断路器,包括菲奇退化。
3.Schema mismatch:冷冻红土,启用兼容的mapper,执行backfill/重新处理。
4.Flap webhuks:转到拉动/重新启动模式,应用inbox dedup。
5.提供商发生的事件:切换到沙箱/备份DC(如果有),激活"延迟"操作。

12)测试

合同测试:生产者/消费者对固定供应商的伪造。
混沌测试:延迟,下沉,订单外出,复制,部分响应,连接中断。
表演:爆料压力;p95/p99测量,breaker行为。
相同性:重复相同的"operation_id"不会产生其他效果。
E2E在沙箱中:快乐路径/chargeback/争议/取消/修复脚本。

13)实现选项(部署模式)

独立服务适配器:+隔离,独立发行版;−。
Sidecar/插件:+呼叫本地性;−更难控制版本。
库:+只是嵌入;−高配对和杂种版本。

建议:具有清晰API及其发布周期的服务适配器。

14) Adapter API示例(伪)

http
POST /adapters/psp/authorize
Headers:
X-Tenant: T1
Idempotency-Key: op-uuid
Body:
{ "amount":"10. 00","currency":"EUR","method":"card","card_token":"tok_..." }

→ 202 Accepted
{
"operation_id":"op-uuid",
"status":"PENDING",
"as_of":"2025-10-31T12:00:00Z"
}
提供商的Webhook →适配器→内核:
  • Webhook带有"provider_event_id" → "inbox"(PK在"(provider,event_id)"上)→ mapping → "PaymentAuthorized"域事件。

15)典型错误

将"原始"外部电路拖入域→紧密的连通性和昂贵的迁移。
缺乏同位素和inbox/outbox →效果和幻影状态。
没有jitter/限值的 retrai →暴风雨和禁令的限值。
唯一没有公平的全球池→一个特南特"放下"所有人。
没有PII 修订版/ID的日志→无法调查事件和合规风险。
没有金丝雀/旗帜→释放会立即打破所有人。
忽略提供商的"Retry-After"和服务时间表。

16)售前支票清单

  • 模仿外部方案→内部语言;版本和向后兼容性。
  • 查询/webhook的可取性("operation_id","inbox")。
  • Taymauts,带有全套夹具的背包,巡回赛断路器,DLQ和安全重做。
[] Rate limits и fairness per tenant;尊重"Retry-After"。
  • mTLS/OAuth/HMAC,秘密轮换,PII最小化,访问审核。
  • 区域隔离和数据驻留;configi per tenant/region。
  • p95/p99度量标准,类别错误,breaker/429/DLQ-rate;跟踪。
  • 沙盒和合同测试;金丝雀rollout和ficheflagi。
  • 事件花花公子和电话培训。
  • 文档:SLA,限制,模式,进化过程。

结论

提供商适配器是您域与外部世界之间的盾牌和翻译器。具有等效性,错误控制和可观察性的强大ACL使集成可预测,降低了提供商的更改成本,并防止了"链路故障"。将适配器设计为独立、可管理的组件-您的"外部环境"将停止破坏内部体系结构。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

Telegram
@Gamble_GC
开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。