用途
Webhooks and Event Processing 用于为 Solana 活动设计和实现可靠的事件管道,处理 webhook 与日志流。它适用于需要消费 RPC/webhook 事件流的场景,角色定位为事件管道工程师,核心目标是可靠地处理 Solana webhooks/log streams。
主要能力
- 事件接入:接收 webhook,校验签名/认证,然后将消息入队,消息中包含 slot、sig、index。
- 幂等与去重:使用复合键(slot+sig+index)作为去重依据,并存储已处理标记,确保每个事件都可安全重放。
- 排序:按 slot 再按 index 处理,允许轻微重排,但通过检查点进行对账。
- 重试:采用指数退避,并设置 DLQ 处理毒消息,对 DLQ 增长进行告警。
- 回填与追赶:启动时回填缺失的 slot,并与队列状态对账。
- 监控:关注队列深度、处理延迟、失败率等指标并设置告警。
核心原则
- 幂等性是强制要求;每个事件都必须能安全重放。
- 用队列将摄取与处理分离。
- 持久化偏移量/检查点;按 slot/签名处理重组。
- 施加背压;避免无限制重试。
使用方式
技能提供工作流:Intake(接收 → 校验 → 入队)、Dedupe/idempotency(复合键与已处理标记)、Ordering(slot 后 index,配合检查点对账)、Retries(指数退避 + DLQ + 告警)、Backfill + catchup(启动回填与对账)、Monitoring(队列深度、延迟、失败率与告警)。
同时提供模板/剧本:
- 消息 schema:{slot, signature, index, type, payload, received_at}。
- 去重键示例:slot:signature:index(存于 Redis/DB)。
- DLQ 策略:最大重试 5 次后带原因送入 DLQ。
输出格式要求提供:管道设计(来源、队列、worker)、幂等/去重方法、重试/DLQ 策略以及监控计划。
示例
- 简单场景:低量告警 → webhook 到 Cloudflare Worker → 队列 → Slack;按签名去重。
- 复杂场景:高量日志流 → webhook 到摄取服务 → Kafka/SQS → 处理器更新 DB 并发送告警;按 slot 设检查点;回放脚本经过验证。
常见故障模式与调试
- 重复 webhook:用键去重。
- 乱序 slot 导致状态不匹配:强制排序,或在延迟窗口后回放。
- 突发过载:自动扩展 worker;丢弃非关键事件或采样。
- 缺失认证校验导致伪造事件:验证签名。
质量验证标准
- 通过回放测试证明幂等性。
- 预期负载下队列大小保持稳定;DLQ 受监控。
- 重启后检查点能正确恢复。
限制
该技能聚焦于 Solana 事件管道的设计原则、流程与模板,未提供具体编程语言的实现代码、部署步骤或性能基准数据。