web中集群都是怎么实现的

1)比方说我先在有5台服务器,想做一个集群,是不是意味着我要把应用程序在5台服务器上分别部署?如果这样的话,session能使先共享吗?
2)怎么实现在集群中动态实现应用的部署?
3)现在好像都采用apache/nginx+server的模式,前者用来访问静态资源。具体是怎么部署的? 把应用中的所有静态资源挑出来?如果涉及到集群,这么搞是不是更麻烦?
4)以上问题如果放到.net环境下是不是同样?

1)比方说我先在有5台服务器,想做一个集群,是不是意味着我要把应用程序在5台服务器上分别部署?如果这样的话,session能使先共享吗?
根据中间件不同部署方式也不同。tomcat下面就要分别部署了,weblogic支持分别部署,也支持统一部署(两种方式各有优缺点,推荐分别部署)。
中间件基本上都支持session共享复制,不过实现方式可能有点区别(有的是基于容器,有的是基于memcache等等)。可参考之前的问题(关于jboss的):
[url]http://www.iteye.com/problems/94688[/url]
weblogic只要配置session策略即可。(weblogic8有的版本会存在session复制不了的情况,oracle技术支持也说低版本确实有bug)

2)怎么实现在集群中动态实现应用的部署?
动态实现应用部署?就是动态增加server,然后部署应用,并加入server集群组中么?这个要看你前端使用的负载均衡器是什么?如果是软负载(即使用中间件提供的分发器(http层),需要配置server组的ip列表,那么动态增加server并部署应用之后,需要重启分发器),如果是硬负载,那么与容器就没关系了,只需要把增加server的ip端口加到硬负载的列表中即可。如果是apache、ngnix之类的,也是需要修改集群的地址列表

3)现在好像都采用apache/nginx+server的模式,前者用来访问静态资源。具体是怎么部署的? 把应用中的所有静态资源挑出来?如果涉及到集群,这么搞是不是更麻烦?
2楼说的基本上够全面的了,这方面网上资料很多。

4)以上问题如果放到.net环境下是不是同样?
.net环境下真心没实施过集群。

1、需要在5台server上deploy 应用程序。session共享需要额外的同步策略
2、需要一台管理集群的机器,统一的管理集群下的server(观察者)
3、静态资源需要分离出来,apache一般做静态服务器,nginx大多是反向代理和负载均衡,目的都是为了减轻web应用服务器的访问压力,如果并发不大的话,就不要集群了,要想提高性能就不能怕麻烦
4、不知道,不过类似吧

1、主要是要看你是否需要5个服务器进行集群,建议1台做负载均衡,4台做集群,每个集群上面都需要部署同一份应用。可以使用相关策略进行session的共享
2、如果使用了负载均衡+集群服务器+session共享方式,每次部署的时候最少保持集群的服务器中有一台运行状态,其他服务器可进行关闭、部署、重启 这一类的操作。最后再把剩下的一台服务器重新进行部署,可以达到动态部署应用效果。
3、本人只用过nginx+tomcat进行部署。把静态资源进行抽离,包括html,jpg,css等页面要素,存放到一个固定路径nginxCache中;然后在nginx.conf中进行资源的过滤,如果是指向静资源则自动重定向到静态文件目录nginxCache中,若是其他要素则进行反向代理以及负载均衡。负载均衡可以有效地降低web服务器的运行压力。部署起来不麻烦,网上面都有相关的教程,本人之前用了几天时间就能够完成一个网站的集群。
4、本人没试过,感觉原理一样

:lol: 收藏下。

没有收藏按钮啊

重写session 根据cookie种下的sessionID 作为key将session的数据存储在分布式缓存中 加一个过滤器 包装request 然后重写request的getSessoin方法
返回你重写的session就可以了 这样就不用去搞什么session黏贴之类的
你可以将session分布式缓存到 redis或memcached里
你上网搜下 tomcat+nginx+memcached 应该有很多例子的