【问题标题】:Should I use sessions in Google App Engine?我应该在 Google App Engine 中使用会话吗?
【发布时间】:2014-08-12 12:19:41
【问题描述】:

我刚刚从this questions 那里得知 Google 应用引擎现在支持会话。我希望能够使用它们,但不确定我是否应该仅仅因为我可以。由于可扩展性问题。

我的问题是真的,

我会将会话信息存储在哪里?在数据存储中还是需要很长时间?而且肯定成本高得离谱?

内存缓存呢?我只知道 GAE 几天,仍在阅读。 Mem 缓存是否被认为是快速/可扩展的,是否需要成本?

会话可扩展性的最佳做法是什么?

非常感谢

【问题讨论】:

    标签: java google-app-engine http session


    【解决方案1】:

    你真的别无选择。 Appengine 透明地为您处理会话持久性和快速访问。

    引用the official documentation:

    App Engine 包括使用 servlet 会话接口的会话实现。该实现将会话数据存储在 App Engine 数据存储中以实现持久性,并且还使用 memcache 来提高速度。

    【讨论】:

      【解决方案2】:

      我会将会话信息存储在哪里?在数据存储中或 这需要很长时间吗?而且肯定成本高得离谱?

      如果您在 GAE 上启用会话,它会自动将会话信息存储在内存缓存中并将其备份到数据存储中。

      内存缓存呢?我只知道 GAE 几天, 我还在读书。 Mem 缓存是否被认为是快速/可扩展的? 收费吗?

      memcache 查询没有成本,并且比数据存储查询快得多。缺点是 memecache 是易失的,可能随时被刷新。这就是 GAE 也在数据存储上备份会话信息的原因。

      会话可扩展性的最佳做法是什么?

      关于这点有很多观点,但理想情况下,您的应用应该是“无状态的”,以便在 GAE 上实现最大的“可扩展性”,因此您应该能够在没有任何额外信息的情况下处理每个请求,但这通常是真的很难得到。

      在您的实例之间拥有共享空间(如 memcahce/datastore/blobsotre)实际上消除了与“分布式和动态”设置相关的所有问题,但从哲学上讲,您应该尝试使应用程序尽可能无状态。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 1970-01-01
        • 2011-06-14
        • 2013-06-26
        • 1970-01-01
        • 2012-09-26
        相关资源
        最近更新 更多