如果通讯协议使用TCP/IP,客户端同中间件之间的SOCKET连接是非常有讲究的。
应该视应用场合巧妙地使用短连接搭配长连接的方式。纯粹地使用长连接或者纯粹地使用短连接,
往往不大合理。如果长时间让一个SOCKET长连接休闲,这无疑是对中间件资源的浪费,如果这种休闲的长连接数量非常多,可能会影响中间件的性能。光靠中间件通过发心跳包自动断开长时间休闲的连接,其实这是中间件对此类事件的最后一道防线。
如果远程方程都做成短连接,也不大好,例如一些远程方法成块地执行,如果执行一个远程方法先同中间件建立SOCKET连接,执行完以后立即断开连接,这样就不好。因为建立SOCKET连接比较地耗时,一些远程方法成块地执行,耗费在建立连接上的
时间非常多了。那么我们可以在这一些成块执行的远程方法执行之前建立一个长连接,等这些远程方法都执行完以后,再关闭这一个长连接,这样比较合理。
其实长连接和短连接都是相对的。世界上的事情往往没有纯粹可言。所谓长连接中有短连接,短连接中有长连接,你看得见吗?
设置中间件的线程池的线程方式,再在客户端巧妙地使用长、短连接的配合,才能合理地构建一个多层架构。