负载均衡()
对大型应用来说系统负载可能非常重以网站应用为例如果并发数很多则单台计算机就无法承受此时为保证应用程序的服务质量需要使用多台计算机协同工作将系统负载尽可能均匀地分配到各个计算机节点上
一个典型的实现便是Tomcat集群配置Tomcat集群实现负载均衡可以通过Apache服务器实现即使用Apache服务器作为负载分配器将请求转向各个Tomcat服务器从而实现负载均衡如图所示客户端请求被均匀地分配到各个Tomcat节点上
图 基于Apache的负载均衡结构
在使用Tomcat集群时有两种基本的Session共享模式黏性Session模式和复制Session模式
在黏性Session模式下所有的Session信息被平均分配到各个Tomcat节点上以实现负载均衡但是一旦一个节点宕机它所维护的Session信息将丢失不具备高可用性且同一用户只能与一台Tomcat交互因为其他Tomcat节点上不保存这个用户信息
而使用复制Session模式将使得所有Session在所有Tomcat节点上保持一致当一个节点上的Session信息被修改这个Session会被广播到其他Tomcat节点上以保持Session同步这样当用户的下一次请求被分配到其他Tomcat节点上时将拥有足够信息处理用户请求这样做的坏处是很容易引起网络繁忙影响系统效率
在Java开源软件中还有一款跨JVM虚拟机专门用于分布式缓存的框架Terracotta使用Terracotta也可以实现Tomcat的Session共享同时Terracotta也是一个成熟的高可用性系统解决方案
由于Terracotta进行内存共享时并不会进行全复制而仅仅传输变化的部分网络负载也相对较低因此使用Terracotta进行Tomcat的Session共享其效率也远远高于普通的Session复制除了与Tomcat集成Terracotta还可以与一些主流Java组件集成使用如JettySpring和EHCacheTerracotta的工作架构如图所示
图 Terracotta工作架构
使用Terracotta可以在多个Java应用服务器间共享缓存并且在增加应用服务器时不会像Tomcat那样引起网络风暴系统负载可以线性增长是一种可靠的负载均衡方案
注意Terracotta是一款企业级的开源的JVM层的集群解决方案它可以实现诸如分布式对象共享分布式缓存分布式Session等功能可以作为负载均衡高可用性的解决方案
读者可以在Terracotta官方网站http://terracottaorg/下载并试用Terracotta在Terracotta安装完成后可以参考Terracotta自带的几个实例深入对Terracotta的了解在此笔者简单介绍两个有代表性的Terracotta应用案例
首先笔者将介绍分布式Cache的使用在Terracotta中EhCache得到了加强具备了分布式功能在Terracotta安装目录的ehcache\samples\colorcache子文件夹中有名为colorcache的分布式EhCache应用示例该示例由用户指定某一种颜色的名称由后台生成这种颜色生成颜色的初始化时间会比较长但一旦生成后这种颜色便会进入缓存以后再获取相同的颜色时就能很快得到响应
返回目录Java程序性能优化让你的Java程序更快更稳定
编辑推荐
Java程序设计培训视频教程
JEE高级框架实战培训视频教程
JME移动开发实战教学视频
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLEG数据库开发优化指南