1. 高可用性设计:核心组件的冗余与集群
确保 99.9\\% 可用性意味着每年服务中断时间不能超过 8.76 小时。这要求所有核心组件都必须是无单点故障(Single Point of Failure, SPoF)的。
-
数据库集群: 采用 主-从(Primary-Replica) 或 多主(Multi-Primary) 复制架构。使用 Raft 或 Paxos 等一致性协议来保证数据在故障切换时的完整性(例如,PostgreSQL 配合 Patroni 或云服务的多可用区部署)。
-
API Gateway 与负载均衡: 所有 API Gateway 实例部署在多个可用区(Availability Zones, AZ)内,并由 L4/L7 负载均衡器进行健康检查和流量分配。
-
任务调度器: 调度器集群采用 领导者选举(Leader Election) 机制(如基于 Etcd 或 ZooKeeper)。只有 Leader 负责任务分配,其他节点处于 Standby 状态,一旦 Leader 失败,即可立即接管。
2. 自动化健康检查与故障发现
快速发现故障是实现快速恢复的前提,这依赖于细粒度的健康检查机制。
-
Liveness Probe 与 Readiness Probe: 在 Kubernetes (K8s) 环境中,对所有微服务配置 Liveness Probe(检查服务是否存活)和 Readiness Probe(检查服务是否准备好接收流量)。一旦 Readiness Probe 失败,K8s 会自动将该实例从服务发现列表中移除。
-
分布式心跳机制: RPA 引擎实例与核心调度器之间维护一个 分布式心跳。心跳如果持续失败超过阈值(例如 30 秒),调度器立即将该引擎实例标记为不可用,并将其正在执行或待执行的任务转移(Re-queue)到健康的引擎实例。
-
业务级健康检查: 除了基础的 TCP/HTTP 检查,还引入模拟真实业务流程的 业务级健康检查,例如,每隔 X 分钟,自动发送一条测试消息,验证端到端流程是否畅通。
3. 故障自动恢复与流量管理
在检测到故障后,系统必须实现无人工干预的自动恢复(Self-Healing)。
-
DNS 级别的故障切换: 利用 DNS 解析机制(如 CNAME 记录或云 DNS 服务),在整个地理区域或可用区发生故障时,将流量自动切换到健康的灾备区域。
-
快速重启与缩容: 对于短暂的、可恢复的软件错误,K8s 会自动重启失败的 Pod。对于持续的、资源耗尽的故障,系统会触发缩容和重新调度机制,避免故障实例持续占用资源。
-
流量限速与降级: 在核心服务故障时,API Gateway 会自动触发 降级策略(如前文所述的熔断),将非核心流量限制或返回默认值,优先保障核心业务流程的可用性。
结论:SLA 实现的工程基石
QiWe 开放平台 通过在架构层面实现核心组件的完全冗余、在运维层面部署自动化心跳与健康检查,并在流量层面实现快速熔断与切换,构建了一个高可用、高韧性的服务体系。这些工程实践是达成严格 SLA 承诺,并为企业客户提供持续稳定服务的技术基石。