Java 如何估计总IO
我正在开发一个流程,它可以作为所有客户端访问数据的门面(报告大小从100KB到几MB不等),每天运行数千次,但具体数量未知,并且每天可能会有很大的变化 构建façade背后的动机是,我们在幕后有几个服务器可以生成数据,但我们希望有某种负载平衡,以充分利用我们拥有的所有服务器。客户不需要知道他们需要访问的单个服务器 因此,façade选择一个服务器,对报告进行取整,然后将数据发送回客户机。对于给定的报告,这里涉及两个IOJava 如何估计总IO,java,sockets,io,netty,nio,Java,Sockets,Io,Netty,Nio,我正在开发一个流程,它可以作为所有客户端访问数据的门面(报告大小从100KB到几MB不等),每天运行数千次,但具体数量未知,并且每天可能会有很大的变化 构建façade背后的动机是,我们在幕后有几个服务器可以生成数据,但我们希望有某种负载平衡,以充分利用我们拥有的所有服务器。客户不需要知道他们需要访问的单个服务器 因此,façade选择一个服务器,对报告进行取整,然后将数据发送回客户机。对于给定的报告,这里涉及两个IO 在客户端和Façade服务器之间 façade服务器和处理节点之间 我知道这
我知道这是一个模糊的话题,但我如何估计总IO,以确定在所有IO都通过时,立面本身是否会成为瓶颈。如果您有任何见解和建议,我们将不胜感激。根据最坏情况进行评估。 你说报告的确切数量不得而知,可能会有很大差异。你只需要关注最坏的情况。你只需要确保门面在最繁忙的一天不会成为瓶颈。我的计划是利用历史上最繁忙的一天,将流量增加一倍。如果你确保门面能够处理那么多的流量,那么它很可能能够处理任何可以预见的事情
请考虑,返回的数据不必通过外观返回。有几种不同的方法可以构建这样的系统,其中处理节点可以在完成后将结果直接发送回客户端。除非这些报告基于静态数据并可以缓存在facade中,否则我看不到在完成报告后通过facade将所有报告的数据发送回的好处。
谢谢Erick,尽管我不能在我们当前的环境中使用报表服务器,因为报表服务器是专有产品,它们只能通过api将报表返回给调用方,但您能否分享一些想法,我如何将数据直接从处理节点发送到客户端。也许我会考虑在每个节点上都有一个本地客户端。此外,facade还需要知道任务已完成,以便在计算哪个节点正在完成多少任务时考虑到这一点。在每个节点上“包装”专有服务器的自定义客户端肯定有助于解决此问题。当处理节点完成时,它应该创建一个服务器套接字来提供结果。然后,它将端口号和随机授权码发送到facade,facade将此信息转发给客户端以进行结果检索。尽管我想知道,如果报表服务器是专有产品,那么供应商对解决此类问题会有什么建议。当然,他们有一个解决方案,如何扩大他们的产品?非常感谢埃里克,这当然是可行的。我在研究Servelet是如何实现请求转发的。到目前为止,该专有产品不支持任何此类功能,这正是由于伸缩问题,我们需要构建自己的东西的全部原因。