×
¥
查看详情

异常分类表

异常类型 描述 典型场景(结合模块) 处理优先级
业务异常(可预期) 规则触发类、前置条件不满足,不应重试 风控拒绝(风控校验);余额不足(余额与账务);订单状态不合法或重复下单(交易撮合/订单路由);权限不足/授权过期(用户授权与会话)
业务一致性异常(半成功/悬挂) 业务步骤部分完成,状态不一致,需补偿/对账 外部通道超时或回调丢失导致订单悬挂(支付通道聚合);跨服务Saga中某步失败(交易撮合/清结算/账务);主从延迟导致读到旧状态(余额与账务/清结算);幂等冲突(消息总线/支付回调) 最高
技术异常(可恢复) 暂时性、抖动类,具备重试或切换通道价值 第三方接口超时/短时5xx(支付通道聚合);连接池耗尽、瞬时CPU飙高(任意服务);缓存击穿/穿透(缓存层);消息积压(异步消息总线)
技术异常(不可恢复) 语义或契约错误,重试无意义 协议/字段不兼容、非法入参、序列化失败(API网关/支付通道);Schema不匹配导致写失败(账务/清结算)
基础设施异常 平台/网络/存储故障引起的系统级异常 节点宕机、网络分区、磁盘/队列故障;熔断误触发、限流配置异常(API网关与限流);发布/回滚失败(灰度发布)
控制面异常(治理/配置) 策略/配置错误导致级联影响 熔断策略过严;限流阈值设错;灰度规则误配(API网关/通道聚合/发布平台)
安全与合规异常 审计、合规链路异常,需强一致与不可篡改 审计日志写入失败/延迟;WORM存储不可用;加密/解密失败;脱敏失效(审计与合规模块)
运维变更异常 变更引发服务不稳定 灰度回滚失败、版本不兼容、配置热更新失败(全链路)
客户体验降级类异常 可服务但体验受损,应优雅降级 单通道不可用需切换;部分功能关闭(支付通道聚合/风控/撮合)

处理逻辑建议

  • 统一异常治理框架(跨域标准)

    • 分类与标注:为每一次异常打上维度标签:domain(撮合/路由/风控/账务/通道/网关/消息/审计)、type(业务/一致性/技术/基础设施/合规)、severity(S0-S3)、retriable(Y/N)、idempotent(Y/N)、origin(caller/callee/external)。
    • 错误码规范:<系统>-<域>-<类型>-<四位编号>,例如:TRD-PMT-CONSIST-0101(交易-支付-一致性-悬挂)。在跨服务传播时只暴露域内语义与可操作建议,不泄露底层实现细节。
    • 边界捕获点:统一在以下边界强制捕获并封装异常
      • 入站:API网关、异步消费者、外部回调入口
      • 出站:调用第三方通道、跨服务RPC、消息发送
      • 数据:缓存访问、数据库/账本写入、审计写入
    • 传播策略:仅在域边界向上抛“语义化业务异常或一致性异常”;技术细节在域内兜底并转译为技术上下文字段(便于日志与告警),对外返回稳定错误码与可恢复建议。
  • 超时与重试预算(防重试风暴)

    • 端到端超时预算分配(网关→路由/风控→撮合→账务/通道):例如整体3s预算,通道查询1.2s,账务写入0.8s,剩余用于业务逻辑与网络;任何调用必须在本地超时小于上游剩余预算。
    • 重试策略:仅对“可恢复技术异常”执行有限次重试;指数退避+抖动;禁止并发重试;链路上只允许一处重试(优先靠近调用方最近一跳)。
    • 幂等保护:所有可重试操作必须要求幂等键(如orderId、idempotencyKey、账务流水号+步骤);消费侧去重表/缓存+TTL;将幂等冲突显式转为业务一致性异常进行补偿。
  • 业务一致性与补偿(Saga/TCC)

    • 核心状态机拆分:下单→风控→余额冻结→支付下发→支付确认→账务记账→清结算。每一步定义“可确认Confirm/可撤销Cancel”,并规定补偿时限与幂等键。
    • Outbox/事务消息:在账务/订单状态变更处使用出站消息表+定投递,确保状态与事件一致;失败进入重试队列,达到阈值转人工工单。
    • 回查与对账:对外部通道定义“回调超时阈值”(如60-120秒)后自动启动回查;日内对账+日终全量对账;任何“悬挂订单”进入Watchdog队列,按优先级加急处理并告警。
    • 半成功补偿策略:冻结成功但支付失败→自动解冻;支付成功但确认失败→通过通道回查确认后补记账;跨服务失败→按逆序补偿(保证每步补偿幂等)。
  • 外部通道异常(超时/回调丢失)

    • 多通道聚合+健康度:维护通道健康评分(成功率、P95、错误类型);路由优先选择健康通道;健康急剧下降触发降级或切换。
    • 回调幂等:回调验签与重放保护;以交易号+回调序号去重;丢失回调通过“回查计划任务/事件驱动”补齐;把“悬挂”转为“待回查”中间态,限制对外可见状态。
    • 超时即止损:出站超时立即标记为“未知/待回查”,禁止继续向下游扩散;仅由守护流程处理,避免多点并发重试。
  • 消息重复/乱序与消费幂等

    • 顺序与分片:按业务键(orderId或账户维度)分片与串行化,避免同key乱序。
    • 消费者幂等:处理前检查去重表/缓存;幂等失败转“一致性异常”,由补偿流程统一处理;毒消息进入死信队列并报警。
    • 重试隔离:业务重试(小次数、短间隔)与平台重试(更长间隔)分层,防止同源放大。
  • 缓存穿透/击穿/雪崩

    • 穿透:引入校验/过滤层(如存在性标记),对明显非法Key直接短路。
    • 击穿:热点Key加互斥刷新与请求合并;短TTL+后台预热;读失败优先返回旧值(Stale-While-Revalidate)。
    • 雪崩:不同步过期时间,随机抖动;遇到底层受压,限流直达数据库的透传比例。
  • 主从延迟与读写一致性

    • 强一致路径:账务、支付确认、清结算等关键查询强制读主;提交后带版本戳/时间界限再读。
    • 最终一致路径:非关键查询允许读从并标注“可能陈旧”;对用户可见页面提供“刷新重试”。
  • 熔断/限流与故障隔离

    • 舱壁隔离:按通道、租户、功能面拆分线程池/连接池;单舱壁故障不影响全局。
    • 熔断误触发防抖:采用错误率+延迟+并发拒绝等多指标;半开探测采用小样本;提供人工强制开/关开关与回退策略。
    • 限流分层:网关限流(租户/用户/接口/通道维度)→服务内部自保护限流(CPU/队列长度)→数据库/缓存防护;被限流请求返回“可重试建议+重试-不早于时间”。
  • 灰度发布与回滚

    • 金丝雀策略:先小流量、放大前必须过SLO阈值与异常率检查;出现异常自动回退并冻结配置。
    • 可回滚资产:版本/配置/风控规则/限流阈值均保留快照;回滚失败自动切换到蓝绿备用环境。
    • 发布前演练:支付通道降级、回调丢失、消息堆积等场景在预生产演练。
  • 安全与合规

    • 审计不可丢:审计写入失败时业务可继续但必须进入“补写队列+强告警”,定时补齐;严禁降级为“丢弃”。
    • 脱敏与最小化:日志与事件仅保留必要字段;所有敏感标识(userId/卡号/证件)按规范脱敏并加标签。
  • 值班与恢复

    • 等级与时限:S0(支付/记账中断)、S1(大面积延迟/异常率突增)、S2(局部通道异常/回调丢失率升高)、S3(单租户问题);规定确认、缓解、恢复、回顾时限。
    • Runbook:每类高优先级异常附“判定→遏制→恢复→补偿→验证”步骤清单与回指日志/指标面板。

