delphi通过修改socket做三层,能实现一个服务器2万个客户端的连接?

时间:2021-07-15 03:33:49
公司新招了个大牛,他说delphi通过修改socket和ClientDataSet做三层,能实现一个服务器2万个客户端的连接。公司正准备开发这个项目,感觉很不可思议(因为现在midas和remobjects一般一个服务器也只是几百客户端连接吧)。,各位大牛发表下自己的见解?

30 个解决方案

#1


应该是没有问题的,但是有时也有取决于“服务器配置”+“光纤”
的综合相关才可以的,服务器中的软件一般情况是不限制“连接数目”的

#2


ClientDataSet不需要保持连接的.

#3


并发表示怀疑

#4


既然他说了能达到2W连接,你就问嘛:哪个现有系统平台是使用了该方案,截个图来看也好。

不然我哪天折腾个serversocket,嗯,理论连接1000W。。。

#5


没有现网运行检验的东西,那就是浮云,说的再好,代码逻辑再精密都没用。

#6


如果真的行的话:那为什么现在的midas和remobjects一般都是一台服务器支持几百个连接?midas据说就更差了。经常看到网上有人说服务器卡死的情况?如大牛所说midas和remobjects所有需要控件来做的都是假三层?

#7


客户端请求频率高一些,数据多一些的话,服务器的资源光做dataset=>TDataProvider.data那个数据转换了,不用做其它了。还TClientDataset

一听这数量就知道就所谓看了点midas+iocp的东东的人在。。。站着说话不腰疼

#8


嘿还有种情况就是:他只说了,可以实现2W连接,但没说那连接要干活啊,占着茅坑不那啥来着。。。

#9


【一个服务器2万个客户端的连接】
又不是长连接,业务不忙的话,2万个客户端同时操作的也就几百吧

#10


如果按我的ini@http机制,后台是iis,是微软自己用iocp写的
轮连接能力、效率,没人能比它好了吧

#11


引用 9 楼 sz_haitao 的回复:
【一个服务器2万个客户端的连接】
又不是长连接,业务不忙的话,2万个客户端同时操作的也就几百吧
关键是现在公司的职员都是靠这个软件进行工作的,所以如果真扩展到这么大的话,同时操作的肯定不只几百个了……

#12


引用 10 楼 sz_haitao 的回复:
如果按我的ini@http机制,后台是iis,是微软自己用iocp写的
轮连接能力、效率,没人能比它好了吧
那为什么现在的midas和remobjects一般都是一台服务器支持几百个连接?midas据说就更差了。经常看到网上有人说服务器卡死的情况?如我们公司大牛所说midas和remobjects所有需要控件来做的都是假三层?

#13


现在的目标是用这个软件覆盖全国的公司站点。所以……

#14


都走服务资源的话 如果计算量大 也就不到1000吧 假设多个服务器 是可以的。 

#15


单纯连接 4W都没问题 

#16


难道sz就是楼主说的新同事?
不是长连接,确实可以作到数量精人,
至于IIS的效率,这个呢,就不见得没有人比它好了,毕竟它是基于HTTP的,得有HTTP报头不是,得分析报头不是,大部分数据得使用文本传递不是,针对某个特定的业务专门开发的服务端肯定比IIS快(除纯网站),HTTP提交一个ID需要提交百字节左右,而专用服务器端就只需要4字节

#17


不见得没有人比它好,肯定没错,
但是真的做的比它好,还真是不容易,何况它都无须做,已经是现成的了

至于http的开销大,的确是自己定的协议可以最节省
但是一般客户端的防火墙都会直接支持http,如果自己协议的tcp端口,就不一定了

#18


连接数不是问题关键,问题是硬件和网络以及连接以后的数据传输负荷。

#19


  但从连接数是没有任何问题的! 就看用户的并发数量。

#20


该回复于2012-03-16 17:52:16被版主删除

#21


我觉得sz_haitao做法比较可取,LZ可以考虑使用这种架构。

MIDAS我的感觉是:在应用服务端中的资源占用过大,资源浪费在server.Dataset->TDataProvider->OleVariant->Client->ClientDataset的转换上
所以并发量做不起来。

RO没用过,不评。
所以一听MIDAS有2W连接,立马过来瞅瞅,看如何解决的。结果啊。。。

