用那一种服务器端模型效率高?(300分)

  • 主题发起人 主题发起人 Bxch_1000
  • 开始时间 开始时间
B

Bxch_1000

Unregistered / Unconfirmed
GUEST, unregistred user!
在服务器端要实现 “连接”->“接收数据"->"处理数据"->"发送回应"->"断开连接",即
不保持连接,且每次连接后通讯的数据都很小,最大不超过2kbyte。能同时响应的连接越
多越好,用那一种服务器端模型效率高?
 
恩,我想知道
 
要求那么高,这就不知道了。
 
indy的组件都是这种模式啊
 
用SockectConnect吧,连接速度快,在跨路由的情况下比DComConnect效率来得高。
 
做过用SocketConnect的Server,但没有做过DCom的
觉得用SocketConnect的方便点,配置上也简单点
对这个不是很精通,学习
 
上次看了盛大的招聘题目自己做了一个测试:

说实在的应该是使用完成端口,双线程,一个主线程一个工作线程。
仅次于与完成端口的的模型是,事件模型,也是双线程,和完成端口不相上下。
在高并发的情况最差的可能就是,服务线程(每个客户一个线程)/主线程方式了。
因为操作系统在线程切换上消耗太大

还有一种是无技术的,不知道说出来大家会不会觉得落伍:

就是 微CGI 模式,但是我不太好归类->开发最容易,10万次访问/日不成问题
而且扩充容易加台服务器了事,我就喜欢这种 KISS,4年前应用与一全市使用服务系统,其中
系统升级无数次这个服务都没变,如果要是使用COM MTS POOL 等等,我真不敢相信光配置
环境就够恶梦了,我觉得这个也比较适合你的要求,不用开发复杂的服务程序,IIS负责帮你管理,
你也不用担心你的程序内存释放问题,但需要使用Delphi的 Build With Runtime package 模式编译,
最终 CGI Code 不应该 > 80K,服务器内存不应该 < 1G 。

但是这个我不知道把它放到那一类里面,因为据说IIS使用的是完成端口....

还有如果你还应用到数据库,那么我还可以给你其他建议......

 
to delp

具体情况如下:
客户端需上传交易记录到服务器端,每天的交易记录不会太多,最多几百条。但客户端的
数量较大,最多可能有几万个。服务器端在接收到交易记录后,只需完成将交易记录保存
到数据库的简单操作即可。我一开始考虑用完成端口,但现在又拿不定主意了,所以发贴
询问一下各位高手的意见,看看又什么更好的方式没有,以及各种方式的利弊,好确定用
那一种方式。谢谢你的回应!
 
to Bxch_1000
用我最后那种方法足够了,才几百条,但是你最好使用数据库的提供的API,你可以让你的CGI完成的任务最小化以解决,来降低程序加载的速度,例如你可以把业务功能用数据库的存储过程实现,这样你的CGI只不过完成数据->数据库服务器的通信器而已,即使以后业务发生改变,只需修改数据库的存储过程,而且你的客户端有几万个,才保存几百条数据,也就是说几万个连接都什么事不作,用HTTP这种无状态的不保持连接的方式比较好,呵呵,还要看你的客户端要干什么,还有一点建议就是不要在项目中盲目使用“新”技术,因为风险太大。
 
to delp
你能不能详细说一下最后一种方法的具体实现方式?
 
不保持连接,切数据那么小,简直就是为udp设计的条件嘛..
 
to Undefine
不能用udp,因为有限制,如果非要用udp就要通过代理,服务器端不能主动给客户端发
数据。
 
为什么要服务器先连接?由客户端开始请求连接不是很好吗
 
后退
顶部