ZFramework集群是一个轻量级、简洁的集群实现,提供了将单服务器应用程序平滑迁移到集群环境下的解决方案。ZFramework对单服务器应用中常用而集群环境不能使用的一些做法提供了替代方案,这些做法包括单例、静态变量、自增长的序列号、数据库缓存等。

  ZFramework集群在几十台服务器的情况下能做到性能随服务器台数性线增长。

  ZFramework集群必须基于单一数据库,数据库的集群由数据库服务器软件自己实现。

  ZFramework集群可以通过Socket或者HTTP通信,但在Socket下的性能要明显好于HTTP下的性能。

  

  ZFramework集群实现了如下特性:

  全局一般锁:在定时任务等只需一个JVM执行的操作中可以通过全局一般锁使其他JVM不再重复执行任务。

  全局变量:整个集群同步访问和修改的变量。

  全局累加锁:用于全局最大号的生成、全局数值统计等操作。

  消息广播:用于向其他服务器发送消息,主要用于各服务器缓存同步刷新。

  

  ZFramework未予实现的特性:

  Session复制ZFramework认为Session复制不是必须的,不能真正实现失败转移,反而会带来复杂性和性能的损失。

  失败转移:完全的失败转移基本上是不可能的,ZFramework认为当一台服务器宕机时损失掉该服务器上所有会话信息,并将用户重定向别的节点(通过负载均衡)是可以接受的。

  

  ZFramework必须依赖的第三方特性:

  负载均衡:需要第三方软件(例如Apache或硬件(例如F5)来实现负载均衡。

  Session粘滞:需要第三方软件(例如Apache或硬件(例如F5)来实现Session粘滞,使得同一个会话内的所有请求都转发到同一个JVM。

  全局资源:需要第三方软件支持(例如NFS)以解决文件上传等全局资源访问问题。

  全局缓存:需要第三方软件(例如Memcached)来实现全局缓存,ZFramework仅提供各JVM独立缓存但同步刷新的机制。