6

我们在 Rails Web 服务中使用反向地理编码,并且在通过 geokit 使用 Google 反向地理编码器时遇到了配额问题。我们还在实施 simple-geo 服务,我希望能够跟踪我们每分钟/小时发出的请求数。

对跟踪我们的反向地理编码调用有什么建议吗?

我们的代码将如下所示。你会做这些吗?

  • 每天在后台添加自定义记录器和进程
  • 使用我不知道的超级神奇的宝石,它可以轻松完成配额和评级
  • 将调用插入数据库并在那里进行查询。

注意:我不需要实时数据,只是想知道每小时的时间,我们每小时的通常请求和最大请求​​是多少。(以及每月总请求)

def use_simplegeo(lat, lng)
  SimpleGeo::Client.set_credentials(SIMPLE_GEO_OAUTHTOKEN, SIMPLE_GEO_OAUTHSECRET)
  # maybe do logging/tracking here?
  nearby_address = SimpleGeo::Client.get_nearby_address(lat, lng)

  located_location = LocatedLocation.new
  located_location.city = nearby_address[:place_name]
  located_location.county = nearby_address[:county_name]
  located_location.state = nearby_address[:state_code]
  located_location.country = nearby_address[:country]
  return located_location

end

谢谢!

4

1 回答 1

2

这里的第一部分没有回答您提出的问题,但如果以前没有考虑过,我会有所帮助。

您是否考虑过不使用服务器(即通过 Geokit)进行反向地理编码,而是由客户端完成?换句话说,一些 Javascript 加载到用户的浏览器中,代表您的服务进行 Google 地理编码器 API 调用。

如果您的应用程序可以支持这种方法,那么这有很多优点:

  • 您解决了配额问题,因为您的分布式用户每个人都有自己的每日配额并且不消耗您的配额
  • 您不会为此花费自己的服务器资源

如果您仍想记录地理编码器查询并且担心对主应用程序数据库的性能影响,那么您可以考虑以下选项之一:

  1. 只需为日志记录(写入密集型)创建一个单独的数据库(或多个数据库)并同步执行。可能是关系的,但也许 MongoDB 或 Redis 也可以工作
  2. 登录到文件系统(使用自定义记录器),然后将它们分批处理到结构化的、可查询的存储中。如果效果更好,存储可以是外部的,例如在 Amazon 的 S3 上。
  3. 每次执行地理编码时只需将记录写入 SimpleGeo 并将自定义元数据添加到这些记录以将它们绑定回您自己的模型
于 2010-07-26T17:21:25.580 回答