【问题标题】:Can I use cassandra (2.0.3) as a php session store (eg. vs redis)?我可以使用 cassandra (2.0.3) 作为 php 会话存储(例如 vs redis)吗?
【发布时间】:2013-12-15 23:24:55
【问题描述】:

我已经搜索了几天并阅读了一些 cassandra 书籍。但我还没有得到我的答案。在我们将时间投入到 redis 或 riak 集群来进行 php 会话存储之前,我们想对此进行更多评估。

我们的用户在地理上被重定向到 3 个数据中心(美国、欧洲、亚洲),我们在所有 3 个位置运行多数据中心 cassandra。

对我们来说最好和最有效的是能够将 Cassandra 用作会话存储,因此我们不必维护另一个集群。我们不介意用户必须重新登录,因为他们被重定向到不同的数据中心,但希望尽可能减少这种情况。

那么在我们的场景中,cassandra 作为 php 会话存储在技术上是一个不错的选择吗?如果是,那么在 cassandra 中执行此操作的最佳做​​法是什么?我们已经覆盖了 php。

谢谢!

【问题讨论】:

    标签: php session cassandra


    【解决方案1】:

    Cassandra 可能是一个很好的会话存储。但是,请注意 Cassandra 的最终一致设计并相应地选择您的读取设置。例如,如果您使用默认复制因子 3,那么在执行下一个读取请求之前,写入可能不会被完全复制(到其他 2 个节点)。如果您的读取一致性级别为 1(最快的读取性能),您可能会从尚未收到最新写入的节点取回旧数据。我建议使用 QUORUM 或更高的读取一致性来避免此问题 - 性能会略低于 1 级,但在这种情况下可能需要进行权衡。

    【讨论】:

    • 我一直在阅读 cassandra 可调一致性选项。看起来 LOCAL_QUORUM 是我们问题的解决方案。用户在地理上被重定向到不同数据中心的机会应该非常低。因此,在我们的用例中,权衡它们需要重新登录是完全可以接受的。你同意吗?感谢您的回答。
    • 抱歉响应缓慢...是的,如果数据中心重定向被认为是可接受的风险,LOCAL_QUORUM 听起来很合适。
    【解决方案2】:

    PHP 支持开箱即用的各种会话方法 - 磁盘、memcached 和其他一些方法。猜测 Cassandra 不是其中之一 - 但您可以相当轻松地实现自己的会话存储 - 请参阅此页面以获取解释 - http://php.net/session.customhandler

    您必须实现一组方法并将它们告诉 PHP,或者在较新的版本中,有一个您可以实现的接口 - 更好/更简洁!

    【讨论】:

    • 嗨,我们用我们编写的 cassandra php orm 类覆盖了 php 部分。但只是想知道使用 cassandra 作为 php 会话存储在技术上是否是一个不错的选择。我们刚开始使用 cassandra,所以对它还不是很熟悉。
    猜你喜欢
    • 1970-01-01
    • 2018-08-23
    • 2020-07-07
    • 2019-05-13
    • 2011-02-15
    • 2015-03-19
    • 2021-05-22
    • 2014-05-20
    • 2015-02-20
    相关资源
    最近更新 更多