Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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中跟踪下载内容的大小_Java_Spring Boot - Fatal编程技术网

如何在java中跟踪下载内容的大小

如何在java中跟踪下载内容的大小,java,spring-boot,Java,Spring Boot,我需要跟踪用户从我们的web应用程序(基于SpringBoot2.x)下载的内容的大小。即使下载不成功,我也应该记下(到数据库)传输了多少数据。 到目前为止,我已经找到了可能的解决办法,但我也在寻找其他的解决办法 是否有人使用过CountingOutputStream,并且对如何正确处理下载有一些疑问,或者是否有人使用其他解决方案实现了这一点?查看Azure文档,它能够存储细粒度日志以进行完整的文件访问,包括大小和访问计数。详细信息可在以下文档中找到: 现在的问题是,您的客户如何访问日期。最

我需要跟踪用户从我们的web应用程序(基于SpringBoot2.x)下载的内容的大小。即使下载不成功,我也应该记下(到数据库)传输了多少数据。 到目前为止,我已经找到了可能的解决办法,但我也在寻找其他的解决办法


是否有人使用过CountingOutputStream,并且对如何正确处理下载有一些疑问,或者是否有人使用其他解决方案实现了这一点?

查看Azure文档,它能够存储细粒度日志以进行完整的文件访问,包括大小和访问计数。详细信息可在以下文档中找到:

现在的问题是,您的客户如何访问日期。最简单的方法是使用Azure用户,因为这将允许文件访问权限管理和指标的自动拆分

如果文件是特定于客户的,并且始终专用于单个客户,则可以采取不同的方法。因此,如果所有文件都是特定于客户的模式,则可以筛选并打开该模式(例如,文件名/文件路径中的客户ID)

Azure Blob存储日志也可以通过参数进行分析。e、 g:

可用的转子流量计列表相当大:

如果数据相同,则需要找到一个匹配的参数,以确保按客户划分数据消耗。如果您分析推荐人,并且您的代理将客户Id作为参数,您甚至可以直接对其进行过滤

总而言之,我的偏好是:

  • 使用Azure用户管理为每个客户添加一个用户,并获得所有其他好处
  • 如果您有文件名模式和专用的非重叠文件,请使用文件路径进行筛选
  • 如果没有,请使用代理API中的参数
  • 在所有情况下,对Azure日志的分析都可以做到这一点。好处是您使用的系统也会创建账单,因此您应该在业务方看到的数字上保持一致。Azure还将处理错误案例:如果有人非常猛烈地攻击您的系统并且数据库日志失败,会发生什么?下载一半的文件将收取多少费用?由于路由问题等原因,在重新传输时将收取的费用。Azure日志在所有这些情况下可能都不是完美的,但如果Azure出现问题,它也不会向您收取费用-因此您是一致的,并且拥有真实的黄金来源


    还请记住,由于所有数据都将通过API进行管道传输,因此成本会更高,而API是Web服务器所需的资源。如果设计不当,这很难很好地扩展(想想web服务器负载平衡和恢复下载)。

    有些要求仍然不清楚:需要统计哪些数据?发送数据?传输和接收的数据?压缩-未压缩(不仅是文件,而且是HTTP压缩)?统计文件流量与HTTP流量。网络重传呢?还有什么是用户?会议?命名用户?顾客?所有流量都用于计费?根据这些问题,您的解决方案可能会起作用,或者您需要在其他级别上研究其他选项(例如JMX监控)。另外,如果数据量很大(我怀疑),通常您从中读取数据的系统也会附带工具(例如S3)。谢谢您的提问。我们正试图测量存储在azure blobstorage中的数据(大zip文件)的下载量。Blobstorage没有在blob级别提供这样的度量,所以我们想创建一些“代理”,在这里我们将计算它。用户是oauth(keydape)实体,应该始终获得下载授权。所以,您正在围绕一个API构建一个API,该API具有哪些附加值?你同时失去了什么?使用S3后,我无法相信Azure不能为该用例提供一种方法。我不相信azure的这些指标。我试图设置它,基本上只监视出口,当我下载了4个文件时,只有一个关于一个文件的日志出现。因此,我想创建一些代理,在那里我可以从azure下载文件并监视下载的大小。我知道这会很难,但至少我手中有解决方案,因为我们在kubernetes集群中运行,我认为负载平衡不会成为问题……也许只是简历下载是我无法用自己的解决方案创建的。在查询日志之前,你等了多久?这需要时间,它不是实时数据库。还买了一张去Azure的票。他们将帮助解决诸如技术是封闭源代码(尽管这里和那里都涉及到一些开放源代码)之类的问题,他们是唯一拥有完整概述的人。我非常怀疑“松散”的文件下载和传输的大小,尤其是因为这是最重要的指标。其他客户可能已经抱怨过了。负载平衡与下载数据时的会话有关。特别是当你有一个多部分下载,你需要粘性会话或一些更优雅的“魔术”在幕后得到直接回到同一台机器。我不是说机器计数。