日志策略

  • 日志级别与用途

    • TRACE:仅用于问题深挖,生产默认关闭,随采样临时开启。
    • DEBUG:灰度/排障短时开启,采样比例严格限制;禁止记录敏感数据。
    • INFO:关键业务里程碑事件(下单、冻结、通道请求发起、确认、记账成功、清结算完成、补偿完成、回滚完成)。
    • WARN:可恢复异常、降级、限流/熔断触发、读取旧值返回、回调延迟但仍在阈值内。
    • ERROR:不可恢复异常、补偿失败、对账差错、悬挂订单确认失败、审计写入失败但已入补写队列。
    • FATAL:系统不可用、账本不可写、审计不可写且无法补写、核心依赖瘫痪。
    • AUDIT:合规模块专用通道,独立存储策略与不可篡改保证。
  • 结构化JSON格式规范(关键字段)

    • 标识与路由:timestamp、service、module、env、region、host、pid、level、event_name、event_type(business/tech/infra/audit)
    • 关联:traceId、spanId、parentSpanId、orderId、userId_masked、accountId_masked、idempotencyKey、sagaId、step
    • 业务上下文:channel、paymentMethod、amount、currency、state_from、state_to、attempt、retryable、latency_ms、timeout_budget_ms
    • 错误语义:error_code、error_class(validation/timeout/circuit_open/consistency/format/...)、root_cause、stack_suppressed(仅摘要)
    • 决策与策略:rate_limited(true/false)、circuit_state(closed/open/half-open)、fallback_taken、degraded_mode、compensation_taken
    • 合规标签:pii(redacted/none)、audit_chain_id、immutability_proof(哈希/链标识)
    • 注意:严禁记录密钥/令牌/完整卡号/完整证件号;对userId等采用掩码或哈希+盐;金额与状态为审计必要字段需准确。
  • 采样与降噪

    • 成功路径:按通用路径低比例采样;高价值路径(首单、异常回补、跨币种、大额)全量保留。
    • 失败路径:ERROR/FATAL 100%保留;WARN按来源模块与速率限流采样(避免告警风暴)。
    • 动态采样:当异常率上升时自动提升相关事件采样比例;恢复后回落。
    • 重复压缩:同一orderId在短时间内重复相同WARN/ERROR合并计数。
  • 存储与检索

    • 分层与留存:交易运行日志与审计日志分层存储;热数据7天(高性能检索);冷数据180天分区归档。
    • 索引与分区:按时间分区+service/module;建立traceId、orderId、userId_masked、channel、error_code、status_code、event_name、circuit_state等索引。
    • 审计不可篡改:采用不可变写入策略与链式校验;全量加密留存;访问需最小权限与审计追踪。
    • 脱敏与访问控制:脱敏在采集侧完成;不同角色(开发/运维/合规)访问视图隔离。
    • 性能目标:最近7天查询P95<3s;按索引字段组合过滤;对大扫描的历史查询使用汇总索引/预聚合视图。
  • 指标与异常类别映射(由日志与Tracing提取)

    • 交易SLO相关
      • 下单成功率(2xx+业务成功码)/总下单请求
      • 支付完成端到端延迟(下单→支付确认)P50/P95/P99
      • 悬挂订单率(状态“待回查”>阈值)
    • 一致性与补偿
      • Saga补偿触发率、补偿成功率、超时补偿数
      • 幂等冲突次数、去重命中率
      • 对账差错笔数与金额
    • 技术稳定性
      • 外部通道超时率/5xx率/健康分
      • 缓存命中率、击穿次数、穿透拒绝次数
      • 主从延迟分布与因延迟导致读主次数
      • 熔断开启/半开/关闭次数、限流拒绝数
      • 重试次数分布、重试放大率(下游1次失败引发的上游重试总数)
    • 合规与审计
      • 审计写入延迟、失败率、补写积压深度
      • 脱敏合规校验失败次数
  • 告警规则与联动(分级通知与抑制)

    • SLO守护
      • 下单成功率低于阈值(如近5分钟<99.9%)S1,连续15分钟S0
      • 支付完成P95超过阈值(如>60s)且并发升高触发S1
    • 一致性
      • 悬挂订单率>基线×N(分通道/租户)S1,并自动触发回查批次放大与通道降级
      • Saga补偿失败或超时堆积S1;一键切换“强一致模式”(强制读主/关闭非关键功能)
    • 技术
      • 外部通道超时率/5xx率快速攀升S1,联动打开熔断并切换健康通道
      • 熔断半开恢复失败循环S1,提示人工干预
      • 重试风暴(单位时间重试量/原始请求量>阈值)S1,自动下调重试上限并扩大限流
      • 缓存击穿异常(同key锁等待>阈值)WARN/S2
    • 合规
      • 审计写入失败且补写队列超过阈值S1;不可篡改校验失败S0
    • 变更与灰度
      • 灰度版本异常率高于稳定版本×阈值S1,自动回滚并冻结扩容
    • 通知与升级
      • 支持短信/电话/IM分级;S0需5分钟内电话升级到L2/L3;未确认自动升级;告警去重与静默窗口避免风暴;所有告警附带Runbook链接与关键面板跳转。
  • 可观测性一体化

    • 日志-指标-追踪三方关联:日志记录traceId/spanId;Tracing中标记error_code与业务关键字段;指标告警中附带最近错误日志样本与链路拓扑。
    • 事故回放:关键事件(下单、冻结、通道请求、确认、记账、补偿)形成业务时间线,支持按orderId一键回放定位。
  • 性能与可靠性控制

    • 非阻塞写入与背压:日志出口阻塞时优先丢弃DEBUG/TRACE,确保ERROR/AUDIT不丢;审计通道独立队列与重试策略。
    • 日志体积上限:单条日志大小限制;大对象(报文)仅记录哈希与摘要;需要时将原始报文安全落地到隔离存储并在日志中引用指纹。
    • 配置治理:采样、级别、敏感字段白/黑名单、索引策略均可在线热更新且有审计轨迹。

