`
OneEyeWolf
  • 浏览: 105314 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

群集的存在意义

    博客分类:
  • tech
阅读更多
     近来为客户新做一个电子商务网站,部门经理天天给我说要把群集做进方案里,听的都吐了,在没有对于用户服务需求真正在进行好认真的分析的前提下,就将群集做进方案里,真的觉得很厌烦。
   
    我觉得即使对于中型的电子商务网站,也不一定需要群集,群集只会增加复杂度,甚至有可能延长用户请求的响应时间。同时限制Web应用的开发方案,如对于重型的基于SessionWeb-Flow方案,你就要考虑不能使用了。但对于电子商务网站,web-flow的应用很多,想像一个网站下单的过程,-查询-预订-登陆-填写需求-填写配送单-信用卡担保(或网上支付)-生成订单。使用wegbflow框架很方便,但在群集环境下,却有性能负担。
    我觉得基于apache的前导load-balancer方案,已经足够了,它可以持续将同一个Session的请求,分发给同一个worker进行处理。没有必要再使用群集来进行Session复制。

   
分享到:
评论
29 楼 zzsczz 2006-12-29  
我不懂的。。。。

涉及到部署和框架的选择,这需要很多经验和影响决策的力量。

字面上看,意义就是  提供更多的吞吐量  和 卖个更好的价钱
28 楼 balaschen 2006-12-27  
使用中心session server,商业的有个叫tangosol,开源的可以用memcache或者自己搞一个,参考这个:
http://www.huihoo.com/middleware/database/elong.html
27 楼 sizhefang 2006-12-27  
我们用的是四台服务器,每台装一个Tomcat.另外还有一台服务器,装apache.Tomcat文档上是不建议对两台以上的Web服务器做群集的.有时间我可以做一下四个Tomcat做群集的方案,试一下性能怎么样
26 楼 LucasLee 2006-12-27  
sizhefang 写道

如果我把用户Id放在cookie中,在项目中有一个BaseAction,每次有一个新请求的的时候,都到数据库去load.这样就可以实现您说的必须使用session的情况,也许您会说每次都load一次数据库,会影响效率.但在我们的项目中速度还是可以的.自己很讨厌考虑session复制这样造成的速度影响.当然目前只停留在Tomcat的层面上.对其他AppServer的session复制性能没有真实的在项目中应用过,不便多说


我没有象你这么用过。同时我觉得是不是你们对于session复制的性能影响太过于担忧了?session复制的影响一般在cluster里有多台机器时会比较明显,如果只有两台机器,那么序列化session的字节数是可以算得出来的。典型的,一次复制约为100k-200k,在cluster内部,网络带宽是100M-1000M,内存花费也很小。这个性能的花费,不会比你每次到数据库查询快些么?

而且,你只是试验了你的方法,觉得性能影响还不大,你没有试过使用session复制的方法,说不定性能更高,或者你也感觉不出性能的变化。
25 楼 sizhefang 2006-12-27  
Lucas Lee 写道
如果可以,当然可以只采用Load balance的方案。
这种情况适合公开的页面,即不需要用户登录。

但如果需要用户登录才能访问的页面,你又如何不用session做呢?我暂时还真不知道有这种方式。所以如果在这种情况下,必须使用session,那么具体的session共享的方式是可以讨论的,有的是复制,有的是在一个共享的资源里统一访问,比如数据库,或者单独的session服务器。不要把session复制当作唯一的session共享方法。

或者,一个网站中可以分为两个部分,一般访问量最大的部分很可能是不需要用户登录即可访问的,比如sina的新闻,这部分可以使用load balance;而另一部分需要用户登录,可以使用load balance+cluster。

所以,只采用load balance还是再加上cluster,是取决于应用需求的。

如果我把用户Id放在cookie中,在项目中有一个BaseAction,每次有一个新请求的的时候,都到数据库去load.这样就可以实现您说的必须使用session的情况,也许您会说每次都load一次数据库,会影响效率.但在我们的项目中速度还是可以的.自己很讨厌考虑session复制这样造成的速度影响.当然目前只停留在Tomcat的层面上.对其他AppServer的session复制性能没有真实的在项目中应用过,不便多说
24 楼 LucasLee 2006-12-27  
如果可以,当然可以只采用Load balance的方案。
这种情况适合公开的页面,即不需要用户登录。

但如果需要用户登录才能访问的页面,你又如何不用session做呢?我暂时还真不知道有这种方式。所以如果在这种情况下,必须使用session,那么具体的session共享的方式是可以讨论的,有的是复制,有的是在一个共享的资源里统一访问,比如数据库,或者单独的session服务器。不要把session复制当作唯一的session共享方法。

或者,一个网站中可以分为两个部分,一般访问量最大的部分很可能是不需要用户登录即可访问的,比如sina的新闻,这部分可以使用load balance;而另一部分需要用户登录,可以使用load balance+cluster。

所以,只采用load balance还是再加上cluster,是取决于应用需求的。
23 楼 ithero 2006-12-27  
楼主只看到提高程序开发的复杂,我看是你没有了解客户的需求吧,一个电子商务网站,如果真的是规模上一定程序,你那个区区apache提供的load-
balancer岂能满足性能需求.??再者你标题是集群的意义,言词中去有扯着session状态同步的问题,这还是项目从架构时就应该考虑的吧.建议你多去了解下集群及存在的意义
22 楼 抛出异常的爱 2006-12-27  
codeutil 写道

电子商务网站不考虑集群,莫非每天只想接几个单???

集群是把系统给做简单了而不是变复杂,

试想某天业务量太大导致服务器撑不住了,
这个时候前期考虑到集群的只需要买点硬件装好系统配置一下就ok了.
而那些没有集群支持的, 就是改代码改得吐血恐怕也很难优化提升性能吧???

不过在实际应用中,集群助长了写低效率的代码的惰性,因为可以用硬件来弥补性能的不足,就懒得动脑筋把代码写的更好了.
当然在商务上倒也带来好处,因为硬件由用户买单,而帮用户采购硬件又可以赚取利润.


电子商务非要集群么?
。。。。。。。。。
我看未必一小时要多少并发才要用到集群?
(现在的服务器比以前的服务器性能高了N个数量级了。。)
明年的新服务器会比今年的服务器更高
21 楼 sizhefang 2006-12-27  
我近期从事的项目,是一个类似youtube的网站,由于项目自身的需求只采用了loadbalance,没有搞群集,感觉速度还可以.但没有仔细对这种方案和用loadbalance+群集等方案做过性能测试,虽然测试需要考虑的因素很多,但好象很少有哪位哥们拿出自己的真实测试数据,用数据说服别人
20 楼 codeutil 2006-12-27  


那你的标题就不应该叫做" 集群的存在意义",而是"Session复制的存在意义"!!!

Session复制是没有必要的,对于应用比较大的,可以采取独立的 Session Server. 所有Session信息都存放在Session Server中,
不论前端的哪个服务器挂了,只要Session Server正常,用户凭原有的SessionId即可继续正常操作.

比如一个下单的过程,只要对Session Wrap一下,然后把部分特定信息存放到独立的Session Server中,对于开发人员除了要限制存放到Session Server的信息是可序列化的之外,其它的操作都是透明的. 并不增加任何开发难度.




19 楼 yuxie 2006-12-27  
有些appserver(weblogic)可以把session记到数据库里边。怕session复制的话可以优先考虑这种方案,只要不把大对象往session里边仍,性能也还过得去。这样appserver前端只要简单的Round robin分发就可以了。
18 楼 OneEyeWolf 2006-12-27  
codeutil 写道

电子商务网站不考虑集群,莫非每天只想接几个单???

集群是把系统给做简单了而不是变复杂,

试想某天业务量太大导致服务器撑不住了,
这个时候前期考虑到集群的只需要买点硬件装好系统配置一下就ok了.
而那些没有集群支持的, 就是改代码改得吐血恐怕也很难优化提升性能吧???

不过在实际应用中,集群助长了写低效率的代码的惰性,因为可以用硬件来弥补性能的不足,就懒得动脑筋把代码写的更好了.
当然在商务上倒也带来好处,因为硬件由用户买单,而帮用户采购硬件又可以赚取利润.





   难道使用load-balance,达不到效果吗,你对方案1,和方案2,有个仔细分析吗,我说的不使用群集,实际上是指应用层上不使用基于Session-replication的群集,说白了也就是Session复制。

    我还是非常非常的迷惑,很多方案中,都不使用Session,尽量将数据放在Cookie中,以此来提高网站的性能。在EJB方案中,提倡使用无状态SessionBean。我觉得是站着说话不腰疼,那有那么多简单的应用,只有简单的无状态就可以搞定了,那写代码的复杂度又会成倍的增加,就那我说的一个下单的过程,一个单据大量的信息,如果不放在Session中,还真不好写。
    从另一方面讲,如果都搞成无状态,那还要Session replication做什么。还不如,就要个apache做前端的Load-balancer 或者 使用硬件都可以了。

    所以我再明确一下我的提议:只需要apache来作为端的load-balancer或者使用Robbin建议的基于硬件的load-balancer.就可以了。这个方案难道不比load-balancer + session replication 简单有效吗。而且开发人员在编写web应用时,不用担心session的负担。
17 楼 codeutil 2006-12-26  

Tomcat + SNA Filter +Memcached.这样也可以简单集群.
16 楼 codeutil 2006-12-26  

电子商务网站不考虑集群,莫非每天只想接几个单???

集群是把系统给做简单了而不是变复杂,

试想某天业务量太大导致服务器撑不住了,
这个时候前期考虑到集群的只需要买点硬件装好系统配置一下就ok了.
而那些没有集群支持的, 就是改代码改得吐血恐怕也很难优化提升性能吧???

不过在实际应用中,集群助长了写低效率的代码的惰性,因为可以用硬件来弥补性能的不足,就懒得动脑筋把代码写的更好了.
当然在商务上倒也带来好处,因为硬件由用户买单,而帮用户采购硬件又可以赚取利润.



15 楼 robbin 2006-12-26  
Lucas Lee 写道
就我阅读Tomcat的集群文档来说,集群(Cluster)和负载均衡(load balance)是两个问题,但通常是一起结合使用的。
Cluster是指几台服务器之间关联,一般主要指session 复制,使之成为一个整体,访问任何一台服务器都可以达到相同的效果;
Cluster建成后,需要利用Load balancer来执行请求的分发,就是分发到Cluster中具体的服务器上。


tomcat的session复制性能是很糟糕的,而且tomcat文档自己都说不建议两个以上node的同步。

JBoss对于tomcat的session同步进行了改进,使用JBossCache,所以性能会好很多。node复制方式也是master slave方式的。
14 楼 抛出异常的爱 2006-12-26  
OneEyeWolf 写道
     近来为客户新做一个电子商务网站,部门经理天天给我说要把群集做进方案里,听的都吐了,在没有对于用户服务需求真正在进行好认真的分析的前提下,就将群集做进方案里,真的觉得很厌烦。
   
    我觉得即使对于中型的电子商务网站,也不一定需要群集,群集只会增加复杂度,甚至有可能延长用户请求的响应时间。同时限制Web应用的开发方案,如对于重型的基于SessionWeb-Flow方案,你就要考虑不能使用了。但对于电子商务网站,web-flow的应用很多,想像一个网站下单的过程,-查询-预订-登陆-填写需求-填写配送单-信用卡担保(或网上支付)-生成订单。使用wegbflow框架很方便,但在群集环境下,却有性能负担。
    我觉得基于apache的前导load-balancer方案,已经足够了,它可以持续将同一个Session的请求,分发给同一个worker进行处理。没有必要再使用群集来进行Session复制。

   

写N个频道,每个频道都用一台服务器。。。。
之后跟他们说已经集群了。。。。
session?可以不用
可以用数据库开一个表用来存用户信息。。。。

IAmOK 写道
那些门户网站的集群和均衡负载是怎么做的?
chinaren好像是java的门户,它是怎么做的?

不用session或用域名分配:
天涯上
www13.tianya.cn
http://www12.tianya.cn/index.asp
.....
只要你不手动去改一般都不会有session问题。。。。
13 楼 LucasLee 2006-12-26  
OneEyeWolf 写道

   如果是开发者当然不需要了,只需要code就行了,出了问题,只要不是自己代码的问题,就不用负责。以你的水平不应当是开发者,应当是designer or architector 吧,透明, 只是从开发来讲的一种术语而已或者是商业解决方案的一个宣传,我们在不断的学习技术的过程中,这种口号见的还少吗,可是有多少人仍然陷于实际的困境中,有多少调优者为了查找一个性能瓶颈点,或者莫名其妙的,不可再现的问题,痛苦的不得了,这些你都经历过吧, 你见过call center 的电话记录中,记录了多少个莫名其妙的,难以再现的投诉吗。


看来,你已经是深恶痛绝,颇有微词了。我并不清楚你的处境,不过可以看出你最近心情不佳啊。
呵呵,此时不适合深入谈技术。

另:architector 应为architect
12 楼 IAmOK 2006-12-26  
那些门户网站的集群和均衡负载是怎么做的?
chinaren好像是java的门户,它是怎么做的?
11 楼 shaucle 2006-12-26  
俺做过14台机子的简单集群,SUSE的
不说配制复杂吧,主要是问题多,而且SUSE的版本之间也有问题
而且中间中是间间断断出现问题.
"对于开发者来说都是透明的"并没能向方档"承诺"的一样,不过可能是俺还不熟悉.

另外:俺认为理想情况下cluster中不要放session,也就是说cluster应该是stateless的,(只是理想情况下)相当一个logic(service) layer(这也是俺理解的"不要分布你的对象")

很多情况的是可交给前台或数据库,甚至client去处理的.
10 楼 OneEyeWolf 2006-12-26  
Lucas Lee 写道
OneEyeWolf 写道
Lucas Lee 写道
就我阅读Tomcat的集群文档来说,集群(Cluster)和负载均衡(load balance)是两个问题,但通常是一起结合使用的。
Cluster是指几台服务器之间关联,一般主要指session 复制,使之成为一个整体,访问任何一台服务器都可以达到相同的效果;
Cluster建成后,需要利用Load balancer来执行请求的分发,就是分发到Cluster中具体的服务器上。


我的意思,你不明白吗,就是不要session复制,避免技术复杂化带来的副作用?

在网站下单时,宁愿让整体的会话请求失败,也不愿意在会话的过程中间去失败。


我真的不太明白,群集对于开发者来说怎么样把技术复杂化了?实际上,群集,或者部署机器上用的什么高级UNIX服务器,等等,对于开发者来说都是透明的。

你认为session复制,会导致网站下单时,在中间过程失败么?我认为这种情况应该是群集去考虑的,如果他没有处理好这个问题,我认为他的确没有设计好,如果他处理好了,那么这个担心是因为你还不太了解session复制不会带来什么应用逻辑上的问题。




   如果是开发者当然不需要了,只需要code就行了,出了问题,只要不是自己代码的问题,就不用负责。以你的水平不应当是开发者,应当是designer or architector 吧,透明, 只是从开发来讲的一种术语而已或者是商业解决方案的一个宣传,我们在不断的学习技术的过程中,这种口号见的还少吗,可是有多少人仍然陷于实际的困境中,有多少调优者为了查找一个性能瓶颈点,或者莫名其妙的,不可再现的问题,痛苦的不得了,这些你都经历过吧, 你见过call center 的电话记录中,记录了多少个莫名其妙的,难以再现的投诉吗。

相关推荐

    具有时滞的多智能体系统的群集运动分析.pdf

    这项工作对于理解具有时滞的多智能体系统的行为以及优化设计群集控制策略具有重要意义,对于系统开发和实际应用提供了理论参考。 总的来说,这篇文章贡献了以下关键知识点: 1. Cucker-Smale模型在群集运动分析中的...

    一种公寓式建筑物三维产权群集自动构建方法.docx

    对于公寓式建筑物,产权分布通常具有聚集性,产权体由多个相邻的胞腔组成,而且胞腔之间可能存在连通性。因此,公寓式建筑物成为研究自动构建产权群集的理想选择,因为它们的结构特性有助于确定产权体和胞腔之间的...

    带通信时滞的多智能体系统的群集运动.pdf

    通过设定特定条件,证明即使存在时滞,智能体间的通信仍然可以促进群集行为的形成。这意味着,通过合理设计系统参数,可以克服通信时滞带来的负面影响。 【数值仿真】 论文还进行了C-S模型的数值仿真,以验证理论...

    论文研究-等级制度下带有时变时滞的群集运动.pdf

    在研究论文《等级制度下带有时变时滞的群集运动》中,作者深入探讨了在具有领导层级的多智能体系统中,即使在存在时变通信延迟的情况下,智能体(Agent)之间如何实现群集运动(Flocking Motion)。群集运动是指一群...

    Linux群集任务分配算法的探讨.pdf

    【Linux群集任务分配算法的探讨】 ...总结来说,Linux群集任务分配算法的研究对于优化集群性能、提升服务质量具有重要意义。随着技术的发展,不断改进和创新的分配策略将更好地应对日益复杂的计算需求和网络环境。

    Atang群集软件+DB2Linux下配置实例.

    - 确保网络中不存在预定的浮动IP地址(如192.168.0.213),避免IP冲突。 2. **DB2的安装**: - 从IBM官方网站下载DB2的安装包,并在主节点上关闭其他主机,进行rpm包的安装。 - 在安装过程中,特别注意安装依赖...

    基于群集技术的数据集中管控系统.pdf

    然而,这些解决方案依赖于操作系统的权限和接口,一旦系统本身存在漏洞,其防护效果将大打折扣。 文章提出了一种基于群集技术的新型底层基础平台构建方法。群集技术是一种将多个独立的计算资源(如服务器)组合成一...

    群集系统分群行为建模与控制研究进展

    群集系统的分群行为表征为一个聚合的母群分裂成多个子群的现象, 探讨其产生机理和控制方法具有重要的理论意义和应用价值. 鉴于此, 从分群行为的理论建模和控制方法两个角度出发, 对近年来群集系统分群运动研究的主要...

    大数据-算法-基于混沌蚂蚁的群集协同求解算法及应用.pdf

    通过对蚂蚁群体行为的混沌特性研究,作者发现蚂蚁个体行为的混沌映射与群体的周期性行为之间存在内在联系,这为理解和设计新的优化算法提供了新的视角。 论文的主要研究内容包括以下几个方面: 1. 混沌同步视角下...

    多分区对齐群集

    此外,本文提出的模型考虑了不同视图之间可能存在的集群结构的一致性,这使得各个视图间的信息融合变得更加合理和高效。 通过实验验证,多分区对齐群集方法展示出在多个真实世界数据集上的优越性。这表明该方法在...

    DARC:基于群集的无线传感器网络中的分布式和自适应路由协议

    然而,群集策略也存在一些固有的问题,如群集头节点的能量消耗过快,以及群集间的通信平衡问题。 DARC协议的提出,正是为了解决群集策略在实际应用中出现的这些问题。它特别关注群集头节点与其它群集以及基站之间的...

    Optimized flocking of autonomous drones in confined envs.pdf

    这种优化的群集控制策略对于无人机技术的发展具有重要意义,它不仅提高了无人机系统的整体效率,还增强了其在复杂环境中的适应性和安全性。未来,随着无人机技术的不断进步,这种优化模型的应用前景将更加广阔,可能...

    论文研究 - 卢旺达咖啡种的遗传多样性评估及其对咖啡育种的意义

    遗传变异在育种计划中很重要,... 在群集I和II之间观察到最高的群集间距离475,而群集II中的群集内最高距离(62)。 表型标记提供了一种有效的方法来衡量咖啡种之间的遗传距离,并确定了潜在的供体以供将来的育种工作。

    可重配置计算系统中硬件任务的群集调度

    通过使用DAG来表示任务,结合启发式和动态规划调度策略,可以在提高系统性能的同时,减少配置和执行的时间开销,这对于提升FPGA设备的利用率和整个计算系统的效率具有重要意义。随着技术的发展和实际应用需求的增加...

    VMware Workstation 6.0 中 Cluster 配置指南

    ### 相关知识点 #### 一、群集技术概述 **服务器群集**是一种通过将多台服务器组织在一起,提供高可用性、故障恢复、可伸缩性和可管理性的技术。...这对于搭建稳定可靠的群集环境具有重要的指导意义。

    轻松实现网络负载平衡

    - **端口规则管理**:默认情况下存在一个端口规则,用于根据每个成员的负载量分配客户端通信。在此实验中,删除了默认端口规则以实现基于优先级的负载分发机制。 - **添加第一个节点**:将Server作为第一个节点加入...

    GetLastError返回值的意义

    ### GetLastError返回值的意义 在Windows操作系统中,`GetLastError`函数是用于获取上一个错误代码的一个非常实用的工具。此函数常被用作诊断程序运行过程中遇到的问题,并为开发人员提供有关错误的具体信息,以便...

    保持群集的网络流草图

    聚类方法在许多数据处理任务中都有应用,尤其在需要将数据简化为有意义的表示形式时。 在实验中,该框架适应了线性速率并提供了准确的查询结果。在现实世界中的基于轨迹驱动的模拟显示,所提出的框架在广泛的参数下...

Global site tag (gtag.js) - Google Analytics