【问题标题】:Couchbase Bucket vs Memcached Bucket for SessionProviderSessionProvider 的 Couchbase 存储桶与 Memcached 存储桶
【发布时间】:2012-10-08 23:23:41
【问题描述】:

我了解到 Asp.Net 的默认 sessionprovider 对于分布式应用程序来说不是一个好的实践。所以我决定将 asp.net 的 sessionprovider 更改为 couchbase。但是当我尝试选择数据桶时,我不确定使用哪个。我知道 Couchbase 是一个持久的 no-sql 数据库,而 memcached 是一个缓存服务器。

使用 couchbase 存储桶代替 memcached 存储桶有什么优点和缺点,反之亦然?

我正在使用 couchbase 2.0 和 https://github.com/couchbaselabs/couchbase-aspnet 库将 couchbase 转换为 sessionprovider。

【问题讨论】:

    标签: asp.net-mvc session couchbase


    【解决方案1】:

    无论是使用 Couchbase 存储桶还是 Memcached 存储桶,您都会体验到类似的优势。即使使用 Couchbase 存储桶,文档也存储在 RAM 中。文档也先写入 RAM,然后异步写入磁盘。所以性能应该是相似的。与其他进程外会话状态解决方案(例如 SQL Server)相比,Couchbase 的性能应该要好得多。

    除了性能之外,(正如@DB_Chick 指出的那样)您将拥有在节点故障时能够重新创建会话的优势,因为数据不会随服务器而死(假设启用了复制)。

    如果您将 Couchbase 存储桶与 Couchbase Server 2.0 一起使用,您将获得额外优势,即能够针对会话数据编写 map/reduce 视图(如果您存储 JSON 数据结构,则最简单)。有了视图,您可以轻松地询问“我有多少活动会话?”

    最后,您的会话数据仍将随 Couchbase 存储桶过期。当您对会话数据设置到期时,Couchbase 会在定期安排的后台清理作业期间或在到期后检索该项目时将该项目标记为删除。

    【讨论】:

    • 感谢您的回复。这是一个很好且内容丰富的答案。
    • 是不是说不能用memcached buckets写视图?
    • 你知道 Couchbase 的持久性 SLA 是什么吗?但是,将数据保存在 RAM 中对于节点故障是不安全的。如果节点在写入磁盘之前崩溃,我们仍然会丢失数据。 couchbase 如何解决这个问题?
    【解决方案2】:

    Couchbase 存储桶支持所有特定于 Couchbase 的功能,包括在线重新平衡(用于扩展集群)、持久性和复制以及故障转移。这是推荐的存储桶类型。

    memcached 存储桶旨在仅支持核心 memcached 协议作为内存缓存。因此,支持和功能仅限于与独立 memcached 实现相同的功能。

    更多信息在这里:http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-introduction-architecture-buckets.html

    【讨论】:

    • 感谢您的回复。我了解 couchbase 存储桶和 memcached 存储桶之间的区别,但是将会话数据存储在持久存储中会有什么好处。或者有没有办法将 couchbase 存储桶配置更改为仅使用内存?
    猜你喜欢
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多