`
coconut_zhang
  • 浏览: 531687 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

大型网站的集群部署(非session复制方式)

 
阅读更多

网站的集群部署动态部分可以采用tomcat的session复制功能,事实表明,在并发量达到一定数量级的情况下,用session复制功能会引起性能问题,这几天研究了下MSM的一个开源项目,本部署方式也基与此,主要解决:

 

  1. tomcat的单点故障问题;
  2. tomcat集群;
  3. nginx负责均衡,采用默认IP分发方式;
  4. 一个简单的web程序测试
测试环境:Linux CentOS版

步骤如下:

  1. 安装nginx;
  2. 在Linux的/usr/local下放置两个tomcat6,并修改相应的端口;
  3. 在Linux上安装MemCached最新版,启动memcached;
  4. 一个最简单的登录程序部署到tomcat6上,模拟登录;
  5. 修改Tomcat的server.xml,如下(其中memLogin为工程名):
Xml代码 复制代码 收藏代码
  1. <Context path="/memLogin" docBase="memLogin" reloadable="true" source="org.eclipse.jst.jee.server:memLogin">  
  2.  <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  3.     memcachedNodes="n1:192.168.1.6:11211"  
  4.     sticky="false"  
  5.     lockingMode="auto"  
  6.     requestUriIgnorePattern=".*\.(swf|ico|png|gif|jpg|css|js)$"  
  7.     transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"  
  8.     />  
  9. </Context>   
<Context path="/memLogin" docBase="memLogin" reloadable="true" source="org.eclipse.jst.jee.server:memLogin">
 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:192.168.1.6:11211"
    sticky="false"
    lockingMode="auto"
    requestUriIgnorePattern=".*\.(swf|ico|png|gif|jpg|css|js)$"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
</Context> 
 
测试过程(修改hosts文件,将www.test.com到192.168.1.6):

输入:http://www.test.com/memLogin,如下图:



 登录后:



 
可以发现,目前用的是tomcat1,现在在Linux上关闭tomcat1,通过负载均衡让其使用tomcat2,看session是否能保持,关闭后,在当前页面刷新,如下图:


 可以看到,现在已经使用tomcat2了,但session仍然保持着。

以上的部署过程基于nginx+tomcat6!
分享到:
评论

相关推荐

    网站架构技术

    大型网站架构演化 大型网站软件系统的特点 大型网站架构演化发展历程 初始阶段 应用服务和数据服务分离 使用缓存改善网站性能 缓存类型 本地缓存 分布式缓存 缓存产品 redis 业界...

    Java思维导图xmind文件+导出图片

    初步认识RabbitMQ及高可用集群部署 详解RabbitMQ消息分发机制及主题消息分发 RabbitMQ消息路由机制分析 RabbitMQ消息确认机制 Redis redis数据结构分析 Redis主从复制原理及无磁盘复制分析 Redis管道模式...

    应用服务器中间件技术要求.doc

    应 " " "提供较大型系统集群应用案例。 " " "支持会话亲和。均衡负载策略支持简单轮转、加权轮转" " "、随机、备份等方式。 " " "必须支持异构Cluster。即当硬件平台或操作系统不是 " " "同一产品时,Web应用服务器...

    基于javatcpsocket通信的拆包和装包源码-distributed:分散式

    3、大型网站 访问量(tps每秒传输的事物处理个数、qps每秒查询率) 数据量(存储数据量) 4、读写分离 5、搜索引擎 6、缓存、限流、降级、分库、表拆分(500w~1000w) 7、解决session跨域 cookie 存sessionid,...

    fourinone-3.04.25

    3、一次性启动多工人进程支持,可以通过程序api一次性启动和管理“ParkServer/工头/工人”多个进程,并附带良好的日志输出功能,用于代替写批处理脚本方式,方便部署和运行。 4、增加了相应指南和demo。 本软件...

    Fourinone分布式并行计算四合一框架

     1、元数据访问,添加删除,按块拆分, 高性能并行读写,排他读写(按文件部分内容锁定),随机读写,集群复制等  2、对集群文件的解析支持(包括按行,按分割符,按最后标识读取)  3、对整形数据的高性能读写支持...

    Fourinone分布式计算框架

    “农民工”为一个计算节点,可以部署在多个机器,它由开发者自由实现,计算时,“农民工”到“手工仓库”获取输入资源,再将计算结果放回“手工仓库”返回给“包工头”。“包工头”负责承包一个复杂项目的一部分,...

    JAVA上百实例源码以及开源项目

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    JAVA上百实例源码以及开源项目源代码

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

Global site tag (gtag.js) - Google Analytics