以上策略以“快速失败与熔断、数据补偿与一致性保证、故障隔离与限流、优雅降级与功能开关”为目标,建立跨模块一致的异常治理与日志追踪体系,确保金融交易系统在高压与异常条件下依旧可用、可控、可审计、可恢复。

异常分类表

异常类型 描述 典型场景 处理优先级
基础设施异常 连接资源耗尽、握手超时、线程/连接池饱和导致无法建立会话 海量设备集中上线、网关突发流量、负载均衡漂移 P0
基础设施异常 边缘节点断网、网络抖动引发重连风暴 区域性链路故障、ISP抖动、数据中心切换 P0
基础设施异常 时序库写入热点与分区倾斜,导致高延迟或写入失败 单租户爆量写入、时间分区选取不当、标签基数爆炸 P0
基础设施异常 存储/消息中间件不可用或抖动 对象存储延迟、消息队列积压、索引集群压力 P0
技术异常 设备时钟漂移导致签名校验失败 设备RTC偏差、NTP不可达、长离线后上线 P1
技术异常 规则引擎函数执行超时/内存超限 用户函数阻塞、外部依赖慢、无限循环 P1
技术异常 消息乱序/重复及幂等失败 设备重发、QoS语义差异、网络抖动 P1
技术异常 设备影子版本冲突、写并发冲突 多端同时更新影子、重放旧版本 P1
技术异常 边云同步断点续传状态损坏 续传token/offset不一致、会话丢失 P2
业务异常 固件升级中断、校验失败、失败重试 电量不足/弱网、分片校验失败、镜像损坏 P1
业务异常 多租户隔离策略失当导致噪声告警 共享规则误匹配、租户阈值配置不当 P2
业务异常 设备侧不支持的能力/协议版本不匹配 旧固件、灰度策略漏配 P2

说明:

  • P0:影响面广、用户明显感知,需要自动化隔离与快速恢复,触发值班。
  • P1:对部分租户/功能造成降级,需快速处理并允许短时重试/回退。
  • P2:局部或长尾问题,优先记录、限速与引导修复。

处理逻辑建议

