Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 Socket connection有必要用connection pool吗?
enoch





发贴: 35
积分: 20
于 2003-07-05 10:31 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
RT,指的是Socket的客户端



作者 Re:Socket connection有必要用connection pool吗? [Re:enoch]
jameszhang



CJSDN高级会员


发贴: 1594
积分: 111
于 2003-07-05 11:54 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
应该看需求来讨论,呵呵


"First they ignore u, then they laugh at u, then they fight u, then u will win

Mahatma Gandhi"

作者 Re:Socket connection有必要用connection pool吗? [Re:enoch]
speeddemon



发贴: 0
积分: 0
于 2003-07-24 15:51 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
有没有必要使用Pool取决于你的需求,例如,server端希望client维持一定数量的长连接时,或者重建连接代价很大时,都可以考虑使用Pool来缓存连接。我们的一个项目中已经有这种需求和实现。


作者 Re:Socket connection有必要用connection pool吗? [Re:enoch]
iwtg





发贴: 21
积分: 0
于 2003-07-28 16:33 user profilesend a private message to usersend email to iwtgsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
同意楼上的。

例如:联众的游戏网,如果没有pool 技术的支持,那不是要用海量巨型计算机来支持来自客户的请求>



作者 Re:Socket connection有必要用connection pool吗? [Re:enoch]
imote



发贴: 0
积分: 0
于 2003-07-29 09:49 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
客户端不需要使用pool吧,只有提供服务的server对此的需求才比较多。一般来说,客户端一个socket连接就应该能搞定问题了。



作者 Re:Socket connection有必要用connection pool吗? [Re:enoch]
sanigo

给我三刀吧

版主


发贴: 529
积分: 395
于 2003-07-29 10:26 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
谁能贴个实现,让兄弟看看?


明天的明天的明天的明天
作者 Re:Socket connection有必要用connection pool吗? [Re:imote]
speeddemon



发贴: 0
积分: 0
于 2003-07-31 09:23 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
imote wrote:
客户端不需要使用pool吧,只有提供服务的server对此的需求才比较多。一般来说,客户端一个socket连接就应该能搞定问题了。


不是这样的,客户端是一个相对的概念。例如你写一个基于数据库的应用,你的应用对于用户来说是服务端,但是相对于数据库来说就是客户端,数据库连接池是存在于客户端的。
又例如写一个网上短信的应用,你的应用相对于用户是服务端,而相对于短信网关或短信中心来说是客户端。Socket Pool存在于短信中心或短信网关的客户端——你的应用中。



作者 Re:Socket connection有必要用connection pool吗? [Re:sanigo]
speeddemon



发贴: 0
积分: 0
于 2003-07-31 10:09 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
sanigo wrote:
谁能贴个实现,让兄弟看看?


兄弟,去apache.org看看,有开源的apache jakarta project,其中有Common pool,实现了一个通用池。
http://jakarta.apache.org/commons/pool/



作者 Re:Socket connection有必要用connection pool吗? [Re:speeddemon]
scottlai



元老


发贴: 451
积分: 366
于 2003-07-31 10:58 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
speeddemon wrote:
兄弟,去apache.org看看,有开源的apache jakarta project,其中有Common pool,实现了一个通用池。
http://jakarta.apache.org/commons/pool/

兄弟. 重點在: Is socket poolable?



作者 Re:Socket connection有必要用connection pool吗? [Re:scottlai]
speeddemon



发贴: 0
积分: 0
于 2003-07-31 12:00 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
scottlai wrote:
兄弟. 重點在: Is socket poolable?


兄弟,完全可以,我已经说过,我们已经有实现并且正在使用。
我们的情况是这样的,必须与某电信运营商的营帐系统连接,按照特定协议完成某些操作。最初的作法是使用短连接,即需要时建立,完成操作后立即释放。后来发现因为某些原因,建立连接的开销很大(操作前需要认证),导致我们的应用相应速度较慢。分析后决定采用连接池,建立连接并认证后,将socket缓存到池中,池负责维护socket的有效性(通过发送keepalive包),并维护连接的生命周期(定期重建)。事实证明,这样做极大的提高了应用的效率,带来的速度提升有两个数量级以上!
因为一些商业原因我不能指明应用场合和贴出源代码,有兴趣可以在这里讨论实现原理和步骤。



