建议在 Google 个位置自动完成 API 上创建代理 API

Suggestion to create a proxy API over Google Places autocomplete API

我是一名移动开发人员,并已开始使用 Google Place API 来获得自动完成建议,以便在我的应用中查找地点。但我观察到 Google Places API 在缩放时变得昂贵。所以我在移动端做了一些优化如下:-

  1. 限制自动完成至少 3 个字符
  2. API 调用自动完成的阈值是输入的 2 个字符之间的 500 毫秒差异
  3. 使用LRU机制对结果进行本地缓存

所有这些优化客户端都很好。但现在我也在考虑从后端 API 方面进行优化。对于此优化,我将为 google 位置自动完成 api 创建一个带有服务器端缓存的包装器。根据 Google 准则,此缓存的时间跨度为 30 天。

我需要帮助来了解如何设计它? 比如我需要什么键和值组合来存储自动完成建议? 我应该使用 Redis 还是 Hazelcast? 我正在使用微服务架构在 Java 中使用 aws 服务器编写我的后端。 任何我可以研究和学习的已经实施的解决方案。

请帮忙,因为我是后端开发新手。

在走这条路之前,您是否进行了成本分析以了解这样做是否值得?请记住,现在这是您需要维护的代码,云基础设施确实需要一些照顾和支持。即在您的定价分析中,不要忘记将您的时间纳入成本计算。它在经济上仍然值得吗?

不知道您的交易量,听起来您在客户端做了相当多的免费优化。如果您添加服务器端优化,您实际上是在添加云到云调用,以及您正在使用的各种 AWS 服务的额外延迟。你还好吗,性能受到影响?

如果您仍然认为值得,我推荐的路径是使用 API 网关 -> Lambda -> DynamoDB 走无服务器路线。这将使您的成本保持相对较低,因为 Lambda 具有相当慷慨的免费套餐。如果您需要更快的性能,您可以随时通过 Elasticache 将 Redis 插入堆栈。

就您需要存储的内容而言,您可能希望缓存用户输入的各种输入以及从位置 API 返回的信息。例如,您可能想要捕获搜索字符串、位置信息,然后是您想要的任何字段(例如 place_id、图标、opening_hours 等);基本上无论你今天使用什么。它与您的 LRU 缓存有非常相似的需求。