Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何估计总IO_Java_Sockets_Io_Netty_Nio - Fatal编程技术网

Java 如何估计总IO

Java 如何估计总IO,java,sockets,io,netty,nio,Java,Sockets,Io,Netty,Nio,我正在开发一个流程,它可以作为所有客户端访问数据的门面(报告大小从100KB到几MB不等),每天运行数千次,但具体数量未知,并且每天可能会有很大的变化 构建façade背后的动机是,我们在幕后有几个服务器可以生成数据,但我们希望有某种负载平衡,以充分利用我们拥有的所有服务器。客户不需要知道他们需要访问的单个服务器 因此,façade选择一个服务器,对报告进行取整,然后将数据发送回客户机。对于给定的报告,这里涉及两个IO 在客户端和Façade服务器之间 façade服务器和处理节点之间 我知道这

我正在开发一个流程,它可以作为所有客户端访问数据的门面(报告大小从100KB到几MB不等),每天运行数千次,但具体数量未知,并且每天可能会有很大的变化

构建façade背后的动机是,我们在幕后有几个服务器可以生成数据,但我们希望有某种负载平衡,以充分利用我们拥有的所有服务器。客户不需要知道他们需要访问的单个服务器

因此,façade选择一个服务器,对报告进行取整,然后将数据发送回客户机。对于给定的报告,这里涉及两个IO

  • 在客户端和Façade服务器之间
  • façade服务器和处理节点之间

  • 我知道这是一个模糊的话题,但我如何估计总IO,以确定在所有IO都通过时,立面本身是否会成为瓶颈。如果您有任何见解和建议,我们将不胜感激。

    根据最坏情况进行评估。

    你说报告的确切数量不得而知,可能会有很大差异。你只需要关注最坏的情况。你只需要确保门面在最繁忙的一天不会成为瓶颈。我的计划是利用历史上最繁忙的一天,将流量增加一倍。如果你确保门面能够处理那么多的流量,那么它很可能能够处理任何可以预见的事情


    请考虑,返回的数据不必通过外观返回。有几种不同的方法可以构建这样的系统,其中处理节点可以在完成后将结果直接发送回客户端。除非这些报告基于静态数据并可以缓存在facade中,否则我看不到在完成报告后通过facade将所有报告的数据发送回的好处。

    谢谢Erick,尽管我不能在我们当前的环境中使用报表服务器,因为报表服务器是专有产品,它们只能通过api将报表返回给调用方,但您能否分享一些想法,我如何将数据直接从处理节点发送到客户端。也许我会考虑在每个节点上都有一个本地客户端。此外,facade还需要知道任务已完成,以便在计算哪个节点正在完成多少任务时考虑到这一点。在每个节点上“包装”专有服务器的自定义客户端肯定有助于解决此问题。当处理节点完成时,它应该创建一个服务器套接字来提供结果。然后,它将端口号和随机授权码发送到facade,facade将此信息转发给客户端以进行结果检索。尽管我想知道,如果报表服务器是专有产品,那么供应商对解决此类问题会有什么建议。当然,他们有一个解决方案,如何扩大他们的产品?非常感谢埃里克,这当然是可行的。我在研究Servelet是如何实现请求转发的。到目前为止,该专有产品不支持任何此类功能,这正是由于伸缩问题,我们需要构建自己的东西的全部原因。