本节按“捕获-封装-传递-恢复”四步,结合各关键模块给出可执行策略。

  1. 通用错误模型与边界
  • 捕获
    • 在模块边界捕获外部输入与跨进程/跨网络调用异常:接入网关、认证服务、消息路由、规则引擎执行器、存储适配层、OTA调度器、边云会话管理器。
    • 为每个外部交互设置明确超时;超过超时以可分类的错误返回(如认证超时、存储写入超时、规则执行超时)。
  • 封装
    • 统一错误分类:BUSINESS、TECHNICAL、INFRA,并细分模块来源与错误家族(如 AUTH.CLOCK_SKEW、GATEWAY.CONN_EXHAUST、TSDB.HOTSPOT)。
    • 标准化错误载荷:timestamp、severity、tenantId、deviceId、region、protocol、messageId/seq、traceId/spanId、retryable(bool)、throttleHint、diagnostics(例如池利用率、分区/分片键、CPU负载)。
    • 敏感字段不落盘;仅存指纹/摘要(例如密钥指纹、固件包ID而非URL带签名串)。
  • 传递
    • 层间只传语义化错误与最小上下文;保留原始cause的摘要与错误码,避免传播底层实现细节。
    • 面向设备返回可理解的可恢复建议(如“重试等待区间”“校时失败需同步时间”),避免透露内部容量信息。
  • 恢复(优先顺序)
    • 快速隔离(限流/熔断/舱壁)→ 退避重试(指数退避+抖动,带最大总时长)→ 降级路径(缓存、近似计算、延迟一致)→ 人工干预入口(工单/Runbook链接)。
  1. 模块化处理策略
  • 接入网关(MQTT/HTTP)

    • 捕获:连接建立、TLS握手、认证前置、发布/订阅、心跳超时、QoS确认。
    • 封装:为每个连接分配connectionId;在每条异常中附带池使用率、当前连接速率、租户配额使用率。
    • 传递:将认证相关错误上报给认证服务调用者;对设备返回通用拒绝码与Retry-After(随机化区间)。
    • 恢复:
      • 连接风暴/资源耗尽:按租户/IP/region设置连接速率令牌桶与并发上限;队列长度达阈值时丢弃新连接(优先丢弃超配租户),对已建立连接提高keepalive以降低频繁短连接。
      • 握手超时:缩短握手阶段超时并快速失败,向设备提供退避区间;开启预认证缓存(短期缓存最近成功令牌/证书校验结果)。
      • 消息重复/乱序:启用每设备有界去重缓存(deviceId+messageId/seq,短TTL),QoS1/2下仅对重复进行幂等确认;路由层按deviceId进行分区以尽量保证设备内有序。
  • 设备认证与密钥管理

    • 捕获:签名失败、证书过期、吊销命中、时间戳超窗。
    • 封装:区分“不可恢复”(密钥吊销/黑名单)与“可恢复”(时钟漂移、网络超时)。
    • 传递:把可恢复类返回网关并提示设备“校时后重试”;对不可恢复类拉黑该会话并记录审计。
    • 恢复:
      • 时钟漂移:配置双向容忍窗口;超出窗口时提供基于挑战的无时钟依赖二次校验;对连续漂移的设备下发“时间同步建议”事件并限频。
      • 令牌签发/校验抖动:使用分布式只读缓存与预热;遇到后端不可用,短期读本地缓存并缩短有效期。
  • 消息路由与多租户隔离

    • 捕获:路由目标不可达、分区拥塞、跨租户路由尝试。
    • 封装:附带分区键、目标队列/主题、租户限额与当期水位。
    • 恢复:
      • 背压:当路由队列积压超阈值,启用分级丢弃策略(先丢弃低优先级/高频心跳的样本化消息)。
      • 隔离:舱壁隔离每租户的队列/线程池/连接池;单租户异常不外溢。
      • 去重:在消息落库或投递给规则引擎前进行二次幂等检查,冲突则转入重复计数并丢弃负载。
  • 规则引擎与流式处理

    • 捕获:用户函数超时/异常、外部调用失败、序列化错误。
    • 封装:记录函数版本、租户、执行预算(CPU/内存/时间)、输入消息id。
    • 恢复:
      • 超时:强制终止执行,输出最小必要结果或回退默认分支;超时任务进入延迟重试队列(幂等要求下限制最大重试次数)。
      • 死信队列:不可恢复或多次重试失败消息进入租户级DLQ,支持批量再处理与回放窗口。
      • 沙箱限额:对每租户规则设置并发上限与内存配额,触发超限则降级到抽样执行或旁路转发。
  • 时序存储

    • 捕获:写入超时、热点分区、标签基数异常、压缩/落盘失败。
    • 封装:携带测量名、分区键、批大小、写放大指标与热点评分。
    • 恢复:
      • 动态分片与键扰动:当检测到热点,临时启用哈希盐或时间桶细分;对异常租户切换到隔离分区。
      • 背压与批量:提升批量写入与压缩阈值,超过阈值对高频指标进行采样或丢弃低价值字段。
      • 限额:对租户/设备设置每秒写入点数上限,超过即丢弃并产生限流事件(非错误计入)。
  • 设备影子

    • 捕获:版本冲突、补丁应用失败、并发写。
    • 恢复:使用条件更新(版本/etag),冲突时返回差异摘要给上游重试;支持最后写入胜利策略的显式开关;为离线设备缓存最新期望态,在线即补发。
  • 固件升级(OTA)

    • 捕获:下载中断、分片校验失败、回滚触发。
    • 恢复:
      • 断点续传:基于会话token与分片偏移恢复;分片校验失败时仅重传失败分片,限制最大重试次数并指数退避。
      • 灰度与熔断:按设备分组分批发布;若批次失败率或下载耗时超过阈值,自动熔断后回滚至上一稳定版本;提供一键紧急停更开关。
      • 能力检测:在任务下发前校验电量/存储/版本依赖,不满足则延期任务而非失败。
  • 边云同步与断点续传

    • 捕获:会话丢失、偏移不一致、带宽不足。
    • 恢复:双向确认偏移,冲突时以较新数据为准并保留冲突摘要;带宽不足时动态降低并发/块大小;断网期间启用本地缓冲与水位保护,水位超限时丢弃低优先级数据。
  1. 专项场景处理要点(从检测到恢复的最小剧本)
  • 海量集中上线
    • 检测:连接建立速率/握手失败率/线程池利用率异常升高。
    • 隔离:分租户/IP速率限制;临时关闭低优先级订阅建立。
    • 恢复:向设备返回随机化Retry-After;扩容接入层或切换备用节点;预热认证缓存。
  • 时钟漂移
    • 检测:AUTH.CLOCK_SKEW占比上升。
    • 缓解:临时扩大时间窗口上限(有边界),引导设备校时;重复命中上报租户侧看板。
  • 重连风暴
    • 检测:断连→重连周期性锯齿、连接建立队列爆满。
    • 缓解:服务端拒绝部分连接并返回退避;对已有会话提高keepalive;对同源IP/租户实施更严格并发上限与短期黑名单。
  • 消息乱序/重复
    • 检测:去重命中率提升、序号回退频繁。
    • 缓解:启用设备内严格序列校验;对跨分区消息采用顺序键路由;重复消息幂等确认不再触发业务。
  • OTA中断
    • 检测:分片失败率/下载耗时超过阈值。
    • 缓解:缩小并发、重试仅失败分片、分批熔断;失败设备自动回滚并延后重试窗口。
  • 规则引擎超时
    • 检测:租户函数P95/P99耗时超标、超时比率上升。
    • 缓解:收紧执行超时;降低并发;回退默认路径;超时消息转DLQ等待再处理。
  • 时序库热点
    • 检测:特定分区写延迟/错误激增、单租户写入占比异常。
    • 缓解:临时哈希扰动/时间桶细分、热点租户转隔离分区并限速;高频指标采样。
  1. 重试、限流、降级统一规范
  • 重试:指数退避(乘数1.5~2.0)、全抖动、最大尝试窗口;仅对明确可恢复错误重试(网络超时、临时不可用)。
  • 限流:按租户/设备/IP/区域多维令牌桶;优先保障控制面(认证、心跳、影子同步)再保障数据面。
  • 降级:优先关闭非关键功能(调试日志、耗时规则、复杂聚合);对心跳/高频指标按采样率记录。
  • 熔断与舱壁:对下游依赖设置熔断器,错误率超阈值打开,半开探测恢复;为租户/功能模块分配独立资源池防雪崩。
  • 幂等:业务关键路径强制携带幂等键(设备消息id/OTA任务id/影子版本);使用短TTL去重缓存与持久化回退。

