Web 消息传递服务面临的挑战

在部署支持 Web 消息传递(使用 Bayeux 协议)的应用程序时将面临一些挑战。任何使用长期连接的 Comet 风格应用程序都将面临这些挑战。在这些困难当中,有许多都涉及到 Comet 风格的通信对因特网基础结构的各个方面的同步情况带来严峻的考验。Web 消息传递服务通过使用通道框架可以超越“每个请求对应一个线程”这种模式,但是因特网基础结构的许多其他部分还难以做到这一点。

在伸缩性方面可能有些困难的一个区域是 Web 服务器。当 IBM® HTTP Server for WebSphere® Application Server 位于支持 Web 消息传递的应用程序前面时,由于请求要花更多时间来等待事件,因此,需要配置 IBM HTTP Server for WebSphere Application Server 以处理更多请求。IBM HTTP server for WebSphere Application Server 将正在等待的单个请求与单个线程联系起来,并且受到可供 Web 服务器使用的最大线程数的约束。在大多数 Web 消息传递安装中,需要增大位于支持 Web 消息传递的应用程序前面的 IBM HTTP Server for WebSphere Application Server 安装数目。

WebSphere Application Server 的代理服务器可以取代 IBM HTTP Server for WebSphere Application Server 位于支持 Web 消息传递的应用程序前面。WebSphere Application Server 的代理服务器不会对每个传入请求使用一个线程,并且应该能够比 IBM HTTP Server for WebSphere Application Server 处理更多的并发客户机。但是,用 WebSphere Application Server 的代理服务器来取代 IBM HTTP Server for WebSphere Application Server 可能就会产生问题。有关使 WebSphere Application Server 的代理服务器位于支持 Web 消息传递的应用程序前面的更多信息,请参阅 developerWorks 文章:了解有关代理的基础知识。可以在使用 Web 消息传递解决方案之前使用其他基于硬件的解决方案。需要记住的重要事项是,在集群环境中,需要具有会话亲缘关系才能使请求恢复到同一服务器中。

两个连接限制

Web 浏览器中的 Ajax Bayeux 客户机是连接至 Web 消息传递服务的最常见客户机。在连接至服务器时,浏览器具有一定局限性。其中一项局限性是单个服务器只能建立两个连接。如果已经建立了 Bayeux 连接,并且使用了这些连接中的一个连接,那么就要让另一个连接保持空闲。由于已经使用了一个连接,因此,单个浏览器实例(包括多个选项卡和窗口)将只能与服务器建立一个 Bayeux 连接。当第二个浏览器窗口或选项卡试图建立一个长期连接时,必须拒绝此连接或者将此连接恢复为传统轮询。在开发支持 Web 消息传递的应用程序时,您必须了解此局限性并采取相应的措施。

在与建立了 Bayeux 连接的服务器执行其他与时间相关的浏览器通信时也必须小心。Bayeux 协议使用第二个可用连接来预订、取消预订信息和将信息发布至服务器。其他需要进行连接的操作包括:Ajax XmlHttpRequest 操作,下载图像或 HTML 文件,上载文件。当在一台服务器上针对同一个浏览器实例执行多项操作时,Bayeux 客户机应用程序的运行速度可能会下降,并且在等待释放连接期间将产生奇怪的行为。



使用条款 | 反馈