DATASNAP是針對企業數據中間件市場而推出來的產品,如果在其它領域用它可能就不會合適。
DATASNAP通信使用INDY10,INDY是阻塞型SOCKET。
1.如果使用TCP/IP長連接,DATASNAP的負載能力大概是幾百。
因為眾所周知的原因,阻塞型SOCKET,一個SOCKET連接需要中間件開啟一個線程為其服務,幾百個長連接需要WINDOWS
開啟幾百個線程為之服務。這種情形中間件INDY的線程池其實沒有起多大作用。
2.為了避免阻塞型INDY的短點,可以使用TCP/IP短連接,DATASNAP的短連接是這樣做的:客戶端連接上中間件---》客戶端向中間件申請數據服務
---》中間件返回數據給客戶端---》由客戶端斷開同中間件的SOCKET連接。這種情形DATASNAP的負載能力大概是幾千。之所有負載能力可以如此大的提升,
乃是因為,一個線程不再只能為一個SOCKET連接服務,而是可以為所有的SOCKET連接服務。中間件的服務模式變為:當前有多少個並發處理的事件就開多少
個線程為之服務,當線程服務完當前的事件,線程不釋放,可以繼續為后續事件服務。可以看出來,中間件線程池的對於線程的調度真正做到了高效率。
一千個客戶對中間件的並發事件申請可能也就幾十個。
幾千的負載能力已經蔚為可觀了。
3.幾千的負載能力應付一般的企業數據中間件應用已經足夠了,實際應用當中應該很少會有企業超過這個負載范圍。如果超過,怎么辦?
解決方法是DATASNAP集群。雖然目前官方沒有提供現成的集群解決方案,但是完全可以自已通過代理服務器來實現集群。集群的方法我在
另一篇博文里面已經講述。