go中一次处理许多GET请求

问题描述 投票:0回答:1

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

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

multithreading go concurrency goroutine mux
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.