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或云负载均衡服务。

制造运营系统高可用架构模式参考 以MES为核心,展示负载均衡、双活应用、集群中间件与主备数据库的组合关系 车间终端 / 操作站 / 扫码枪 / PLC采集网关 / 报表客户端 HTTP / TCP / OPC UA / MQTT 负载均衡集群(LVS / Nginx / F5) 健康检查 · 会话保持 · 七层路由 · 主备VRRP MES应用节点 A(车间1) 工单下发 · 过站采集 · 在制品跟踪 故障域:机房A / 可用区1 MES应用节点 B(车间2) 工单下发 · 过站采集 · 在制品跟踪 故障域:机房B / 可用区2 会话同步 / 配置同步 消息队列集群(Kafka / RabbitMQ) 异步解耦 · 削峰填谷 · 数据补传 缓存集群(Redis Sentinel / Cluster) 会话共享 · 热点数据 · 分布式锁 数据库主节点(Primary) 读写业务 · 工单/批次/质量数据 机房A 数据库备节点(Standby) 流复制同步 · 只读查询 · 故障接管 机房B 流复制 / 半同步 故障域 A 故障域 B 负载均衡 应用双活 消息集群 缓存集群 数据库主备 同步/复制

三、模式选择的关键判断依据

选择高可用模式时,不能只看技术先进性,而应结合制造业务的实际约束。以下判断维度可作为决策参考:

判断维度 主备 双活 多活 集群
RTO要求 分钟级 秒级 秒级 秒级
RPO要求 接近零 接近零 可容忍少量丢失 接近零
资源利用率 低(备机闲置) 高 高 高
数据一致性 强 较强(需冲突处理) 最终一致 强/最终一致
实施复杂度 低 中 高 中
典型制造场景 单车间SCADA、历史库 多产线共用MES应用层 集团多工厂协同报表 消息队列、缓存、应用服务器

需要特别注意的是,制造运营系统中存在大量有状态组件,如工单状态机、批次追溯链、设备实时数据缓存。这些组件的双活或多活不能简单复制无状态Web应用的做法。例如,同一工单的过站记录必须按顺序写入,若两个节点同时处理同一工单的不同工序,可能产生时序错乱。因此,有状态组件的双活通常需要引入分片路由:按工单号哈希将请求固定路由到某一节点,故障时才切换。

实践建议:制造企业可先对系统做一次SPOF排查,列出所有关键路径上的单点组件,再按业务影响程度排序。对于影响产线停机的组件,优先采用双活或集群;对于影响报表查询的组件,可采用主备或优雅降级。高可用建设不必一步到位,但必须明确每个组件的目标RTO和RPO,并定期演练切换流程。

四、原则与模式的落地关系

六条原则与五种模式并非一一对应,而是相互支撑。冗余和隔离是基础,无单点故障是检验标准,故障域划分决定部署拓扑,优雅降级和快速恢复是运行目标。主备模式体现冗余但资源利用率低;双活和多活同时体现冗余与隔离;集群模式通过多节点协同实现冗余和负载均衡;负载均衡则是双活、多活、集群的流量入口。

在制造运营系统的实际架构中,往往是多种模式组合使用:负载均衡集群 + 双活应用节点 + 消息队列集群 + 缓存集群 + 数据库主备。这种组合既保证了应用层的高可用和可扩展,又通过数据库主备确保了核心生产数据的强一致性。设计时应根据每个组件的业务重要性和技术约束,选择最合适的模式,而不是追求全系统统一采用某一种模式。