0

我正在构建一个应用程序,该应用程序可以访问实现分页的 FHIR API,并且每页最多只能提供 100 个结果。但是,我们的应用需要聚合这些页面,以便将有关整个结果集的元数据传递给 UI。

当我遍历大型结果集的页面时,我得到HTTP 状态 429 - Too many requests。我想知道将这些请求交给 kafka 服务是否会帮助我解决这个问题并可能提高性能。我已通读 Kafka 文档的介绍和用例部分,但仍不清楚实施此工具是否会有所帮助。

4

2 回答 2

1

您收到429 错误是因为您太快地发出太多请求;您需要实施速率限制。

至于是否使用 Kafka,很大一部分是你的结果集是否适合内存。如果您可以将其放入内存中,那么我真的建议您避免引入单独的服务(KISS)。如果没有,那么可以,您可以使用 Kafka。但我建议您长时间考虑是否可以使用关系数据存储,因为它们更加灵活。甚至可能直接读/写到磁盘

于 2019-12-02T20:07:47.763 回答
0

我是你,在我研究 Kafka 之前,我会尝试解决为什么你会收到 429 错误。我不会忽视这一点。我会尝试看看我将如何解决这个问题。

我会调查以下内容:

1)让你的进程休眠。服务器响应通常在响应中包含一个 Retry-after 标头,其中包含您在重试之前应该等待的秒数。

2)指数退避如果服务器的响应没有告诉您等待多长时间,您可以通过在其间插入暂停来重试您的请求。

请记住,在实施睡眠之前,需要进行广泛的测试。您必须确保您现有的功能不会受到影响。

要回答您的问题,如果 Kafka 是否会帮助您,答案是 它可能会或可能不会,我可以从您的问题中获得的信息有限。请理解实施 Kafka 会改变您的网络架构。您正在引入一个流媒体平台。您很可能会实施缓存来汇总您的结果。但目前所有这些概念都处于非常整体的水平。我建议您首先应该解决 429 错误,然后保证是否存在适当的技术原因来实施 Kafka,这将提高您网站的性能。

于 2019-12-02T20:13:59.170 回答