论坛首页 Java版 企业应用

关于用Java做集群和负载均衡的问题

浏览 3239 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-02-27
我现在在做一个项目,要做一个平台,平台需要同时对非常多(10万个以上)的终端设备发过来的数据进行采集和处理,这些终端可能是通过adsl或无线网络接入到平台
我之前在做另一个项目的时候用nio写过一个服务器,那个服务器可以同时处理2k左右的客户端,但是显然在目前的这个项目里面是不能那么做的。
我想通过集群来解决大并发数的问题,但是因为公司里面没有人做过集群方面的开发,所以想咨询一下大家,目前Java集群开发方面主要流行什么技术?如何尽快上手?还有就是自己做集群是否现实?

本来也考虑过利用J2EE容器的集群功能,但是因为大多数终端都是嵌入式设备,又基本上是通过tcp/ip的方式接入到平台的,EJB貌似用不上,这样的话J2EE容器的集群功能也就用不上了,这是我个人的想法,因为对J2EE的开发也不熟悉,不知道正不正确,希望大家能指正一下,如果能利用J2EE应用服务器,像weblogic的集群功能的话,那么开发应该可以方便很多。

谢谢!
   
最后更新时间:2008-02-27
首先要看你终端如何。如果可以使用高级语言,那么可以试试用webservice联系服务器。服务器方面可以直接用JavaEE集群。
要不就是用负载均衡器。每台服务器都是独立的,用负载均衡器轮询的方式分担压力。
   
0 请登录后投票
最后更新时间:2008-02-27
楼主你又没有搞错,瞬间10万的并发很恐怖了,我看你是10万个终端吧,魔力猫咪 说的webservice联系服务器当然是不可行的,webservice很慢。
   
0 请登录后投票
最后更新时间:2008-02-27
集群?
业务分割
让所有的人不同时使用同一个业务....
把每个业务集群一下
可以下降不少...

PS:C/S都是靠路由转发来作到的吧.
   
0 请登录后投票
最后更新时间:2008-02-27
armorking 写道
lz的意思是同时有10万以上的并发请求?
瀑布汗。。。



不是,我没说清楚,是有10万以上的终端,这些终端会经常性地连接到平台,但是不会一直跟平台之间有数据的交互

为了维持连接,终端会定时发送一个心跳信号给平台

瞬时并发数目前还不能确定,但是也肯定不会小

另外就是终端的数目以后还会一直增加。
   
0 请登录后投票
最后更新时间:2008-02-27
采用lvs.
要是终端的ip地址一样,把他们固定分发到不同的服务器。
   
0 请登录后投票
最后更新时间:2008-02-27
引用
但是因为大多数终端都是嵌入式设备,又基本上是通过tcp/ip的方式接入到平台的


按照这个描述,我觉得还是自己写nio服务器比较合适,你本来自己就写过,也有一定的经验,网上这方面的文章也挺多,或者可以参照tomcat6.0的源代码。

在这个自制的nio服务器的基础上,我们可以采用集群策略,考虑到有10w个终端,假设这10w个终端的最大并发是n w/s,那么所需的nio服务器实例需要m= n/2000个
部署好m个nio服务器实例之后,前面加上一个负载均衡器,最简单的方法是根据用户的唯一标识(比如ip)来确定一次请求都访问m中的某一台,也就是粘性会话。或者,你可以把用户的会话信息放到memcached中,这样就不需要粘性会话,之间让负载均衡器分发一下就可以了。
   
0 请登录后投票
最后更新时间:2008-02-29
如果总数10万左右,不见得很复杂。我觉得单台服务器也许足够,tomcat+jsp最好选择,嵌入式设备使用HTTP和使用socket协议无本质区别。使用HTTP服务器编程及其简单。单台不够可以加到2台tomcat。另外分析可以另外一台服务器单独做。

如果想试试java的nio可以使用MINA框架,但服务器开发工作量会增大,且增加维护困难。
   
0 请登录后投票
最后更新时间:2008-03-01
ssnake 写道
我现在在做一个项目,要做一个平台,平台需要同时对非常多(10万个以上)的终端设备发过来的数据进行采集和处理,这些终端可能是通过adsl或无线网络接入到平台
我之前在做另一个项目的时候用nio写过一个服务器,那个服务器可以同时处理2k左右的客户端,但是显然在目前的这个项目里面是不能那么做的。
我想通过集群来解决大并发数的问题,但是因为公司里面没有人做过集群方面的开发,所以想咨询一下大家,目前Java集群开发方面主要流行什么技术?如何尽快上手?还有就是自己做集群是否现实?

本来也考虑过利用J2EE容器的集群功能,但是因为大多数终端都是嵌入式设备,又基本上是通过tcp/ip的方式接入到平台的,EJB貌似用不上,这样的话J2EE容器的集群功能也就用不上了,这是我个人的想法,因为对J2EE的开发也不熟悉,不知道正不正确,希望大家能指正一下,如果能利用J2EE应用服务器,像weblogic的集群功能的话,那么开发应该可以方便很多。

谢谢!

集群可以采用redhat cluster来做
负载均衡的话,建议用硬件的.
F5或都load balance都可以
   
0 请登录后投票
最后更新时间:2008-03-02
我感觉,还是看开发人员的素质。有 C/C++ 强一点的吗?
让他开发一套 meesaging 么好了。

主要考虑的是,业务是否可以扩展到 java, 考虑轻量级 hessian。
   
0 请登录后投票
论坛首页 Java版 企业应用

跳转论坛:
JavaEye推荐