日志策略

  1. 日志级别与事件分类
  • 级别定义
    • FATAL:不可自愈、全局影响,需立即中断流程并触发高优报警。
    • ERROR:请求失败或数据丢失风险,已启用重试/降级但仍需关注。
    • WARN:可恢复异常或被限流/降级事件。
    • INFO:关键业务里程碑(连接/认证成功、OTA阶段变更、规则执行完成)。
    • DEBUG/TRACE:排障细节,默认关闭,仅在租户/设备维度灰度开启。
  • 事件分类(结构化)
    • gateway.connect/disconnect/auth/publish/subscribe/ack
    • auth.verify/issue/revoke
    • routing.enqueue/dequeue/drop/dedupe
    • rule.exec/start/timeout/fail/dlq
    • tsdb.write/batch/hotspot/retry
    • shadow.update/conflict/resolve
    • ota.plan/chunk/download/verify/rollback
    • sync.session/open/resume/close
  1. 日志格式规范(结构化字段)
  • 必填:ts、level、event、tenantId、deviceId、region、protocol、connectionId、traceId/spanId、sourceModule、errorCode、retryable、latencyMs。
  • 条件:messageId/seq、ruleId/version、firmwareId/chunkIdx、partitionKey/shard、quotaUsage、queueDepth、poolUtilization。
  • 安全与合规:密钥/令牌/账号信息仅记录哈希或掩码;设备位置信息按区域级别聚合;存储加密与传输加密;访问需最小权限与审计。
  1. 存储与索引方案
  • 分区与索引
    • 主分区键:时间分区(按天/小时)+ tenantId;次级键:deviceId。
    • 建立独立索引集:接入网关索引、规则引擎索引,其他模块按功能归档,避免高基数冲突。
    • 字段建索引:tenantId、deviceId、region、event、errorCode、sourceModule、traceId、ota.taskId、ruleId;高基数字段采用关键词化并限制聚合。
  • 热/冷分层与保留周期
    • 热数据:7天在线可检索,支持近实时写入与聚合;高可用副本。
    • 冷数据:90天归档至对象存储,保留同样的结构化格式与必要索引摘要,用于回放与审计。
    • Rollover策略:按时间与索引大小双阈值切分,避免超大分片导致查询抖动。
  • 性能目标
    • 近7天查询:P95<2s。手段:时间范围必选、租户/设备为强过滤条件、预计算关键指标(连接成功率、端到端延迟、OTA成功率)的时序摘要,查询优先命中摘要后再钻取原始日志。
    • 写入:批量提交、压缩与字段规范化,降低写放大;限制DEBUG/TRACE在热层的写入比(例如<5%)。
  1. 采样与降噪
  • 设备心跳与高频指标按租户/设备维度采样(默认1:N,异常窗口自动提升采样率)。
  • 重复/大量相同异常进行聚合日志(errorCode+tenantId+region+5分钟窗口),输出计数与首/末例,降低噪音。
  • 告警抑制:同一租户同一错误在抖动窗口内去重与节流;海量事件触发“风暴模式”,切换到摘要上报。
  1. 检索与多维分析
  • 支持多维过滤:tenantId、deviceId、region、protocol、event、errorCode、connectionId、traceId。
  • 典型查询模板(用于看板与排障)
    • 连接成功率:按tenantId/region聚合gateway.connect结果。
    • 端到端延迟:从接入到时序落库的trace聚合分位数。
    • OTA成功率与耗时:ota.plan→download→verify→complete链路转化。
    • 规则引擎超时率:rule.exec.timeout占比与Top函数。
    • 时序写入错误热力图:tsdb.write.error按分区键/租户分布。
  • 审计与访问控制
    • 对包含tenantId/deviceId等敏感维度的查询记录审计事件(who/when/what)。
    • 管理员查询需二次确认与用途说明留痕。
  1. 告警规则与SLO/自动化联动
  • SLO度量(按租户/区域)
    • 连接成功率:目标≥99.9%(滚动30天),计算=成功连接/连接尝试。
    • 消息端到端延迟:P95≤目标阈值(分协议/区域设定)。
    • OTA成功率:目标≥98%,包含回滚视为失败。
    • 规则引擎超时率:≤1%(可按租户定制)。
    • 时序写入错误率:≤0.1%,写入延迟P95达标。
    • 重连风暴指标:单位时间同设备多次重连比率≤阈值。
  • 告警分级
    • P0:连接成功率跌破阈值持续≥5分钟;端到端延迟P99剧增;写入错误率>阈值且重试无效;索引不可用。
    • P1:规则引擎超时率上升、OTA批次失败率超阈;热点分区持续10分钟以上。
    • P2:单租户噪声告警、异常采样提升。
  • 联动动作(自动化自愈)
    • 触发限流:当握手超时/连接速率超阈值,自动收紧租户/IP的连接令牌桶,返回带抖动的Retry-After。
    • 动态采样:异常窗口自动提升该租户/设备的日志与指标采样率以便排障,窗口结束后回落。
    • 灰度看板联动:当某灰度批次失败率超阈值,自动暂停后续批次、回滚当前批次,并生成问题追踪。
    • 扩缩容建议:根据队列水位/CPU/内存/连接并发生成容量调整建议与变更单草稿。
  • 运行手册集成
    • 每条P0/P1告警附带Runbook链接:定位步骤(查询模板/指标面板)、缓解手段(限流、熔断、切换隔离分区)、回退策略(关闭规则/暂停OTA)。
  1. 数据治理与质量
  • 字段治理:统一字典(tenantId/deviceId/region/event/errorCode等),变更需走兼容流程。
  • 敏感字段脱敏:序列号、IMEI、地理坐标精度降低或掩码;严禁日志中记录密钥/令牌。
  • 数据完整性:端到端采用traceId贯通从接入→规则→存储→回执,全链路丢失率纳入质量指标。
  • 回放与审计:冷存档可按时间/租户回放至隔离环境进行再处理,所有读取操作保留审计记录。

通过以上分层异常管理与日志策略,系统可在海量设备接入与复杂流式场景下实现:快速隔离与自愈、跨租户的强隔离与可观测、可控的重试与降级、以及面向SLO的持续改进。

