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

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

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

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

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

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

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

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

  • 简单易用

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

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

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

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

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

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

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

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

下图是Quartz与Terracotta整合后的系统架构:

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

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

Terracotta 3.2.1简介 (二)相关推荐

  1. TiDB 简介(二)

    参考:TiDB 简介_福海鑫森的博客-CSDN博客_tidb开发语言 TiDB 简介 | PingCAP Docs TiDB 是 PingCAP 公司自主设计.研发的开源分布式关系型数据库,是一款同时 ...

  2. 单元测试及NUnit测试框架简介(二)

    一.单元测试框架的选择 在选择单元测试框架时,可以从以下几个方面去考虑: 支持自动检测注册用例:框架能否支持简单地构造用例并自动注册测试用例到测试框架中: 支持测试Fixture:即是否支持为一组测试 ...

  3. PP模块快速入门之功能简介(二)

    根据以下任何一个随机模型进行预测:平均移动 ,指数平滑常数模型 ,指数平滑趋势模型 ,指数平滑季节性模型 ,组合趋势/指数平滑季节性模型 R/3可以用最适用分析来自动地选择随机模型,你也可以人工选择模 ...

  4. web API简介(二):客户端储存之document.cookie API

    概述 前篇:web API简介(一):API,Ajax和Fetch 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据.document.cook ...

  5. 【FFmpeg】FFmpeg 相关术语简介 二

    文章目录 一.码率与帧率 二.ffmpeg.ffplay.ffprobe 可执行文件 一.码率与帧率 帧率 : 帧频率 , 视频中每秒钟含有视频帧的帧数 , 一秒钟刷新多少张图像 , 连续移动的图像至 ...

  6. GCD简介二:多核心的性能

    一.概念 为了在单一进程中充分发挥多核的优势,我们有必要使用多线程技术.在低层,GCD全局dispatch queue仅仅是工作线程池的抽象.这些队列中的Block一旦可用,就会被dispatch到工 ...

  7. 网站开发综合技术 一 JavaScript简介 二JavaScript语法

    第1部分 JavaScript简介 1.JavaScript它是个什么东西? 它是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 2.它与Java有什么关系? 没有什么直接联系,java是S ...

  8. Terracotta 3.2.1简介 (一)

    Terracotta开源项目以及Terracotta公司 Terracotta是一款由美国Terracotta公司开发的著名开源Java集群平台.它在JVM与Java应用之间实现了一个专门处理集群功能 ...

  9. Terracotta 3.2.1简介 (三)

    部署.监控.维护 服务器与客户端的部署 Terracotta的部署非常简单. Terracotta服务器是独立运行的Java程序.用户只需要指定JDK的安装目录,设置配置文件,然后就可以在相应的硬件服 ...

最新文章

  1. ubuntu14.04配置中文latex完美环境(texlive+texmaker+lyx)
  2. Redis搭建(二):主从复制
  3. C语言socket connect()函数(初始化套接字上的连接)(未完)(如何测试socket是否已经断开,如何判断socket是否断开)
  4. OpenCASCADE绘制测试线束:图形命令之AIS 查看器——显示命令
  5. C++课程上 有关“指针” 的小结
  6. c语言让系统蓝屏,0x000000116,教您解决电脑蓝屏代码0x000000116
  7. Redis数据结构之列表
  8. 起面的英怯——幸运的舆图
  9. VAssistX的卸载方法
  10. HustOJ 基础搭建教程
  11. 一个手机阅读器的WebApp
  12. 【HTMLCSS】CSS当中设置背景图片不显示的问题
  13. linux创建运维账户流程,Linux运维养成记-账户与权限管理
  14. 初学python制作二维码以及最新感悟
  15. 独角推荐,只需一个邮箱号就可以注册购买阿里云国际版
  16. 共模扼流圈的工作原理与作用以及特点和应用详解
  17. JAVA SE (14)
  18. BGP线路,完美实现三网相互切换
  19. DS村村通工程(Prim算法)
  20. BIOS追code之PEI phase

热门文章

  1. 飞凌OK6410、TE6410、FL6410 等ARM11 开发板的区别——非常详细哦
  2. 随机变量序列的两种收敛性
  3. 【语音识别】动态时间规整算法(RTW)语音识别系统【含GUI Matlab源码 341期】
  4. 【数字信号】基于matlab GUI DTMF电话模拟系统(频谱图+时域图+语谱图)【含Matlab源码 2092期】
  5. oracle云erp产品有哪些,云ERP与传统ERP的区别有哪些百洋智能科技为您分析
  6. Excel插入XactiveX提示出错“不能插入对象”解决
  7. Vue key的作用
  8. AppList数据处理
  9. 关于(object sender, EventArgs e)
  10. unity中打包APP显示手机最顶端的状态栏