随着互联网的普及和WEB2.0技术的兴起,我们目前很多的B/S应用中都面临着不可预知的访问压力,为了应对这种压力,很多网站都采用了数据库集群、应用服务器集群来保证系统的可扩展性和响应时间,从当前的数据库发展来看,Oracle数据库集群采用的多机共享存储的方式,比较成熟,如果应用设计比较好的情况下,数据库集群的扩展性问题不大,但是应用服务器的集群由于实现技术的问题,还存在这样或者那样的问题,以前theserverside网站上有一篇文章谈应用服务器从单节点到集群应该注意的问题:
图1 数据库集群
1. http session的处理问题:建议http sesssion要和具体的应用实现松耦合,这样在应用服务器集群中实现http session同步才成为可能,但问题是,如果session的信息量比较大,集群中的服务器比较多时,http session的同步仍然会有问题。
2. 应用服务器中针对共享业务数据的处理,在集群当中,当集群发生切换,或者多个节点访问同一份数据时,第一个应用服务器必须把数据同步回数据库,然后第二个应用服务器再从数据库取出,当数据交叉访问比较大时,系统的效率难以保证。
其实说白了,上面两个问题的实质就是将数据信息和应用服务器实现松耦合,以保证系统的可扩展性,但在实现松耦合的同时,如何保证系统的效率不受损失呢?
图2 应用服务器集群
前几篇文章里提到了实时数据集成和数据网格,其实现的核心产品是Oracle收购tangosol的产品coherence,coherence实现的原理就是利用多台服务器上实现一个数据网格(或者说数据集群),将后台业务数据、session信息等等全部存储在内存中,一方面保证数据访问的高效性和数据存储的高可扩展性,另一方面可以实现多台机器的并行计算。通过coherence我们可以非常轻松的实现上面两个场景:
1. 针对后台数据的存储问题,我们可以通过coherence将后台数据全部缓存在coherence组成的数据网格中,数据网格可以和应用服务器共享一个虚拟机或者采用单独的虚拟机,这样一方面实现了应用服务器和业务数据的松耦合,另一方面,所有的业务数据都缓存在数据网格中,可以保证系统的高效数据访问。
图3 coherence数据网格负责后台数据的缓存
2. 针对http session的问题,我们可以将http session的管理从应用服务器中拿出来,由coherence组成的数据网格对其进行维护,这样session信息的同步就可以在数据网格中进行,从而可以使应用服务器的横向可扩展性摆脱session信息大小的限制。
图4 cohernece实现http session的缓存
下一篇blog我们会详细分析数据网格如何实现http session信息的维护。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16312004/viewspace-566564/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16312004/viewspace-566564/