一个单机web系统,需要改为在集群部署时,需要考虑以下因素:
1、缓存
单机时,通常缓存就在本机内存,集群环境下,各进程的缓存间不能通讯,可以考虑使用分布式缓存,或者内存数据库,分布式缓存可以考虑memcached,或Jboss cache,内存数据库可以考虑Redis,根据场景不同使用不同的分布式缓存,对于实时性要求较高的场合,可以使用类似Jboss cache的复制型的分布式缓存,Jobss cache是利用网络组播的方式,当一个节点的缓存内容发生变化时,复制到其它节点,这样每个应用节点在访问缓存时,就是在访问本地内存;而对数据一致性要求较高时,可以使用类似Redis内存数据库,问题就是每次访问都有网络开销;
2、时间同步
顾名思义,在集群的各节点,要使时间同步,使用NTP服务,不然会出现很多莫名其妙的问题;
3、文件存取
保证各节点对文件存取的一致性,两个思路,一个是使用数据库存储文件,如MongoDB的文件存取,一种是架设文件共享系统,如windows的文件共享,或linux的NFS系统;
4、后台线程
控制集群各节点的后台执行线程对资源的争用和冲突,这和具体的业务相关,也许没有什么框架性的解决方案,应用要控制好争用和冲突,或者采用节点的心跳、存活节点执行后台任务的控制(单一节点执行后台任务、根据某种策略,轮流获取后台任务的执行权);