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请求的主要内容,如果未能解决你的问题,请参考以下文章