Topic: Socket connection有必要用connection pool吗? |
Print this page |
1.Socket connection有必要用connection pool吗? | Copy to clipboard |
Posted by: enoch Posted on: 2003-07-05 10:31 RT,指的是Socket的客户端 |
2.Re:Socket connection有必要用connection pool吗? [Re: enoch] | Copy to clipboard |
Posted by: jameszhang Posted on: 2003-07-05 11:54 应该看需求来讨论,呵呵 |
3.Re:Socket connection有必要用connection pool吗? [Re: enoch] | Copy to clipboard |
Posted by: speeddemon Posted on: 2003-07-24 15:51 有没有必要使用Pool取决于你的需求,例如,server端希望client维持一定数量的长连接时,或者重建连接代价很大时,都可以考虑使用Pool来缓存连接。我们的一个项目中已经有这种需求和实现。 |
4.Re:Socket connection有必要用connection pool吗? [Re: enoch] | Copy to clipboard |
Posted by: iwtg Posted on: 2003-07-28 16:33 同意楼上的。 例如:联众的游戏网,如果没有pool 技术的支持,那不是要用海量巨型计算机来支持来自客户的请求> |
5.Re:Socket connection有必要用connection pool吗? [Re: enoch] | Copy to clipboard |
Posted by: imote Posted on: 2003-07-29 09:49 客户端不需要使用pool吧,只有提供服务的server对此的需求才比较多。一般来说,客户端一个socket连接就应该能搞定问题了。 |
6.Re:Socket connection有必要用connection pool吗? [Re: enoch] | Copy to clipboard |
Posted by: sanigo Posted on: 2003-07-29 10:26 谁能贴个实现,让兄弟看看? |
7.Re:Socket connection有必要用connection pool吗? [Re: imote] | Copy to clipboard |
Posted by: speeddemon Posted on: 2003-07-31 09:23 imote wrote: 不是这样的,客户端是一个相对的概念。例如你写一个基于数据库的应用,你的应用对于用户来说是服务端,但是相对于数据库来说就是客户端,数据库连接池是存在于客户端的。 又例如写一个网上短信的应用,你的应用相对于用户是服务端,而相对于短信网关或短信中心来说是客户端。Socket Pool存在于短信中心或短信网关的客户端——你的应用中。 |
8.Re:Socket connection有必要用connection pool吗? [Re: sanigo] | Copy to clipboard |
Posted by: speeddemon Posted on: 2003-07-31 10:09 sanigo wrote: 兄弟,去apache.org看看,有开源的apache jakarta project,其中有Common pool,实现了一个通用池。 http://jakarta.apache.org/commons/pool/ |
9.Re:Socket connection有必要用connection pool吗? [Re: speeddemon] | Copy to clipboard |
Posted by: scottlai Posted on: 2003-07-31 10:58 speeddemon wrote: 兄弟. 重點在: Is socket poolable? |
10.Re:Socket connection有必要用connection pool吗? [Re: scottlai] | Copy to clipboard |
Posted by: speeddemon Posted on: 2003-07-31 12:00 scottlai wrote: 兄弟,完全可以,我已经说过,我们已经有实现并且正在使用。 我们的情况是这样的,必须与某电信运营商的营帐系统连接,按照特定协议完成某些操作。最初的作法是使用短连接,即需要时建立,完成操作后立即释放。后来发现因为某些原因,建立连接的开销很大(操作前需要认证),导致我们的应用相应速度较慢。分析后决定采用连接池,建立连接并认证后,将socket缓存到池中,池负责维护socket的有效性(通过发送keepalive包),并维护连接的生命周期(定期重建)。事实证明,这样做极大的提高了应用的效率,带来的速度提升有两个数量级以上! 因为一些商业原因我不能指明应用场合和贴出源代码,有兴趣可以在这里讨论实现原理和步骤。 |
11.Re:Socket connection有必要用connection pool吗? [Re: speeddemon] | Copy to clipboard |
Posted by: scottlai Posted on: 2003-08-01 03:06 speeddemon wrote: 那應該是SOCKET沒CLOSE吧? JAVA SOCKET CLOSE還能REUSE?? |
12.Re:Socket connection有必要用connection pool吗? [Re: speeddemon] | Copy to clipboard |
Posted by: rainman Posted on: 2003-08-01 05:36 socket 有TCP和UDP 两种连接。如果面向无连接的话,偶觉得可以用消息队列或其他异步方法一个socket多用。用pool的话有时候也有点浪费吧。 |
13.Re:Socket connection有必要用connection pool吗? [Re: scottlai] | Copy to clipboard |
Posted by: speeddemon Posted on: 2003-08-01 10:27 scottlai wrote: 谁说Close了?当然不能Close,只是放回池中,由池来维护——“池负责维护socket的有效性(通过发送keepalive包),并维护连接的生命周期(定期重建)”——没看到吗? 数据库连接池,不知大家用过没有?一样的道理啊! |
14.Re:Socket connection有必要用connection pool吗? [Re: speeddemon] | Copy to clipboard |
Posted by: scottlai Posted on: 2003-08-01 11:31 speeddemon wrote: 原來是沒COSE掉啊. 這樣就了解了. 正在納悶SOCKET CLOSE就斷了.怎麼POOL啊... |
15.Re:Socket connection有必要用connection pool吗? [Re: speeddemon] | Copy to clipboard |
Posted by: enoch Posted on: 2003-08-04 12:23 speeddemon wrote: 终于有人说到点子上了,我提问的原因就是在些,这位兄台说的是CMPP吧 |
16.Re:Socket connection有必要用connection pool吗? [Re: enoch] | Copy to clipboard |
Posted by: speeddemon Posted on: 2003-08-04 16:38 呵呵,不是CMPP,也不是SGIP或SMPP,跟短信没关系。 我们连的是营帐,不是短信网关或短信中心。 |
17.Re:Socket connection有必要用connection pool吗? [Re: enoch] | Copy to clipboard |
Posted by: felexs Posted on: 2003-08-07 17:24 是否需要连接池主要看需求。 如果你提及的营帐系统和应用是一个厂商开发的,那么这种方式显然是地效、自找麻烦的。此时client与server只需一个长连接,保持连接的心跳侦测,在连接上发送消息包即可。(可能大家都知道,废话了)。 在与一个已有系统对接时,该系统只能接收断连接(比如该系统是通过SERVLET接受请求的),此时client端要提高性能,连接池当然需要,这个连接池在系统总开销上并没有节省,是典型的以空间换时间。 去年(当时我还在国内一家电信设备制造商)开发一套数据业务平台时,就碰到过上述问题。 实现方法关键在于如何换开销。 |
18.Re:Socket connection有必要用connection pool吗? [Re: felexs] | Copy to clipboard |
Posted by: speeddemon Posted on: 2003-08-07 19:45 felexs wrote: 我认为你说的不对。 一个长连接的处理能力是局限的,尤其是前端大量并发请求时,因为一个连接处理请求是串行的。 连接池建立了多个长连接,前端并发时多个连接可以并行处理。 这两种方式有明显的对比。 如果是短连接,情况也是不同的。短连接处理完一次请求后即断开,没有必要也不容易实现连接池。 |
19.Re:Socket connection有必要用connection pool吗? [Re: speeddemon] | Copy to clipboard |
Posted by: felexs Posted on: 2003-08-14 13:52 这不是揣测,而是根据实际的使用经验! 你知道吗?一般的电信级应用一个连接已经够了,呼叫指标可以达到1000CAPS. 正是因为短连接,不停的建立、拆除才需要从连接策略上考虑,引入开销换取的解决方案,所谓的连接池技术也是在不同的场合有不同的思路及应用。 |
20.Re:Socket connection有必要用connection pool吗? [Re: felexs] | Copy to clipboard |
Posted by: speeddemon Posted on: 2003-08-18 10:16 felexs wrote: 要解决短连接生命周期短带来的开销问题,可以采用hold住连接的方式,此时短连接已经变成了长连接;为了hold这个长连接,必须发送keepAlive报文、检查连接可用性,在连接broken后还要重建,这已经是一个连接池了! 兄台说话不要那么绝对好不好?你是根据实际使用经验说话,焉知我就不是呢?你说一般的电信级应用可以达到1000CAPS,怎么知道这个性能指标能满足我们的要求呢?你又怎么断定局方提供给我们使用的接口一定能达到1000CAPS的指标呢? |
21.Re:Socket connection有必要用connection pool吗? [Re: speeddemon] | Copy to clipboard |
Posted by: felexs Posted on: 2003-08-18 12:46 sorry,我目光短浅了。 |
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 |