0

考虑到使用 AppEngine 的 webapps 的生命周期,我有疑问。让我们考虑以下情况:我希望 servlet 成为我的 p2p 网络中的超级对等点,它提供有关当前连接用户的信息,以及使用 p2p 协议时有用的所有其他细节。

我决定使用 Datastore Java API 存储这些数据。当请求到达应用程序时,将从数据库中检索数据并将其发送给用户。简单的。事情是这样的——数据检索似乎有些多余。我想知道是否可以在应用程序启动时检索一次数据,然后将其发送给用户。

我知道 60 秒的请求和响应限制,并且基于这个主题Google App Engine Instance Life Cycle,我猜每个用户请求都会创建另一个 servlet 实例,并且每次用户都必须检索所有数据发送请求。我对吗?有什么办法可以摆脱冗余的数据库访问?使用 Google 提供的 Backend 怎么样?

提前致谢!

4

2 回答 2

0

不,你不对。Servlet - 即实例 - 为多个请求持续存在。但是寿命是不可预测的,你不应该依赖它。

您应该使用 memcached 来存储此类数据。

于 2012-08-14T14:04:14.250 回答
0
  1. 不是为每个请求启动一个新实例。

  2. 当 GAE 认为它需要更多的计算能力来服务请求时,就会启动实例。

  3. 您永远无法知道哪个实例将服务请求。

  4. 后端是固定实例(=您配置运行的数量),因此它们非常适合保存共享数据。请记住:后端不是永久存储,它们可以随时重新启动(根据我的经验,这种情况每天发生一次)。所以你需要保存你的数据

  5. 您可以使用 memcache(=易失性,但又快又便宜)来保存共享数据和数据存储作为后备(=可靠,但速度较慢且昂贵)。

于 2012-08-14T14:07:37.930 回答