4. 高可用架构设计原则与模式
制造运营系统(MES、SCADA、WMS、能源管理、质量追溯等)一旦中断,影响的不只是IT部门,而是产线停机、批次报废、交付延期。因此高可用架构设计不能停留在“买两台服务器做备份”的层面,而要从原则出发,选择与业务连续性要求相匹配的模式。本节先梳理六条核心设计原则,再分析主备、双活、多活、集群、负载均衡等模式在制造场景中的适用性。
一、六条核心设计原则
冗余是高可用的物理基础。任何关键组件——应用服务器、数据库、消息队列、网络链路、甚至采集网关——都必须有可替换的副本。冗余不是简单堆数量,而是要求副本之间在故障时能够真正接管。例如MES应用节点至少部署两个实例,数据库采用主从复制,交换机采用堆叠或双上行链路。
隔离强调故障不扩散。制造现场常见的问题是:一台采集网关故障导致整个车间网络广播风暴,进而拖垮MES。隔离手段包括VLAN划分、独立采集子网、应用进程隔离、数据库读写分离等。隔离的目标是让故障被限制在最小范围内。
无单点故障(SPOF)是检验架构的硬标准。设计完成后应逐项排查:负载均衡器是否单台?数据库是否单实例?DNS是否单点?证书是否只有一份?任何“只有一个”的关键路径组件都是隐患。消除SPOF的方式可以是冗余、集群或云服务托管。
故障域划分是把系统按物理或逻辑边界切分,使一个故障域内的失效不影响其他域。制造企业通常按车间、产线、机房、可用区划分故障域。例如总装车间与焊装车间的MES节点分属不同故障域,焊装网络故障不应导致总装停线。
优雅降级指系统在部分能力受损时仍能提供核心服务。制造场景中,当质量追溯服务不可用时,产线仍应能继续生产并本地缓存数据,待服务恢复后补传;当报表服务过载时,应优先保障工单下发和过站采集。降级策略需要提前定义:哪些功能可关闭、哪些必须保留、降级后如何提示用户。
快速恢复关注的是故障发生后的恢复时间目标(RTO)和恢复点目标(RPO)。制造运营系统通常要求RTO在分钟级,RPO接近零。实现快速恢复需要自动化切换、健康检查、数据同步和定期演练,而不是依赖人工发现和手动切换。
二、高可用模式及其制造场景适用性
主备模式是最简单的冗余形式:主节点处理业务,备节点通过心跳监测主节点状态,主节点故障时备节点接管。优点是实现简单、数据一致性好;缺点是备节点平时不承载业务,资源利用率低,切换期间通常有短暂中断。适用于中小型MES、单车间SCADA、历史数据库等对成本敏感且可接受分钟级切换的场景。
双活模式指两个节点同时对外提供服务,通常配合负载均衡使用。双活可以是“双活应用+主备数据库”,也可以是“双活应用+双活数据库”。制造场景中,双活适合多产线共用的MES应用层,但数据库双活需要解决冲突检测和同步延迟问题。若采用双活数据库,必须明确写入路由规则,避免同一工单在两个节点同时被修改。
多活模式是双活的扩展,多个节点分布在不同的故障域或地理位置,同时承载业务。多活对数据同步、流量调度、冲突解决要求极高。制造集团若在多个工厂部署独立MES,但需要集团级统一报表和工单协同,可采用多活架构:各工厂本地处理生产业务,集团中心汇聚数据。多活不适合强一致性要求极高的实时工单下发场景,除非引入分布式事务或共识协议。
集群模式通过多节点协同提供高可用和可扩展性。制造运营系统中,集群常用于应用服务器(如Tomcat集群)、消息队列(如Kafka集群)、缓存(如Redis集群)。集群模式的关键是会话保持或会话共享:MES操作员登录后,若后续请求被分发到另一节点,必须能识别其会话。常用方案是Redis集中存储会话,或使用负载均衡的源地址哈希。
负载均衡是双活、多活、集群的入口组件,负责将请求分发到健康节点。制造场景中,负载均衡可分为四层(TCP)和七层(HTTP)。四层适合数据库代理、消息队列;七层适合MES Web应用,可根据URL、Cookie、工单号进行路由。负载均衡器自身也必须高可用,通常采用主备或集群部署,配合VRRP或云负载均衡服务。
三、模式选择的关键判断依据
选择高可用模式时,不能只看技术先进性,而应结合制造业务的实际约束。以下判断维度可作为决策参考:
| 判断维度 | 主备 | 双活 | 多活 | 集群 |
|---|---|---|---|---|
| RTO要求 | 分钟级 | 秒级 | 秒级 | 秒级 |
| RPO要求 | 接近零 | 接近零 | 可容忍少量丢失 | 接近零 |
| 资源利用率 | 低(备机闲置) | 高 | 高 | 高 |
| 数据一致性 | 强 | 较强(需冲突处理) | 最终一致 | 强/最终一致 |
| 实施复杂度 | 低 | 中 | 高 | 中 |
| 典型制造场景 | 单车间SCADA、历史库 | 多产线共用MES应用层 | 集团多工厂协同报表 | 消息队列、缓存、应用服务器 |
需要特别注意的是,制造运营系统中存在大量有状态组件,如工单状态机、批次追溯链、设备实时数据缓存。这些组件的双活或多活不能简单复制无状态Web应用的做法。例如,同一工单的过站记录必须按顺序写入,若两个节点同时处理同一工单的不同工序,可能产生时序错乱。因此,有状态组件的双活通常需要引入分片路由:按工单号哈希将请求固定路由到某一节点,故障时才切换。
四、原则与模式的落地关系
六条原则与五种模式并非一一对应,而是相互支撑。冗余和隔离是基础,无单点故障是检验标准,故障域划分决定部署拓扑,优雅降级和快速恢复是运行目标。主备模式体现冗余但资源利用率低;双活和多活同时体现冗余与隔离;集群模式通过多节点协同实现冗余和负载均衡;负载均衡则是双活、多活、集群的流量入口。
在制造运营系统的实际架构中,往往是多种模式组合使用:负载均衡集群 + 双活应用节点 + 消息队列集群 + 缓存集群 + 数据库主备。这种组合既保证了应用层的高可用和可扩展,又通过数据库主备确保了核心生产数据的强一致性。设计时应根据每个组件的业务重要性和技术约束,选择最合适的模式,而不是追求全系统统一采用某一种模式。