作者 Re:Socket connection有必要用connection pool吗? [Re:speeddemon]
scottlai



元老


发贴: 451
积分: 366
于 2003-08-01 03:06 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
speeddemon wrote:
兄弟,完全可以,我已经说过,我们已经有实现并且正在使用。
我们的情况是这样的,必须与某电信运营商的营帐系统连接,按照特定协议完成某些操作。最初的作法是使用短连接,即需要时建立,完成操作后立即释放。后来发现因为某些原因,建立连接的开销很大(操作前需要认证),导致我们的应用相应速度较慢。分析后决定采用连接池,建立连接并认证后,将socket缓存到池中,池负责维护socket的有效性(通过发送keepalive包),并维护连接的生命周期(定期重建)。事实证明,这样做极大的提高了应用的效率,带来的速度提升有两个数量级以上!
因为一些商业原因我不能指明应用场合和贴出源代码,有兴趣可以在这里讨论实现原理和步骤。

那應該是SOCKET沒CLOSE吧? JAVA SOCKET CLOSE還能REUSE??



作者 Re:Socket connection有必要用connection pool吗? [Re:speeddemon]
rainman

阿熊

元老


发贴: 5644
积分: 454
于 2003-08-01 05:36 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
socket 有TCP和UDP 两种连接。如果面向无连接的话,偶觉得可以用消息队列或其他异步方法一个socket多用。用pool的话有时候也有点浪费吧。



作者 Re:Socket connection有必要用connection pool吗? [Re:scottlai]
speeddemon



发贴: 0
积分: 0
于 2003-08-01 10:27 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
scottlai wrote:
那應該是SOCKET沒CLOSE吧? JAVA SOCKET CLOSE還能REUSE??

谁说Close了?当然不能Close,只是放回池中,由池来维护——“池负责维护socket的有效性(通过发送keepalive包),并维护连接的生命周期(定期重建)”——没看到吗?

数据库连接池,不知大家用过没有?一样的道理啊!



作者 Re:Socket connection有必要用connection pool吗? [Re:speeddemon]
scottlai



元老


发贴: 451
积分: 366
于 2003-08-01 11:31 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
speeddemon wrote:
谁说Close了?当然不能Close,只是放回池中,由池来维护——“池负责维护socket的有效性(通过发送keepalive包),并维护连接的生命周期(定期重建)”——没看到吗?

数据库连接池,不知大家用过没有?一样的道理啊!

原來是沒COSE掉啊.
這樣就了解了. 正在納悶SOCKET CLOSE就斷了.怎麼POOL啊...



作者 Re:Socket connection有必要用connection pool吗? [Re:speeddemon]
enoch





发贴: 35
积分: 20
于 2003-08-04 12:23 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
speeddemon wrote:
兄弟,完全可以,我已经说过,我们已经有实现并且正在使用。
我们的情况是这样的,必须与某电信运营商的营帐系统连接,按照特定协议完成某些操作。最初的作法是使用短连接,即需要时建立,完成操作后立即释放。后来发现因为某些原因,建立连接的开销很大(操作前需要认证),导致我们的应用相应速度较慢。分析后决定采用连接池,建立连接并认证后,将socket缓存到池中,池负责维护socket的有效性(通过发送keepalive包),并维护连接的生命周期(定期重建)。事实证明,这样做极大的提高了应用的效率,带来的速度提升有两个数量级以上!
因为一些商业原因我不能指明应用场合和贴出源代码,有兴趣可以在这里讨论实现原理和步骤。


终于有人说到点子上了,我提问的原因就是在些,这位兄台说的是CMPP吧Cool




作者 Re:Socket connection有必要用connection pool吗? [Re:enoch]
speeddemon



