高可用HA(High Availability)是系统架构设计的重要因素,主要是通过设计减少系统不能提供服务的时间。
在方法上,高可用是通过冗余+自动故障转移来实现的。
在实现上,高可用可以分为硬件部分和软件部分分别实现。
一)硬件高可用性:

如图所示,为了实现硬件层面的高可用性,可以分别设计网络备份,应用服务器备份,数据库服务器备份。
根据应用和要求的不同,可以采用双机热备或者服务器集群的方案。
双机热备或者服务器集群都支持虚拟Mac/IP地址的功能,使的集群环境IP地址实现与唯一MAC地址绑定。
所有的请求都指向这一个虚IP,假如抢占到虚IP的机器异常,这时候其他虚拟服务就会有其中一个抢占到虚IP,对于服务调用者来说,仍然可以访问到服务,实现高可用。
二)软件架构高可用性:
WMS/WCS/AGVS软件层级如下图:

整个WMS/WCS/AGVS软件系统的高可用,就是要求每一层的高可用,通过每一层的冗余+自动故障转移来综合实现的,具体如下:
(1)【客户端层】到【反向代理层】的高可用,是通过反向代理层的冗余实现的。以nginx为例:有两台nginx,一台对线上提供服务,另一台冗余以保证高可用,采用keepalived存活探测,当相同提供服务的nginx的时候异常时,keepalived能够探测到,会自动的进行故障转移,将流量自动迁移到另一台nginx,由于使用的是相同的virtual IP,这个切换过程对调用方是透明的,从而实现高可用。
(2)【反向代理层】到【应用层】的高可用,是通过应用层的冗余实现的,以反向代理层nginx为例:nginx.conf里能够配置多个web后端,并且nginx能够探测到多个后端应用的存活性,当后端应用异常的时候,nginx能够探测到,会自动的进行故障转移,将流量自动迁移到其他的后端应用,整个过程由nginx自动完成,对调用方是透明的,从而实现高可用。
(3)【应用层】到【数据层】的高可用,数据库层用了“主从同步,读写分离”架构。所以数据库层的高可用,又分为“读库高可用”与“写库高可用”两类。
读库冗余,每次请求会路由到这些读库,当master读库异常的时候,数据库连接池能够探测到,会自动的进行故障转移,将流量自动迁移到其他的读库,整个过程由连接池自动完成,对调用方是透明的,从而实现读库高可用。
写库冗余,一台对线上提供服务,另一台冗余以保证高可用,通过存活探测,当master写库异常的时候,会自动的进行故障转移,将流量自动迁移到其他的写库,由于使用的是相同的virtual IP,这个切换过程对调用方是透明的,,从而实现读库高可用。
综述:
WMS/WCS/AGVS系统的高可用性是通过软件+硬件的冗余和故障自动转移,实现业务的连续,为用户提供不间断的服务。
上海朗因智能科技有限公司专注WCS仓储控制系统&WMS仓储管理系统研发与实施16年专业· 靠谱· 值得信赖
夜雨聆风