`
ahuaxuan
  • 浏览: 640695 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

spring的集群问题的疑惑

阅读更多
现在公司里有一个项目,想做spring的集群,现在他们的做法是一台webserver,比如说tomcat,然后把spring的应用部署到多个applicationserver上,然后webserver通过ejb的rmi来调用applicationserver上的spring程序,就是说webserver和spring应用程序其实是在多个不同的jvm上的,他们之所以这么做说是为了提高性能,请教有经验的老手,能不能这样做,有没有人做过类似的东西,这样做有什么样的优点和缺点。

如果直接把webserver和spring应用部署到一个jvm上,然后将多台相同的部署情况的机子做集群可以吗,哪一个更好呢???

分享到:
评论
17 楼 zgd 2006-09-22  
可惜sticky session还要遇上一个问题,重启tomcat
16 楼 galaxystar 2006-09-20  
谢谢codeutil,黏性的会话,是不错的选择!
15 楼 codeutil 2006-09-20  
stickysession 就是用来干这个的,不然怎么会叫 黏性会话。


galaxystar 写道
谢谢robbin,mod_proxy_balancer还算好配置,真的很不错!
2.2的apache改进很大啊!

另,横向的配制,是不是指session只跟随一台,以后所有请求跟着这台服务器走?
14 楼 galaxystar 2006-09-20  
谢谢robbin,mod_proxy_balancer还算好配置,真的很不错!
2.2的apache改进很大啊!

另,横向的配制,是不是指session只跟随一台,以后所有请求跟着这台服务器走?
13 楼 ahuaxuan 2006-09-20  

robbin写道:
不要用分布式,优点没有,缺点一大把,应该用横向的cluster,就是apache+tomcat那种。这方面讨论可以看看《without EJB》,Rod Johnson分析的非常详尽。



without ejb,255页,关于deployment clustering部分写到:当控制权从一台单独的转发服务器中转到具体处理的服务器后,所有的调用都是本地的(通过引用调用)

这句话里的转发服务器可以看作是apache,具体的处理服务器就是tomcat,所以合理的集群方式应该是一台apache+多个tomcat形成的集群
12 楼 codeutil 2006-09-20  
效果很好,当然用户也不多,平均同时在线才1600左右。
唯一麻烦的是目前的web部署方式不是很好,
导致更新文件的时候需要复制20次。
然后一个一个重起。

最大的优点,就是tomcat个数基本上可以无限增加。


ahuaxuan 写道
codeutil 写道

我们现在一个系统启动了20个tomcat,每个tomcat设置的512m内存。
每个tomcat都有自己完整的spring的东西。


这种集群确实是大家比较认可的集群方式,请问同学,效果怎么样啊
11 楼 robbin 2006-09-20  
ahuaxuan 写道
robbin终于来了,我觉得我们公司的做法不太合理,请教robbin,这样做有什么样的缺点和优点


不要用分布式,优点没有,缺点一大把,应该用横向的cluster,就是apache+tomcat那种。这方面讨论可以看看《without EJB》,Rod Johnson分析的非常详尽。
10 楼 ahuaxuan 2006-09-20  
codeutil 写道

我们现在一个系统启动了20个tomcat,每个tomcat设置的512m内存。
每个tomcat都有自己完整的spring的东西。


这种集群确实是大家比较认可的集群方式,请问同学,效果怎么样啊
9 楼 codeutil 2006-09-20  

我们现在一个系统启动了20个tomcat,每个tomcat设置的512m内存。
每个tomcat都有自己完整的spring的东西。


8 楼 ahuaxuan 2006-09-20  
robbin终于来了,我觉得我们公司的做法不太合理,请教robbin,这样做有什么样的缺点和优点
7 楼 codeutil 2006-09-20  
ProxyPass / balancer://tomcatcluster/  lbmethod=byrequests stickysession=JSESSIONID  nofailover=Off timeout=5  maxattempts=3
ProxyPassReverse / balancer://tomcatcluster/

<Proxy balancer://tomcatcluster>
BalancerMember ajp://192.168.0.36:8009 smax=10 max=10 ttl=5 timeout=5 acquire=3  route=tomcat1
BalancerMember ajp://192.168.0.36:8029 smax=10 max=10 ttl=5 timeout=5 acquire=3  route=tomcat2
BalancerMember ajp://192.168.0.36:8039 smax=10 max=10 ttl=5 timeout=5 acquire=3  route=tomcat3
</Proxy>


robbin 写道
galaxystar 写道
一台apache作为均衡负载,多台应用服务器部署tomcat,然后,通过apache给tomcat分配请求!(今天刚知道apache2.2.0新的代理模块mod_ajp)
问题是session绑定到单台机子上,还是一登录后多台机子状态复制,这个比较难搞!
建议用cookie,而不是用session!通过过滤器,对所有需要登录的页面先做cookie提取,封装成对象填入session!
这样,应用里还是取的session!
还有,你这样的部署,肯定是分布式应用了,数据库服务器族与cache服务器族,搜索服务器族与应用服务器族之间怎么协调,消息群发,线程,容灾也有N多问题!且各个族又可能是单独的群集!
如果你都能架设出来,也不容易啊!



用apache2.2的mod_proxy_balancer,支持session sticky,我以前给出过配置,搜索一下。
6 楼 robbin 2006-09-20  
galaxystar 写道
一台apache作为均衡负载,多台应用服务器部署tomcat,然后,通过apache给tomcat分配请求!(今天刚知道apache2.2.0新的代理模块mod_ajp)
问题是session绑定到单台机子上,还是一登录后多台机子状态复制,这个比较难搞!
建议用cookie,而不是用session!通过过滤器,对所有需要登录的页面先做cookie提取,封装成对象填入session!
这样,应用里还是取的session!
还有,你这样的部署,肯定是分布式应用了,数据库服务器族与cache服务器族,搜索服务器族与应用服务器族之间怎么协调,消息群发,线程,容灾也有N多问题!且各个族又可能是单独的群集!
如果你都能架设出来,也不容易啊!



用apache2.2的mod_proxy_balancer,支持session sticky,我以前给出过配置,搜索一下。
5 楼 galaxystar 2006-09-20  
让前端服务器只做均衡负载!
均衡负载服务器一般不做应用,只做分发,宕机的机会比较少!
就算宕机,容灾的服务器可以马上接过它的责任!或者直接将请求给tomcat应用服务器
4 楼 ahuaxuan 2006-09-20  
那合理的做法应该是什么样子的呢
3 楼 galaxystar 2006-09-20  
我的看法是,你说的群集,只会浪费服务器资源!应用程序只将spring的分开?WEB层一台服务器调那么多应用服务器,性能上有很大的提升吗??一定数量级的并发,一台web能吃得消?WEB的责任太大了吧?
WEB服务器宕机,你整个应用宕机哦!
2 楼 ahuaxuan 2006-09-20  
一台apache作为均衡负载,多台应用服务器部署tomcat,然后,通过apache给tomcat分配请求!(今天刚知道apache2.2.0新的代理模块mod_ajp)
问题是session绑定到单台机子上,还是一登录后多台机子状态复制,这个比较难搞!
建议用cookie,而不是用session!通过过滤器,对所有需要登录的页面先做cookie提取,封装成对象填入session!
这样,应用里还是取的session!

---------------------------

你说的是第二种情况的集群吧
1 楼 galaxystar 2006-09-20  
一台apache作为均衡负载,多台应用服务器部署tomcat,然后,通过apache给tomcat分配请求!(今天刚知道apache2.2.0新的代理模块mod_ajp)
问题是session绑定到单台机子上,还是一登录后多台机子状态复制,这个比较难搞!
建议用cookie,而不是用session!通过过滤器,对所有需要登录的页面先做cookie提取,封装成对象填入session!
这样,应用里还是取的session!
还有,你这样的部署,肯定是分布式应用了,数据库服务器族与cache服务器族,搜索服务器族与应用服务器族之间怎么协调,消息群发,线程,容灾也有N多问题!且各个族又可能是单独的群集!
如果你都能架设出来,也不容易啊!

相关推荐

    springcloud部署redis集群

    在SpringCloud框架中,部署Redis集群是实现高可用、数据持久化和分布式缓存的关键步骤。Redis是一款高性能的键值数据库,广泛应用于缓存、消息队列等多种场景。SpringCloud通过集成Spring Data Redis模块,使得在...

    spring + redis集群

    本文将深入探讨如何使用Spring Data Redis构建一个Redis集群,以及如何通过Spring框架来操作Redis集群,存储对象集合,并提供一个基于Maven的可运行项目示例。 首先,Spring Data Redis是Spring框架的一个模块,它...

    spring实现集群同步锁

    Spring作为一款广泛使用的Java应用框架,提供了多种方式来实现集群同步锁。本篇文章将深入探讨如何利用Spring在集群环境中实现同步锁,并以Redis作为分布式锁的存储媒介进行实践。 首先,我们要理解什么是集群同步...

    spring quartz 集群模式

    标题 "spring quartz 集群模式" 涉及到的是Spring框架与Quartz调度器在集群环境下的集成和配置。Quartz是一个开源任务调度框架,而Spring则提供了与Quartz的无缝集成,使得在Java应用中管理和执行定时任务变得更加...

    Spring集群整合Quartz

    在Spring集群中,需要处理以下问题: - 单例Job的冲突:在集群环境中,同一个Job可能会被多个节点同时启动。可以通过实现StatefulJob接口,或者使用DistributedJobDetailBean避免这个问题。 - 任务的幂等性:确保...

    quartz整合springbatch动态集群定时实现mysql参考

    在这个“quartz_springbatch_dynamic”项目中,我们将看到如何将这两个强大的工具结合起来,以实现动态集群环境中的定时任务执行,并使用MySQL作为数据存储。 Quartz是一个开源的作业调度框架,允许开发者创建、...

    spring集成quartz集群配置

    本文将深入探讨如何在Spring环境中集成Quartz以实现集群配置,以便于在分布式环境中进行高效的任务调度。 首先,理解Spring集成Quartz的核心在于Spring的Job接口和Quartz的Scheduler。Spring提供了`org.spring...

    springcloud集群搭建

    在构建分布式系统时,Spring Cloud是一个非常流行的微服务框架,它提供了一系列工具和服务来帮助开发者快速构建...在整个过程中,良好的日志管理和跟踪系统(如Zipkin或Sleuth)也至关重要,以便于排查问题和优化性能。

    quartz与spring集群Demo

    针对Quartz与Spring做集群的Demo实例,主要解决了Quartz的JOB序列化问题。 源代码说明: support pkg:扩展Spring与Quartz集成的不足之处。 core pkg: 是自身调度业务的封装 实例运行依赖Oracle数据库,根据quartz...

    Quartz2.2.1和Spring3.1.1集群

    总的来说,将Quartz2.2.1与Spring3.1.1集成并在集群环境中运行,需要深入理解Quartz的配置和Spring的bean管理,同时关注集群的稳定性和容错性。通过合理配置和编程,我们可以创建一个高效、可靠的定时任务执行系统。...

    Spring集成redis集群

    **Spring集成Redis集群详解** 在现代的Web应用程序开发中,数据缓存扮演着至关重要的角色,而Redis作为一款高性能的键值数据存储系统,被广泛应用于缓存、消息队列等多个场景。当业务规模扩大,单机Redis可能无法...

    Spring + Ibatis 与mysql集群集成

    本教程将深入探讨如何将Spring、Ibatis框架与MySQL集群集成,以实现高效、可靠的数据库操作。 首先,让我们了解Spring和Ibatis。Spring是一个全面的Java应用开发框架,它提供了依赖注入、面向切面编程、事务管理等...

    redis集群以及Spring-data-redis操作集群

    Redis集群是为了解决单一实例在高并发、大数据量场景下的性能瓶颈问题而设计的。Redis集群通过数据分片(Sharding)策略将数据分散存储在多个节点上,实现负载均衡,增强系统的扩展性和可用性。在Redis 3.0及以上...

    SpringCloud Eureka集群项目

    本项目是一个SpringCloud Eureka集群的示例,旨在帮助开发者了解如何设置和运行一个包含双节点的Eureka集群,以实现高可用的服务注册中心。 首先,我们来理解Eureka的基本工作原理。Eureka服务器作为服务注册中心,...

    spring quartz集群配置

    此外,还需要确保所有集群节点的时钟同步,避免因时间不一致导致的任务执行问题。 **5. 监控和管理** Quartz提供了一个Web界面——`Admin Console`,可以用来监控和管理作业和触发器。在集群环境中,每个节点都...

    quartz整合springbatch定时集群实现mysql参考模版

    总的来说,"quartz_springbatch"模版提供了一个完整的解决方案,用于构建基于Quartz和SpringBatch的定时任务集群,且与MySQL数据库集成,确保数据的可靠性和任务的高可用性。通过学习和理解这个模版,开发者可以快速...

    Spring+Quartz 集群

    本篇文章将深入探讨如何在Spring环境中集成Quartz以构建一个高可用的集群。 首先,我们需要理解Spring和Quartz的核心功能。Spring作为一个全面的Java应用开发框架,提供了依赖注入(DI)、面向切面编程(AOP)以及...

    spring集成redis集群需要的jar.zip

    Spring + redis集群的集成 spring-data-redis-1.8.1.RELEASE.jar jedis-2.9.0.jar spring-data-commons-1.8.1.RELEASE.jar commons-pool2-2.4.2.jar

    websocket-cluster:这是一个针对WebSocket集群服务器的Spring Cloud项目。

    实战Spring Cloud的WebSocket体现此项目是一个WebSocket实施的实践,基于Spring Cloud。原理我们利用一致性哈希算法,构造一个哈希环,网关监听WebSocket服务实例的上下线消息,根据实例的变化动态地更新哈希环。将...

    quartz+spring分布式集群

    在“quartz+spring分布式集群”场景下,我们可以实现跨多个节点的作业调度,从而提高系统的可扩展性和可靠性。JDBC-JobStore是Quartz的一种存储策略,它利用数据库来存储作业和触发器的信息,使得在分布式环境中,多...

Global site tag (gtag.js) - Google Analytics