电商后台系统(订单域)异常处理与日志管理策略

以下策略面向电商后台系统的订单域与相关模块(库存、促销、购物车、支付、搜索、结账编排、营销调度、运营审批),构建分层异常管理与可追踪日志体系,支撑高并发(含秒杀)、一致性与可恢复性目标。


异常分类表

异常类型 子类/域 描述 典型场景 触发条件 影响范围 处理优先级 关键观测指标
业务异常 幂等/重复提交 幂等键设计缺陷导致重复订单 结账提交高并发下重复下单 幂等键缺用户/购物车维度;唯一约束缺失;竞态重试 单笔订单、账务对账 P0 订单重复率、幂等冲突率、重复退款率
业务异常 秒杀超卖/并发冲突 库存扣减竞争导致超卖或死锁 秒杀高峰库存扣减 乐观锁冲突高;分布式锁失效/不释放 活动订单、库存全局 P0 库存负数事件、库存冲突率、等待队列长度
业务异常 优惠叠加错误 规则优先级冲突或不可叠加被叠加 多券叠加、活动重叠 规则快照不一致;计算顺序不稳定 订单价格、赔付风险 P1 价格回滚率、纠错/补偿单量
业务异常 订单拆分异常 子单生成失败或不一致 跨仓/跨区域拆单 事务边界不清;补偿失败 部分订单、配送履约 P1 拆单失败率、补偿重试成功率
业务异常 搜索展示不一致 索引延迟导致上下游不一致 新品/价格变更后搜索未更新 索引延迟、投递丢失 用户体验、转化率 P2 索引滞后时间、DB与索引版本差
技术异常 促销计算超时 规则引擎/外部规则源响应慢 大促多层规则叠加 高复杂度规则;缓存穿透 下单失败、性能退化 P0 规则计算P95、降级次数
技术异常 支付回调丢失 回调未达或处理失败 支付网关回调 回调网络抖动;消费失败未重试 订单状态卡住、对账差异 P0 未完成支付超时数、回调DLQ积压
技术异常 跨区域锁未释放 分布式锁过期/遗留 跨Region库存锁 进程崩溃;网络分区 库存长期占用、吞吐下降 P0 锁持有时长P99、孤儿锁数量
技术异常 限流不均衡 某分片或实例被压垮 流量突刺/倾斜 公平性策略缺失 局部雪崩 P1 实例负载方差、拒绝率
技术异常 日志/追踪上下文丢失 链路追踪断裂 异步/批处理链路 上下文未传递/未采样 故障排查困难 P2 无traceId日志占比
基础设施异常 缓存/消息/DB背压 依赖中间件抖动 秒杀/大促峰值 连接池耗尽;队列堆积 全链路降速/错误放大 P0 队列滞留、连接池耗尽率
基础设施异常 存储不可写/WORM违规 错误日志落盘失败或不可变策略被破坏 错误激增 磁盘满/策略配置错误 合规风险、排障缺证据 P0 错误日志写入失败率、WORM策略校验失败
安全/合规异常 脱敏缺失 导出日志含敏感字段 一键导出 字段映射漏配 法规/隐私风险 P0 导出审计失败率、敏感字段命中数

说明:

  • 处理优先级:P0(立即处理,可能影响SLO/资金安全)、P1(高优先)、P2(中优先)、P3(低优先)
  • 观测指标需在监控平台内直接可查询,并与日志字段可联动聚合

处理逻辑建议

A. 分层捕获与传播(统一异常模型)

  • 接入/边界层(API、网关、消息消费、批任务)

    • 输入校验:幂等键、用户态校验、活动态校验(活动状态、阈值、限次)
    • 超时与预算:为每个调用设置硬超时和全链路时间预算,超时快速失败;对异步消费设置最大处理时长
    • 限流与隔离:按业务键(activityId、skuId、userId)限流,热点就地削峰(队列/令牌桶),对秒杀与普通流量分池
    • 追踪上下文:强制读取/创建traceId并写入响应/回执;消息头随事件传播
    • 错误映射:仅暴露业务级错误码与可读提示;技术细节落日志,不回传外部
  • 应用服务层(订单、库存、促销、购物车、结账编排、会员/积分)

    • 异常分类:业务异常(可预期)与技术异常(不可预期)分流;统一错误码域(模块+子码)
    • 封装与传播:捕获下游异常,封装为统一领域异常(含errorCode、causeType、recoverable标记、建议动作)
    • 重试策略:仅对幂等且可恢复的技术异常做有限重试(指数退避+抖动+截止时间),业务异常不重试
    • 降级策略:促销计算超时降级到“上次成功快照/基础价”;库存服务不可用时对非关键路径返回候选结果或提示稍后再试
    • 编排容错:结账采用有界工作流(SAGA/TCC样式),每步定义补偿动作与失败回退点
  • 基础设施适配层(存储、缓存、消息、外部支付)

    • 连接/资源保护:连接池隔离、线程池隔离、舱壁+熔断;为高风险依赖设独立线程池
    • 幂等收敛:入站Inbox/出站Outbox保证消息与状态更新的原子性与可重放
    • 死信与旁路:不可恢复消息入DLQ,提供旁路补偿流程(人工/自动重放)
  • 错误传播与可观测性

    • 上下文携带:errorCode、traceId、idempotencyKey、activityId、orderId必须随异常跨服务传递
    • 面向人/机双视图:对用户返回稳定错误码与提示;日志记录完整上下文+堆栈(可采样)

