gpt4 book ai didi

java - 识别后端发出的重复请求

转载 作者:太空宇宙 更新时间:2023-11-04 13:52:25 24 4
gpt4 key购买 nike

我面临一个用例,我需要跟踪重复的请求,这些请求是通过后端的 REST API 调用触发的。每个请求都会写入数据库,因此不需要再次处理重复的请求。

重复的请求可能来自同一虚拟机下的不同线程,也可能完全来自不同的虚拟机。问题是如何识别这些重复的请求?

我能想到的方法:

  1. 每次处理传入请求之前都会检查数据库,即使我们处理了请求,请求的结果是否已经是原来的样子。如果是,则忽略该请求,否则对其进行处理。

  2. 对于已处理的每个传入请求,将其以序列化格式存储在映射到值(类似于哈希索引)的数据库中。然后,对于每个传入请求,检查数据库是否已经有该请求。如果是,则忽略其他处理。

但是两者都需要数据库读取操作。我可以做得更好吗?

最佳答案

我认为在这种情况下您无法避免数据库操作。

您的第一种方法是针对特定项目的。第二种方法也不能应用于任何代码,因为可能存在用户发送多个相同请求并且都必须处理的情况。

更通用的方法是服务器发出 token ,然后客户端将 token 随每个请求一起传递到服务器。处理每个请求的服务器都会检查请求中传递的 token 是否已被某人使用。如果没有,则在数据库中标记该 token 已被使用并处理请求。否则忽略该请求或发送错误。客户端可以通过查询服务器方法来获取此类 token (在这种情况下,无需检查此特定请求的任何 token ),或者服务器可以选择在每次响应查询时发送新 token 。

如果您随机生成 token ,您还应该确保偶尔清理过时的 token ,以避免污染数据库和生成新 token 时发生冲突。 (参见Birthday paradox)。

关于java - 识别后端发出的重复请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30161062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com