DATASNAP是针对企业数据中间件市场而推出来的产品,如果在其它领域用它可能就不会合适。
DATASNAP通信使用INDY10,INDY是阻塞型SOCKET。
1.如果使用TCP/IP长连接,DATASNAP的负载能力大概是几百。
因为众所周知的原因,阻塞型SOCKET,一个SOCKET连接需要中间件开启一个线程为其服务,几百个长连接需要WINDOWS
开启几百个线程为之服务。这种情形中间件INDY的线程池其实没有起多大作用。
2.为了避免阻塞型INDY的短点,可以使用TCP/IP短连接,DATASNAP的短连接是这样做的:客户端连接上中间件---》客户端向中间件申请数据服务
---》中间件返回数据给客户端---》由客户端断开同中间件的SOCKET连接。这种情形DATASNAP的负载能力大概是几千。之所有负载能力可以如此大的提升,
乃是因为,一个线程不再只能为一个SOCKET连接服务,而是可以为所有的SOCKET连接服务。中间件的服务模式变为:当前有多少个并发处理的事件就开多少
个线程为之服务,当线程服务完当前的事件,线程不释放,可以继续为后续事件服务。可以看出来,中间件线程池的对于线程的调度真正做到了高效率。
一千个客户对中间件的并发事件申请可能也就几十个。
几千的负载能力已经蔚为可观了。
3.几千的负载能力应付一般的企业数据中间件应用已经足够了,实际应用当中应该很少会有企业超过这个负载范围。如果超过,怎么办?
解决方法是DATASNAP集群。虽然目前官方没有提供现成的集群解决方案,但是完全可以自已通过代理服务器来实现集群。集群的方法我在
另一篇博文里面已经讲述。