GH GambleHub

健康检查机制

1)为什么

健康检查是防止级联故障的第一个障碍:它们正确地将节点从旋转中移出,防止回火风暴,简化退化并加快恢复,同时保持SLO并降低MTTR。


2)基本检查类型

Liveness是"活着"的过程(没有死锁/泄漏/恐慌)。错误→恢复实例。
Readiness-该服务能够通过目标SLO(提升池、高速缓存、正常依赖资源)来服务流量。此错误→从平衡中排除,但不重启。
Startup-该服务已准备就绪,可以过渡到liveness/readiness(长引导程序,迁移,warmup)。防止过早重启。
深度健康(域特异性):业务不变性(利率通过端到端,存款从活动的PSP授权)。用于降级信号,但不用于立即重新启动。
外部/合成:外部活动ping (API路径,前脚本,PSP/KYC)-测量用户可用性。


3)样品设计: 一般规则

1.廉价的生活:不适合外部依赖;检查事件循环,heap/FD,看门狗。
2.通过SLO进行准备:检查维护所需的本地资源(DB池、高速缓存、限制)。外部依赖关系-通过非锁定"can-serve?"信号。
3.Latency-budget:每个样本都有自己的SLA(例如≤100 -200 ms);超过时-"degraded",但不是5xx on liveness。
4.Backoff&Jitter:采样间隔5-15秒,超时1-2秒,具有指数误差延迟,以避免同步风暴。
5.滞后:N成功的/错误的响应以改变状态(例如,"successThreshold=2","failureThreshold=3")。
6.转化:"/healthz","/readyz","/startupz"的端点稳定;"/health/……"之下的深层检查,并带有命名的检查。
7.没有秘密和PII:答桉只是状态和短代码。

8.Explainability: JSON附有子检查列表:"{"status":"degraded", checks": [{"name":"db", ok": true", latencyMs":18}{"name":"psp。eu","ok":false,"reason":"timeout"}]}`.


4)按层进行深度检查的示例

4.1 DB/缓存/存储

DB:对读副本和池检查进行简短的"SELECT 1"事务处理;latency/replic-lag阈值。
缓存:"GET"/"SET"测试密钥+命中率后卫(低命中→警告)。
对象存储:现有对象的HEAD(无下载)。

4.2个队列/流媒体

经纪人:本地分区内ping-topic publish+consume;consumer-lag阈值。
DLQ:窗口后面的死信中没有消息激增。

4.3外部提供商(PSP/KYC/AML)

PSP:轻量级auth-probe(非金钱),合同/证书/配额验证;如果没有安全样本-使用代理指标(银行/GEO 5-10分钟授权成功)。
KYC/AML:健康API和SLA队列;降解-切换到备用流/提供程序。

4.4个API/前端

合成:EU/LATAM/APAC中的交易路径(登录→存款启动→"沙子"费率)。
RUM信号:JS/HTTP和LCP/TTFB误差比例是"外部"触发器。


5)与平台集成

5.1 Kubernetes / Cloud

"startupProbe"保护引导程序(迁移/缓存扭曲)。
"livenessProbe"是极简主义的;"readinessProbe"考虑了池/缓存/本地队列。

Параметры: `initialDelaySeconds`, `periodSeconds`, `timeoutSeconds`, `failureThreshold`, `successThreshold`.

PodDisruptionBudget和maxUnavailable,考虑到准备就绪。
HPA/KEDA:按队列/SLI缩放;准备就绪会影响路由。

5.2 平衡器/网关/mesh

L7级健康路线(HTTP 200/429/503 semantics)。
Outlier检测(envoy/mesh):从池中取出错误率/后置注释。
电路断路器:同时查询/依赖连接限制,与健康信号集成。

5.3自动滑行和退化

Readiness=FALSE →流量被删除,但pod还活着(可能晒黑)。
Deep-degrade (PSP) → graceful模式的特征标记(例如,暂时隐藏付款方法,启用待机室)。


