`
longgangbai
  • 浏览: 7325429 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

高效、高可用的Web Session解决方案

            在多用户、高并发、高吞吐量的Web应用中,用户经常通过配置多个Web应用服务器并发处理大量用户的请求,实现负载均衡、灾难回复,提高可用性和可扩展性。

在多节点的环境中,如何实现Web Session数据的高速共享、复制、迁移是架构成功与否的关键。

由于大多数Web应用服务器都采用Java序列化和数据广播方式实现session数据的共享,导致任何一个节点对任何session数据进行修改,都造成大量的内存、CPU以及网络带宽的消耗。这种消耗随着应用服务器节点的增加而成级数级增长。当节点数目超过4个以上的时候,经常由于session复制导致的消耗过高,使得整个集群的吞吐量反而开始下降。由于普通session复制机制性能和可用性的缺陷,很多web开发人员不得不通过数据保存和共享session相关的数据,因此又增加了对数据库的压力,形成新的性能瓶颈。

Terracottaweb session方案利用Terracotta集群实现sessino数据的共享。不使用广播机制,也不对整个session数据做序列化,因此session数据复制的消耗极小,允许用户横向扩展应用服务器的数量儿不必担心系统消耗形成的瓶颈。

下图是基于TerracottaWeb Session集群方案的体系架构图:

Terracotta Web Session

Web Session数据通过Terracotta服务器实现了数据的持久化、节点间的复制以及灾难回复等。

基于Terracotta的解决方案的特点及优势包括:

  • 简单易用
    • 完全支持Java Web Session的标准实现,用户对HttpServletSession接口的访问方式不变
    • Terracotta通过对不同应用服务器进行配置,将session数据集群化
  • 高效、可靠
    • 近乎内存读写的访问速度
    • session数据自动持久化
    • 性能可线性扩展
  • 强大、灵活
    • 广泛支持各种应用服务器:WebLogic, WebSphere, Tomcat, JBoss, Jetty, Geronimo等等
    • 自动session数据迁移
    • 适用于各种大小的session数据
    • 集群范围内数据可视以及强大的管理和监控功能

下图显示了基于TerracottaSession集群解决方案与Tomcat内置解决方案的性能数据对比:

Terracotta Web Session性能对比

从图中可见,Tomcat内置的方案在增加节点数,对整个集群的吞吐量帮助不大。而基于Terracotta的方案可以实现吞吐量随着节点数的增加而线性增长。

TerracottaWeb Session解决方案建议用户使用session粘性负载均衡机制,让相同用户的请求尽量由相同的web服务器处理,这样可以最大限度地做到数据本地化分片,实现最佳的整体性能。同时在灾难发生的时候,还能实现web请求和session的自动迁移。

高效分布式Java任务调度平台 - Quartz

QuartzJava领域最著名的开源Java任务调度工具。它允许用户通过类似Unixcrontab类似的任务计划语法定义对Java任务的调度计划。

Terracotta2009年末并购了Quartz项目,并将它与Terracotta核心平台进行紧密整合,为用户提供一个可以从小量任务、单机环境到大量任务、分布式环境平滑过度的全面的Java任务调度平台。

与其他Terracotta解决方案一样,用户可以从单机环境开始开发实施,随着应用需求和环境的升级扩展,只需要修改配置文件,就可以逐步扩展到多机集群环境。

下图是QuartzTerracotta整合后的系统架构:

Terracotta Quartz

Terracotta Quartz解决方案的特点包括:

  • 简单易用
  • 功能特点
    • 任务调度
    • 任务执行
    • 任务持久化
    • 任务数据可视化监控管理
  • 强大、灵活
    • 任务数据持久化选项:数据库、Terrcotta
    • 支持任务监听和插件扩展

 

部署、监控、维护

服务器与客户端的部署

Terracotta的部署非常简单。

Terracotta服务器是独立运行的Java程序。用户只需要指定JDK的安装目录,设置配置文件,然后就可以在相应的硬件服务器或者虚拟机中启动Terracotta服务器的各个实例了。Teracotta服务器目前要求使用Sun JDK 1.51.6

对于客户端来说,如果使用快捷模式(Express Mode),除了拷贝相应的jar文件,进行应用相关的配置意外,不需要做其它特殊的操作。

使用快捷模式功能的详细手册可以参考:

http://www.terracotta.org/documentation/ga/product-documentation

使用DSO模式,或者订制模式(Customized Mode)需要为客户端配置相应的tc-config.xml,指定要共享的类,共享实例以及使用的插件(TIM)等等,然后用dso-java.sh(bat)或者ds-env.sh(bat)启动。

DSO模式的运行手册可以参考:

http://www.terracotta.org/documentation/ga/product-documentation-19.html#403067640_pgfId-1006124

监控、维护

Terracotta提供了丰富的监控及维护功能。

首先,Terracotta提供JMX API,允许用户使用该工业标准访问服务器集群以及客户端的信息,查看集群各种配置信息、监控软硬件指标、获取统计数据、动态修改集群属性甚至进行关机、备份等管理操作。用户可以选择将JMX接口嵌入到其企业使用的监控平台中,也可以自行开发基于JMXJava程序,以满足其特定的监控和管理需求。

目前市场上大部分开源或者商业系统监控平台,比如NagiosHP OpenViewCA Unicenter等等,都直接支持JMX标准。

Terracotta利用JMX API提供了一系列内置的工具,方便用户对Terracotta集群进行监控、维护。

比如:

  • Developer Console

专门为开发人员提供的集群监控、调试、管理工具。允许用户查看集群的拓扑信息、查看集群中共享的数据、获取统计信息、查看CPUHeap使用情况、获取线程堆栈试视图(thread dump)、收集调试信息等等。对于EhcacheHibernate用户,还可以监控缓存的使用情况,调整缓存配置等等。

Developer Console的相信说明可以参考:

http://www.terracotta.org/documentation/ga/product-documentation-21.html#404563920_pgfId-1167627

  • Operation Center

为集群管理人员提供专用的管理工具。可以用来监控各个服务器以及客户端的CPUHeap使用情况、备份共享数据、关闭服务器或者客户端程序等等。

Operation Center详细信息可以参考:

http://www.terracotta.org/confluence/display/docs/Terracotta%20Operations%20Center

  • 命令行工具

Terracotta提供一系列命令行脚本,用于获取集群状态、采集统计信息、终止服务器等操作。具体说明请参考:

http://www.terracotta.org/documentation/ga/product-documentation-22.html#403159784_pgfId-1080523

 

用户可以根据自身开发、部署、测试、维护的需要选择不同的工具,解决不同的问题。

下面是Terracotta Developer Console的几个截图。

共享对象浏览器

共享对象浏览器

实时性能数据表盘

实时性能数据表盘

集群拓扑结构

集群拓扑信息

 

 两个有关Terracotta技术的在线会议预告

Terracotta核心技术介绍以及如何搭建高可用的Web应用

http://terracottawebinar201006.eventbrite.com/

 

 

分布式缓存Ehcache以及如何提高应用系统性能

http://terracottawebinar201007.eventbrite.com/

分享到:
评论

相关推荐

    Terracotta 3.2.1 英文文档(CHM)

    Terracotta 3.2.1 英文文档

    terracotta集群tomcat步骤

    首先,安装Terracotta 3.2.1版本是非常基础的一步。需要注意的是,安装路径不能包含空格,这是因为某些程序可能无法正确处理包含空格的路径,同样,JDK的安装位置也应遵循这一原则。将Terracotta部署在两台PC上,每...

    terracotta

    **一、Terracotta简介** Terracotta是一款开源软件,它的核心功能在于提供了一个分布式内存模型,能够将Java对象透明地分布到多台服务器上。这种分布式内存管理方式允许应用程序在不修改代码的情况下,实现数据的跨...

    使用terracotta进行web session 同步

    ** Terracotta简介 ** Terracotta是一个基于Java的分布式内存管理平台,它可以使Java应用透明地运行在多台机器上,如同运行在单一节点上一样。通过Terracotta,开发者可以轻松地扩展应用程序,实现数据的共享和状态...

    Terracotta

    #### 二、Terracotta入门指南 ##### Hello, World! Terracotta的入门教程首先引导用户通过创建配置文件和简单的Java程序(如HelloWorld.java)来熟悉其基本用法。执行这个程序后,可以初步了解Terracotta如何在...

    Terracotta+tomcat集群配置详细说明(写了一晚上。。)

    二是全量复制 session,但会因大量序列化操作而增加网络负担。Terracotta 提供了一种更优的解决方案,它仅同步 session 的变化部分,从而兼顾了负载均衡和灾难恢复的需求。在实际测试中,当 Terracotta 集群规模扩展...

    terracotta-ee-4.1.2.jar,terracotta-license.key

    Terracotta是一款强大的分布式内存管理工具,主要用于Java应用程序的集群化和数据共享。在这个场景中,我们关注的是Terracotta企业版(terracotta-ee)的4.1.2版本,以及与其配套的许可证文件(terracotta-license....

    通过_Terracotta实现基于Tomcat的Web应用集群

    ### 通过Terracotta实现基于Tomcat的Web应用集群 #### 概述 本文主要介绍了如何利用Terracotta与Tomcat构建高效的Web应用集群。在实际应用中,通过集群技术可以显著提升系统的可用性和伸缩性,特别是对于高流量、...

    terracotta-3.7.7.tar.gz

    《Terracotta 3.7.7:分布式内存管理与集群解决方案》 Terracotta 3.7.7 是一款强大的分布式内存管理工具,它允许Java应用程序在多台服务器之间共享内存,从而实现数据的实时同步和高可用性。这款软件在2014年2月17...

    ehcache-terracotta代码配置

    Ehcache是基于内存的缓存解决方案,它提供了本地缓存、持久化存储和二级缓存等功能。通过将频繁访问的数据保存在内存中,Ehcache可以显著降低数据库的负载,提高应用程序响应速度。 2. Terracotta集成 Terracotta是...

    使用terracotta实现session共享的证实实验

    #### Terracotta简介 Terracotta是一种开源的分布式内存技术,它提供了一种简单有效的方式来管理和共享应用程序的数据。对于Java应用程序而言,Terracotta可以实现在多台服务器之间共享数据,尤其是Session数据,...

    terracotta-ee-3.5.2

    terracotta-ee-3.5.2破解版

    terracotta license.key

    terracotta license.key ,

    terracotta-toolkit-1.3-runtime-3.2.0.jar

    terracotta-toolkit-1.3-runtime-3.2.0.jar 集群实现JAR

    terracotta-eclipse-plugin-3.7.7(terracotta的Eclipse插件)

    terracotta-eclipse-plugin-3.7.7-2013-08-19_16-03-48.tar(terracotta的Eclipse插件) 发现官网挺卡的,有时候下不了,先传上来吧,供国内用户下载,这个算最新的吧。2014-02-17下载的。

    terracotta 集群设置说明(中文)

    记载了terracotta如何与tomcat、jetty等服务器的集群,解释了tc-config.xml中各个配置的作用

    http://www.terracotta.org/

    暗示我们关注的是Terracotta公司,这是一个专注于提供分布式数据管理解决方案的公司,特别是以其开源产品Ehcache和分布式内存计算平台Quintessa闻名。 Terracotta的技术使应用程序能够利用集群硬件的资源来提高性能...

Global site tag (gtag.js) - Google Analytics