B. 关键场景治理

  • 秒杀库存扣减并发与超卖

    • 流量治理:活动入口令牌桶按activityId与skuId维度限流;队列化削峰,启用请求合并(同SKU汇聚)
    • 库存模型:预分配/冻结库存(活动库存与常规库存分账);单写者原则(每SKU单分区/单顺序流)
    • 并发控制:使用版本号或栅栏令牌(fencing token)避免超时重试覆盖;锁设置TTL与续约;失败快速回退
    • 兜底与对账:活动后全量对账与自动补偿(退款/回补库存),异常告警绑定P0升级
    • 观察:库存负数事件必须零容忍;队列滞留触发降载或暂停发券/入口
  • 促销规则计算超时

    • 时限与降级:设定计算预算(如P95阈值),超过则返回缓存快照或单一最优规则;记录降级原因
    • 预热与快取:活动前预计算并局部失效;规则按版本快照化,确保一致性与可回放
    • 复杂度治理:限制规则互斥/叠加矩阵,失败透明化(explain日志)
  • 搜索索引延迟

    • 双读策略:重要路径可在短时内回退到主存读校验关键字段;以版本号对比触发读修复
    • 事件保证:索引更新采用至少一次投递+去重;滞后超阈值触发重建或提升优先级
    • 用户体验:显示“价格以结算页为准”,结算页以权威源为准并记录一致性对账事件
  • 支付回调丢失

    • 出站Outbox:支付请求与本地变更同事务写出;回调入站Inbox保证幂等处理
    • 回调保障:回调签名校验、重放保护、状态机幂等更新;未回调订单由定时拉取/对账工单兜底
    • 时序与补偿:超过T阈值未完成的订单进入补偿队列,必要时发起退款/关单
  • 订单拆分异常

    • 拆分规则快照:以下单时仓/区域/商品状态生成不可变快照
    • SAGA补偿:子单生成失败回滚至未拆分状态或重试其他仓;部分失败可“部分履约+差额补偿”
    • 可观测:每步记录stepId、补偿结果、最终一致性状态
  • 跨区域库存锁未释放

    • 锁TTL+心跳;持有方崩溃由协调者/看门狗回收
    • 锁幂等释放与代偿释放(凭fencing token)避免误删
    • 指标:锁持有时长P99、孤儿锁立即告警并限流问题SKU
  • 优惠叠加错误

    • 优先级矩阵与排他规则前置校验;命中冲突立即回退到确定性路径
    • 规则版本化与审计;计算过程输出explain,便于复盘
  • 限流不均衡

    • 多维度限流(实例+业务键);热键识别并单独分流
    • 自适应并发控制(根据等待队列和失败率反馈调参)
    • 观察:实例负载方差与拒绝率作为主指挥量
  • 幂等键缺陷

    • 设计:幂等键应包含userId+购物车签名+活动上下文+客户端请求时间窗
    • 存储:具有唯一约束并设置TTL,返回“已受理”语义而非重复创建
    • 冲突处理:返回固定错误码并附上原订单Id,调用方幂等回显

C. 数据补偿与恢复

  • 事件重放:通过Outbox/Inbox与事件版本重放恢复一致性
  • 自动补偿:支付/库存/积分的对账作业,失败转人工工单并闭环
  • 灰度恢复:异常修复后先在小流量恢复并观测指标回归,再全量放量
  • 运行手册:为每个P0场景提供Runbook(定位→止损→恢复→复盘),演练验证

日志策略

A. 日志级别与用途

  • FATAL:不可恢复、需立即切换/降级(如库存负数、资金错账)
  • ERROR:请求失败或数据异常已影响用户/资金
  • WARN:潜在风险或降级发生(促销回退、读修复)
  • INFO:关键业务里程碑(下单、支付状态变更、库存冻结/释放)
  • DEBUG/TRACE:排障细节(采样打开,默认关闭于生产高峰)

错误与审计类日志不允许被降采样;访问/性能日志根据场景动态采样。

B. 结构化格式与字段规范

  • 必填通用字段

    • timestamp、level、service、env、region、hostId/instanceId
    • traceId(跨服务一致)、spanId、parentSpanId
    • userId、orderId、activityId
    • requestId(边界层生成)、idempotencyKey
    • module(如 order/inventory/promotion/payment/checkout)
    • action(如 place_order、reserve_stock、apply_promo、split_order)
    • errorCode、causeType(business/technical/infrastructure)、recoverable(bool)
    • latencyMs、retryCount、circuitState、rateLimitDecision
    • skuId、quantity、amount、currency(当适用)
    • dependency(下游名)、depLatencyMs、httpStatus/depStatus
    • version(服务版本/规则快照版本)
  • 可选与场景字段

    • lockId、lockTTL、fencingToken
    • promoRuleId、promoSnapshotId、explain
    • paymentId、channel、callbackId
    • queueTopic、partition、offset、deliveryAttempt
    • indexVersion、dbVersion(用于一致性对比)
  • 字段规范

    • 使用统一命名与类型(时间戳统一时区与格式,金额统一最小货币单位)
    • 不写入明文敏感数据(卡号、手机号等);提供脱敏策略标签 mask:true
    • 每条日志保证包含traceId + 至少一个业务键(orderId/activityId)

C. 存储与检索设计

  • 分索引与路由

    • 秒杀活动独立索引(按activityId分片/路由),提升写入与查询并发;高峰期提升采样
    • 业务常规索引按时间+service分区;热数据与冷数据分层
    • 聚合需求字段(activityId、skuId、errorCode、service、module、causeType、region)建立可聚合的索引映射;避免高基数字段参与频繁聚合
  • 生命周期与合规

    • 热日志:保留14天;归档:180天(压缩、只读)
    • 错误日志采用WORM策略:写一次不可变更,定期校验不可变性
    • 一键脱敏导出:导出策略基于字段级掩码/哈希;导出动作生成审计日志(operatorId、时间、范围)
  • 性能与SLO(检索P95 < 2s)

    • 热索引驻留高性能存储;限定查询时间范围默认近24h
    • 建立常用查询模板(按activityId/skuId/orderId/traceId)与预聚合视图
    • 控制日志体积:避免超大字段;错误堆栈提供裁剪与“堆栈哈希”归并
  • 采样与削峰

    • 错误/审计日志100%采集;成功INFO在常规1-10%采样,活动/异常窗口自动升采样
    • DEBUG/TRACE仅在问题定位窗口开启,并记录变更窗口

D. 追踪与上下文

  • 使用标准分布式追踪上下文(例如W3C Trace Context)在HTTP/消息头中传递
  • 异步任务、批处理与回调必须显式传递/恢复traceId,确保跨服务可关联
  • 日志中始终打印traceId + 核心业务键,平台中支持一键从日志跳转到调用链

