建议通过Google地方信息自动填充API创建代理API

时间:2018-11-10 03:48:05

标签: java amazon-web-services google-places-api backend hazelcast

我是一名移动开发人员,已经开始使用Google Place API提出自动填充建议,以在我的应用中查找位置。但我观察到,Google Places API在扩展时会变得昂贵。因此,我在移动端进行了一些优化,如下所示:-

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

通过所有这些优化,客户端方面是很好的。但是现在我也在考虑从后端API方面进行优化。为了进行此优化,我将使用服务器端缓存为Google Places自动完成api创建一个包装器。根据Google指南,此缓存的时间跨度为30天。

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

由于我是新手后端开发人员,请提供帮助。

1 个答案:

答案 0 :(得分:0)

在走这条路之前,您是否进行过成本分析以查看这是否值得?请记住,现在这是您需要维护的代码,并且云基础架构确实需要一些维护和补充。即,在您的定价分析中,请不要忘记将您的时间用于成本计算。仍然在经济上值得吗?

不知道您的交易量,听起来您已经在客户端进行了大量的免费优化。如果添加服务器端优化,则可以有效地添加云到云的调用,以及正在使用的各种AWS服务的额外延迟。没问题,表现不错吗?

如果您仍然认为这值得,我建议的路径是使用API​​ Gateway-> Lambda-> DynamoDB进行无服务器路由。由于Lambda具有相当大的免费套餐,因此这将使您的成本保持相对较低。如果需要更快的性能,则以后总是可以通过Elasticache将Redis插入堆栈中。

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