发贴: 0
积分: 0
于 2003-08-04 16:38 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
呵呵,不是CMPP,也不是SGIP或SMPP,跟短信没关系。
我们连的是营帐,不是短信网关或短信中心。



作者 Re:Socket connection有必要用connection pool吗? [Re:enoch]
felexs





发贴: 80
积分: 55
于 2003-08-07 17:24 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
是否需要连接池主要看需求。
如果你提及的营帐系统和应用是一个厂商开发的,那么这种方式显然是地效、自找麻烦的。此时client与server只需一个长连接,保持连接的心跳侦测,在连接上发送消息包即可。(可能大家都知道,废话了)。

在与一个已有系统对接时,该系统只能接收断连接(比如该系统是通过SERVLET接受请求的),此时client端要提高性能,连接池当然需要,这个连接池在系统总开销上并没有节省,是典型的以空间换时间。

去年(当时我还在国内一家电信设备制造商)开发一套数据业务平台时,就碰到过上述问题。

实现方法关键在于如何换开销。



作者 Re:Socket connection有必要用connection pool吗? [Re:felexs]
speeddemon



发贴: 0
积分: 0
于 2003-08-07 19:45 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
felexs wrote:
是否需要连接池主要看需求。
如果你提及的营帐系统和应用是一个厂商开发的,那么这种方式显然是地效、自找麻烦的。此时client与server只需一个长连接,保持连接的心跳侦测,在连接上发送消息包即可。(可能大家都知道,废话了)。

在与一个已有系统对接时,该系统只能接收断连接(比如该系统是通过SERVLET接受请求的),此时client端要提高性能,连接池当然需要,这个连接池在系统总开销上并没有节省,是典型的以空间换时间。

去年(当时我还在国内一家电信设备制造商)开发一套数据业务平台时,就碰到过上述问题。

实现方法关键在于如何换开销。


我认为你说的不对。
一个长连接的处理能力是局限的,尤其是前端大量并发请求时,因为一个连接处理请求是串行的。
连接池建立了多个长连接,前端并发时多个连接可以并行处理。
这两种方式有明显的对比。

如果是短连接,情况也是不同的。短连接处理完一次请求后即断开,没有必要也不容易实现连接池。



作者 Re:Socket connection有必要用connection pool吗? [Re:speeddemon]
felexs





发贴: 80
积分: 55
于 2003-08-14 13:52 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
这不是揣测,而是根据实际的使用经验!
你知道吗?一般的电信级应用一个连接已经够了,呼叫指标可以达到1000CAPS.

正是因为短连接,不停的建立、拆除才需要从连接策略上考虑,引入开销换取的解决方案,所谓的连接池技术也是在不同的场合有不同的思路及应用。



作者 Re:Socket connection有必要用connection pool吗? [Re:felexs]
speeddemon



发贴: 0
积分: 0
于 2003-08-18 10:16 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
felexs wrote:
这不是揣测,而是根据实际的使用经验!
你知道吗?一般的电信级应用一个连接已经够了,呼叫指标可以达到1000CAPS.

正是因为短连接,不停的建立、拆除才需要从连接策略上考虑,引入开销换取的解决方案,所谓的连接池技术也是在不同的场合有不同的思路及应用。


要解决短连接生命周期短带来的开销问题,可以采用hold住连接的方式,此时短连接已经变成了长连接;为了hold这个长连接,必须发送keepAlive报文、检查连接可用性,在连接broken后还要重建,这已经是一个连接池了!

兄台说话不要那么绝对好不好?你是根据实际使用经验说话,焉知我就不是呢?你说一般的电信级应用可以达到1000CAPS,怎么知道这个性能指标能满足我们的要求呢?你又怎么断定局方提供给我们使用的接口一定能达到1000CAPS的指标呢?



作者 Re:Socket connection有必要用connection pool吗? [Re:speeddemon]
felexs





发贴: 80
积分: 55
于 2003-08-18 12:46 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
sorry,我目光短浅了。



flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923