6)超时和休假政策

超时<SLO预算:同步依赖性的"timeout=min(⅓ p99,1-2s)"。
相等性:retrais强制性;使用idempotency-keys。
指数backoff+jitter:防止同步轴效应。
Retray预算:caps per-request/tenant,保护"retry-storms"。


7)状态信号与警报

绿色/黄色/红色:服务行列上的摘要状态。
SLO上的烧伤率差:快速(1小时)和缓慢(6-24小时)。
Correlation-hints:关于发行/幻灯片/计划工作的标记。
Auto-actions:在"红色"深度检查中,启用后退提供程序,提高轨道采样。


8) iGaming的智能策略

薪资准备就绪:投注服务的可用性考虑到PSP 路由器的状态和银行/GEO的限制。
Odds/Lines publishing: Publischer 的就绪性取决于按线路来源和分发到缓存/edge的时间顺序的摘要。
Tournament spikes:更激进的outlier检测和等待室的临时策略。


9)反模式

进入DB/PSP的Liveness →在外部问题上大规模重启。
单个"通用"健康端口,不分开startup/readiness/liveness。
强硬的超时没有后卫/喷气机→暴风雨。
缺乏滞后→阻塞路由。
触发重启的深度检查(其目标是诊断和路由,不重新启动)。
在健康残局中隐藏5xx(掩盖真实状态)。


10)接口模板

/startupz → `200 OK {"uptimeSec":..., "version":"..."}`

检查:init脚本,迁移完成,密钥和configs加载。

/healthz (liveness) → `200 OK {"heapOk":true,"fdOk":true,"eventLoop":"ok"}`

检查:事件周期,过程资源,没有恐慌/国旗。

/readyz (readiness) →

`200 OK/503 {"canServe":true,"db":{"ok":true,"latencyMs":12},"cache":{"ok":true},"queue":{"ok":true,"lag":0},"localQuota":{"ok":true}}`

/health/payments (deep) →

`200/206/503 {"psp.eu":{"ok":false,"reason":"timeout"}, "psp.alt":{"ok":true}, "routerMode":"failover"}`


11)健康循环质量指标(KPI/KRI)

从"NotReady"到"Ready"(warmup-SLO)的发布时间。
"flapping" readiness per服务的频率。
错误重新安排的pod (root-cause-外部依赖)的百分比。
MTTR事件,其中健康机制发挥了作用(之前/之后)。
不涉及呼叫的自动失误/功能分类的比例。
合成vs RUM(假阳性/失误)的准确性。


12)实施路线图(4-8周)

奈德。1-2:关键路径清单;分离起点/liveness/准备;引入JSON反应与下检查和滞后。
奈德。3-4:添加深度检查:DB/缓存/经纪人;2-3 GEO中用于登录的合成/存款/投注;在/mesh网关中启用outlier检测。
奈德。5–6: payment-aware readiness и PSP-fallback;前面的服务室;通过拉格/队列进行自动滑行;按燃烧率计算。
奈德。7-8: chaos days(禁用PSP/DB复制副本),backoff/jitter检查;超时,PDB;KPI报告和调整。


13)文物

健康规格(按服务):检查清单、时间预算、滞后、红色状态活动。

Runbooks: "Readiness=FALSE:我们做什么?","PSP-fallback:步骤和返回标准。"

路由政策:无处检测规则,电路断路器,触发阈值。
合成剧本:剧本和地理,SLO合成,时间表。
Release Gate:红色深度检查关键依赖项的发布块。


结果

精心设计的健康检查回路是一个分层的信号系统:易于生存以实现过程的可行性,可满足交通需求的就绪能力,可安全启动的启动以及用于托管降解和路由的特定于域的深度检查。结合自动缓解,断路器,合成和SLO评分,它降低了级联故障的风险,减少了MTTR,并稳定了iGaming平台的业务关键路径。

Contact

联系我们

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

开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

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

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