MIDAS,自觉得精髓在于数据打包,分包,发送,合并。只要更好的解决这个问题才谈大量的并发量的问题。
有谁同意呼?

#22


不可能的事情,支持2W连接?用IOCP?我看过一般的游戏服务器(*配置+超好网络传输)一般在2000-3000人左右连接,假如支持2W连接,用服务器集群吧,否则不可能实现的。

#23


不可能的事情,支持2W连接?  支持2W连接是绝对可能的事情! 但是支持多少业务操作并发才是重要的。

往往网络的并发远远胜于我们的业务并发操作! 

#24


理论上的连接数上限是64k,不过后来又有超过10万的技术
不过,关键是每个连接要做的事情,这个才是瓶颈了
另外,如果每个客户端的操作不是持续密集的,使用非连接的http模式,可以绕开连接数上限

#25


看待问题要看本质吧。
网络连接写的再好,就算有10W,但只能支撑100-500连接的服务,
那现网上线后,整个项目组的人会挨批不?
挨批都是小事。。。

设计容量峰值在线连接1W,然后折腾个10W网络架构,成天在讨论这个架构怎么怎么强,却不想为啥在线连接上了200后出现问题,这样的设计有毛用。。。

#26


个人经验:三层或N层结构,当上了一定量的在线数,如1K,将会是自己编写自有的平台架构,来代替MIDAS,自定自己一套协议用于数据通讯,原因就是上述所说。

#27


目前技术2W不太可能,如果只是简单的传送一句hello world那就没话说了

#28


接分中
delphi通过修改socket做三层,能实现一个服务器2万个客户端的连接?

#29


学习了 2W怎么实现

#30


为什么说2W连接不可能?只是说单个服务程序2W连接。并发处理100到200.这个如果不能满足要求的话需要考虑服务器群。分前端服务器和后台服务器。前端服务器处理连接。收发数据包。不做数据库查询处理。后台服务器可做数据库处理。后台服务器还可以细分成通用处理服务器。特殊处理服务器。通用处理服务器可以由客户端通过SQL语句加参数完成。特殊处理服务器可能就只有参数。还添加线程互斥。可以说只要网络瓶颈解决。或者做服务器路由。并发处理四五千甚至2万并发都不是梦。

不要将自己的思维局限在1个服务器程序。。能有2W连接都不在乎那个服务器群了。

#1


应该是没有问题的,但是有时也有取决于“服务器配置”+“光纤”
的综合相关才可以的,服务器中的软件一般情况是不限制“连接数目”的

#2


ClientDataSet不需要保持连接的.

#3


并发表示怀疑

#4


既然他说了能达到2W连接,你就问嘛:哪个现有系统平台是使用了该方案,截个图来看也好。

不然我哪天折腾个serversocket,嗯,理论连接1000W。。。

#5


没有现网运行检验的东西,那就是浮云,说的再好,代码逻辑再精密都没用。

#6


如果真的行的话:那为什么现在的midas和remobjects一般都是一台服务器支持几百个连接?midas据说就更差了。经常看到网上有人说服务器卡死的情况?如大牛所说midas和remobjects所有需要控件来做的都是假三层?

#7


客户端请求频率高一些,数据多一些的话,服务器的资源光做dataset=>TDataProvider.data那个数据转换了,不用做其它了。还TClientDataset

一听这数量就知道就所谓看了点midas+iocp的东东的人在。。。站着说话不腰疼

#8


嘿还有种情况就是:他只说了,可以实现2W连接,但没说那连接要干活啊,占着茅坑不那啥来着。。。

#9


【一个服务器2万个客户端的连接】
又不是长连接,业务不忙的话,2万个客户端同时操作的也就几百吧

#10


如果按我的ini@http机制,后台是iis,是微软自己用iocp写的
轮连接能力、效率,没人能比它好了吧

#11


引用 9 楼 sz_haitao 的回复:
【一个服务器2万个客户端的连接】
又不是长连接,业务不忙的话,2万个客户端同时操作的也就几百吧
关键是现在公司的职员都是靠这个软件进行工作的,所以如果真扩展到这么大的话,同时操作的肯定不只几百个了……

#12