E. 告警与SLO

  • SLI定义与度量

    • 下单成功率:成功下单数 / 下单尝试数(窗口:5m、1h)
    • 支付成功率:支付成功订单数 / 支付发起订单数
    • 库存一致性:库存异常事件数 / 扣减总数;库存负数事件目标为零
    • 回调时效:回调在T分钟内达达率
    • 队列滞后:消息滞留时间P95
    • 索引滞后:索引版本落后阈值的商品比例
  • SLO建议目标(30天滚动)

    • 下单成功率 ≥ 99.5%
    • 支付成功率 ≥ 99.9%
    • 库存负数事件 = 0;库存一致性误差率 ≤ 0.01%
    • 回调T(如5分钟)内达达率 ≥ 99.9%
    • 日志检索P95 < 2s(近14天)
  • 告警策略

    • 多窗口燃尽率告警(短窗+长窗),按SLO的误差预算触发
    • P0:库存负数、资金错账、支付回调长时间丢失、队列全面堆积、WORM失效
    • P1:促销降级暴增、拆单失败率上升、锁孤儿暴增、限流不均衡导致拒绝率骤升
    • 告警分级:IM即时+电话升级;支持自动抑制与去重(按traceId/错误哈希聚类)
    • 发布期间特殊门禁:灰度指标看板阈值更严格;异常自动回滚

F. 报表与聚合

  • 活动维度:按activityId聚合下单、拒绝、降级、库存冲突、成功率
  • 商品维度:按skuId聚合库存扣减冲突率、锁持有时长、超卖风险
  • 错误分布:按errorCode、module、region热力图
  • 追踪质量:无traceId日志占比、链路断裂点排行

G. 故障注入与压测

  • 场景化注入
    • 秒杀流量过载、库存服务延迟/失败、促销引擎超时、支付回调丢失/重复、消息队列堆积、跨区域网络抖动、锁持有者崩溃
  • 演练频率与范围
    • 月度全链路演练;活动前专项(秒杀、促销、支付)
    • 预设回滚与降级开关验证(开/关路径可观测)
  • 告警压测
    • 生成合成错误流量验证告警触发、分级、升级路径与噪声抑制
    • 验证日志检索SLO:常用查询模板在近14天数据P95<2s

附:可执行框架要点清单

  • 统一异常与错误码

    • 领域错误码:ORD_xxx、INV_xxx、PROMO_xxx、PAY_xxx、CHECKOUT_xxx
    • 字段:errorCode、message、causeType、recoverable、advise(RETRY/COMPENSATE/ABORT)
  • 幂等与一致性

    • 入站幂等:按userId+购物车签名+activityId+时间窗;唯一约束+TTL
    • 出站一致性:Outbox确保状态变更与事件投递原子;消费者Inbox去重
    • SAGA补偿清单:库存冻结/释放、优惠占用/回滚、积分发放/回退、支付关单/退款
  • 熔断与隔离

    • 对促销、库存、支付、搜索各自舱壁与熔断;降级路径明确(可观测+开关)
    • 限流优先级:支付/订单核心高优先通道,营销/搜索次优;热点单独通道
  • 日志合规与脱敏

    • 敏感字段分类清单与掩码策略;导出需要审批与审计日志
    • 错误日志WORM周期性校验与审计报表
  • 指标与看板

    • 统一四象限看板:流量→错误→延迟→饱和度;SLO状态与误差预算消耗
    • 活动专项看板:activityId维度全链路指标与日志入口

本策略通过明确异常类型与优先级、分层处理与恢复机制、可追踪的结构化日志与SLO/告警闭环,支撑“快速失败与熔断、故障隔离与限流、数据补偿与一致性保证”的系统目标,并可在秒杀与大促等极端流量场景下保持高可用与可维护性。

示例详情

解决的问题

将分散、临时的错误处理与杂乱日志,升级为一套可复用、可落地的“异常与日志全链路策略”。通过一次输入,就能获得针对你项目的异常类型划分、处理路径与日志规范,帮助团队:- 快速搭建分层的错误管理体系,减少线上突发故障;- 明确记录哪些信息、记录到哪里、保留多久,让日志真正可追踪、可检索;- 缩短问题定位与修复时间,提升发布与迭代效率;- 以更低的学习成本把行业最佳实践落到项目里。试用门槛极低:仅需提供项目类型、常见异常、关键模块与日志存储要求,即可得到结构化策略文档,直接用于评审、实施与上线前审查,稳步推动从“救火式维护”走向“可控的高可用”。

适用用户

后端工程师

快速制定异常分类与处理方案,生成日志规范与记录清单,减少线上故障与排查时间。

系统架构师

统一团队异常与日志标准,规划分层治理与恢复流程,指导服务稳定性升级落地。

运维与SRE

建立告警与日志追踪路径,明确恢复优先级与步骤,显著缩短平均修复时长。

特征总结

基于输入场景自动识别异常类型,一键生成分类清单与优先级,聚焦关键风险。
结合系统模块给出捕获与恢复建议,轻松制定分层处理流程,减少连锁故障。
提供可执行的日志记录策略模板,自动优化内容与级别,确保问题可追踪可复盘。
内置告警接入与监控思路,快速搭建异常提醒链路,缩短发现到修复的时间。
支持多行业场景定制化输出,电商、金融、物联网均可适配,避免重复摸索。
产出结构化策略文档,覆盖分类、流程与日志规范,便于团队协作与落地执行。
通过上下文理解自动澄清需求,提示关键边界与注意项,降低遗漏与误处理风险。
为迭代与架构升级提供复用模板,随项目变化快速调整策略,保持稳定与可维护。

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

系统异常与日志策略设计

184
16
Dec 11, 2025
本提示词面向软件架构师与开发者,提供一套结构化的异常处理与日志管理框架设计方案。通过分析项目关键模块与异常场景,输出涵盖异常分类、处理逻辑、日志记录与监控告警的综合性策略,旨在提升系统的稳定性、容错能力与故障排查效率。适用于微服务、金融交易、物联网等高可用性系统开发与架构优化场景。
成为会员,解锁全站资源
复制与查看不限次 · 持续更新权益
提示词宝典 · 终身会员

一次支付永久解锁,全站资源与持续更新;商业项目无限次使用

420 +
品类
8200 +
模板数量
17000 +
会员数量