go中一次处理许多GET请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go中一次处理许多GET请求相关的知识,希望对你有一定的参考价值。

我正在编写这个API,它是slack bot应用程序的后端,将被许多用户使用。在我的api中的一个API端点中,我正在调用外部API来获取一些数据,因此我可以在我的API中按摩它以将其发送给BOT /用户。但我正在进行的外部API调用非常昂贵(约5 / ~10秒)。我注意到,当我在同一时间点击我的API端点两次或更多次时有时我没有得到任何数据。只有一个电话成功。有什么办法可以解决这个问题吗?我一直在调查工人队列,但不确定它是否过度杀伤。

我正在使用多路复用器来进行路由。

答案

如果您希望比外部API更快地处理请求,则需要将出站呼叫与传入请求分开并进行某种缓存。例如,您可以:

  • 运行调用外部API的worker并将结果存储在缓存中
  • 您是否请求缓存中的处理程序拉取
  • 如果数据是最近的,请将其返回
  • 如果数据太旧,请等待刷新缓存,然后使用新数据

如果这是一个24/7忙碌的服务,工作人员可以按重复的时间表刷新缓存,无论需要什么频率;或者,您可以让请求处理程序向缓存工作队列一条消息,指示需要刷新缓存,这样当您没有收到请求时,它就不会继续访问外部API。

以上是关于go中一次处理许多GET请求的主要内容,如果未能解决你的问题,请参考以下文章

Go语言 Gin处理请求参数

Go语言 Gin处理请求参数

Go Web:处理请求

无法在 Go 中构造 HTTP GET 请求

一次完整的HTTP请求处理过程

带有许多参数的“长”GET 请求