引用 10 楼 sz_haitao 的回复:
如果按我的ini@http机制,后台是iis,是微软自己用iocp写的
轮连接能力、效率,没人能比它好了吧
那为什么现在的midas和remobjects一般都是一台服务器支持几百个连接?midas据说就更差了。经常看到网上有人说服务器卡死的情况?如我们公司大牛所说midas和remobjects所有需要控件来做的都是假三层?

#13


现在的目标是用这个软件覆盖全国的公司站点。所以……

#14


都走服务资源的话 如果计算量大 也就不到1000吧 假设多个服务器 是可以的。 

#15


单纯连接 4W都没问题 

#16


难道sz就是楼主说的新同事?
不是长连接,确实可以作到数量精人,
至于IIS的效率,这个呢,就不见得没有人比它好了,毕竟它是基于HTTP的,得有HTTP报头不是,得分析报头不是,大部分数据得使用文本传递不是,针对某个特定的业务专门开发的服务端肯定比IIS快(除纯网站),HTTP提交一个ID需要提交百字节左右,而专用服务器端就只需要4字节

#17


不见得没有人比它好,肯定没错,
但是真的做的比它好,还真是不容易,何况它都无须做,已经是现成的了

至于http的开销大,的确是自己定的协议可以最节省
但是一般客户端的防火墙都会直接支持http,如果自己协议的tcp端口,就不一定了

#18


连接数不是问题关键,问题是硬件和网络以及连接以后的数据传输负荷。

#19


  但从连接数是没有任何问题的! 就看用户的并发数量。

#20


该回复于2012-03-16 17:52:16被版主删除

#21


我觉得sz_haitao做法比较可取,LZ可以考虑使用这种架构。

MIDAS我的感觉是:在应用服务端中的资源占用过大,资源浪费在server.Dataset->TDataProvider->OleVariant->Client->ClientDataset的转换上
所以并发量做不起来。

RO没用过,不评。
所以一听MIDAS有2W连接,立马过来瞅瞅,看如何解决的。结果啊。。。

MIDAS,自觉得精髓在于数据打包,分包,发送,合并。只要更好的解决这个问题才谈大量的并发量的问题。
有谁同意呼?

#22


不可能的事情,支持2W连接?用IOCP?我看过一般的游戏服务器(*配置+超好网络传输)一般在2000-3000人左右连接,假如支持2W连接,用服务器集群吧,否则不可能实现的。

#23


不可能的事情,支持2W连接?  支持2W连接是绝对可能的事情! 但是支持多少业务操作并发才是重要的。

往往网络的并发远远胜于我们的业务并发操作! 

#24


理论上的连接数上限是64k,不过后来又有超过10万的技术
不过,关键是每个连接要做的事情,这个才是瓶颈了
另外,如果每个客户端的操作不是持续密集的,使用非连接的http模式,可以绕开连接数上限

#25


看待问题要看本质吧。
网络连接写的再好,就算有10W,但只能支撑100-500连接的服务,
那现网上线后,整个项目组的人会挨批不?
挨批都是小事。。。

设计容量峰值在线连接1W,然后折腾个10W网络架构,成天在讨论这个架构怎么怎么强,却不想为啥在线连接上了200后出现问题,这样的设计有毛用。。。

#26


个人经验:三层或N层结构,当上了一定量的在线数,如1K,将会是自己编写自有的平台架构,来代替MIDAS,自定自己一套协议用于数据通讯,原因就是上述所说。

#27


目前技术2W不太可能,如果只是简单的传送一句hello world那就没话说了

#28


接分中
delphi通过修改socket做三层,能实现一个服务器2万个客户端的连接?

#29


学习了 2W怎么实现

#30


为什么说2W连接不可能?只是说单个服务程序2W连接。并发处理100到200.这个如果不能满足要求的话需要考虑服务器群。分前端服务器和后台服务器。前端服务器处理连接。收发数据包。不做数据库查询处理。后台服务器可做数据库处理。后台服务器还可以细分成通用处理服务器。特殊处理服务器。通用处理服务器可以由客户端通过SQL语句加参数完成。特殊处理服务器可能就只有参数。还添加线程互斥。可以说只要网络瓶颈解决。或者做服务器路由。并发处理四五千甚至2万并发都不是梦。

不要将自己的思维局限在1个服务器程序。。能有2W连接都不在乎那个服务器群了。