应用场景分析之集群
集群包含两方面的内容,容错备份和负载均衡。容错备份(Fault Tolerance)也可以称为高可用性HA(High Available )。一般是主备机上部署相同的应用,主机工作,备机空闲。当主机宕机时, 系统自动切换到备机,备机上的应用启动继续工作,从而达到整个系统高可用性的目的。HA实现示意图如下:
(1) 主备机的切换由操作系统的HA软件负责。
(2) 主备机共用一个虚拟IP和虚拟主机名。在切换时,应用的客户端不会受到影响。
(3) 整个应用系统的软件,配置文件,工程文件,这些属于部署环境的内容在主备机上各有一份。
(4) 对于运行时的数据,不论是存在内存里,还是存在硬盘里都有两种处理方式。 a. 主机中存有一份运行时数据, 定时地同步到备份机上;b. 主备机使用共享存储存放运行时数据。
(5) 在主机宕机时,由于备份机上有和主机相同的软件,配置和工程文件,和主机宕机前相同的运行时数据,所以备机上的应用得以继续运行。
主备机切换时的一个关键问题,也是整个HA的一个关键问题是:如何保证切换时的事务一致性,即主机在切换点未处理完的事务,是否能在备机上继续无缝地执行;或者是否能在备机上恢复事务开始前的状态,重新执行该事务操作。方法1的实现方式是:当主机宕机时,确定备机或者共享存储上运行时数据的状态,以及在这个状态下,下一步要做的操作。备机从这个操作起,继续往下执行。这种方式对应用系统要求比较高。方法2相对简单一些,当主机宕机时,如果有未完成的事务,首先回滚该事务,将数据状态恢复到该事务开始前的状态,然后备机重新执行该事务,之后继续往下执行。不论哪种方式,都不能确保百分之百地实现事务的完整性(XA规范也不能实现分布式事务百分之百的一致性,完整性)。对于这种情况,应用通常的解决办法是对前端和后端进行手工勾对,检查业务处理的一致性,完整性。
对于TIBCO EAI平台,前面提到Business Works中的组件和Adapter作为其他软件或者系统的接口数据适配器,本身没有功能处理逻辑,没有事务处理逻辑,不缓存数据,只是在集成流程和其他软件或者系统之间透传数据和接口调用。Business Works的流程支持XA事务。而连接Business Works流程和Adapter实例的消息中间件层,根据不同的消息可靠性级别,将消息存放在内存或者文件中。对于基于TIBCO EAI平台的集成应用,HA部署如下:
通常使用方法2来保证主备机切换时事务的一致性, 主机宕机时,Business Works的流程和Adapter实例上正在运行的事务会自动回滚,消息层的消息数据恢复到该事务开始时的状态,备机上的应用启动后继续执行。
第二个内容是负载均衡,即同样的应用部署在多台机器上,从客户端来的处理请求,被负载均衡模块分配到不同机器的应用上,提高整个系统的处理能力。同时也兼有HA的功能,即某些机器上的应用宕掉,它所承担的负载会被自动转到其他机器上。对于TIBCO EAI平台的负载均衡,之前提到Business Works的流程是事件驱动流程,通常都是服务端接收到服务处理请求后触发执行一个流程任务,对于不同通信协议的服务处理请求,负载均衡实现方式有两种:
(1)对于TCP, HTTP, Web Service协议的服务请求采用F5服务器来做负载均衡。
(2)对于使用消息中间件消息作为服务请求的情况,使用消息中间件本身的负载均衡功能。