web - 当使用最终一致的数据存储时,用户是否应该被定向到特定的数据节点?

标签 web couchdb distributed-computing eventual-consistency nosql

在使用最终一致的分布式数据存储(在我的案例中为 CouchDB)的场中运行 Web 应用程序时,我是否应该确保给定用户始终指向同一个数据存储实例?

在我看来,任何 Web 请求都可以使用任何数据存储的替代方法增加了处理一致性问题(重试、检查等)的显着复杂性。另一方面,如果给定 session 中的用户总是被定向到同一个沙发节点,我的一致性问题是否主要围绕“共享”用户数据,从而大大简化?

我也对指导用户的策略感到好奇,但也许我会将其留作另一个问题(欢迎评论)。

最佳答案

根据CAP Theorem ,分布式系统可以具有完全一致性(所有节点同时看到相同的数据)或可用性(每个请求都会收到响应)。在分区或数据存储实例故障期间,您必须以一种换另一种。

Should I be ensuring that a given user is always directed to same the datastore instance?



理想情况下,你不应该!当给定的实例失败时你会怎么做?分布式数据存储的一个主要特性是在出现网络或实例故障时仍然可用。

If a user in a given session is always directed to the same couch node, won't my consistency issues revolve mostly around "shared" user data and thus be greatly simplified?



你是对的,这样架构会简单得多,但同样,如果该实例失败,你会怎么做?大量的工程工作已经投入到分布式系统中,以允许多个实例回复一个查询。我不确定 CouchDB,但 Cassandra 允许您选择一致性模型,您必须权衡可用性以获得更高程度的一致性。默认情况下,客户端配置为以循环方式请求服务器,从而分配负载。

我建议您阅读 Dynamo paper .作者描述了分布式数据库背后的许多工程细节。

关于web - 当使用最终一致的数据存储时,用户是否应该被定向到特定的数据节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29563334/

相关文章:

go - 如何在 golang 中使用 couch db 查询限制

java - 搜索多个 solr 核心的最佳方式

redis - 每 "x"秒递减一个 Redis 计数器

java - CORBA:服务器作为客户端

java - 在我的计算机上安装虚拟 LDAP 服务器 (Windows 2010)

api - 如果客户端 IP 白名单,我是否仍应使用 API key

vue.js - 使用Vue CLI3.0创建多页应用程序,如何处理此错误?

Python 2.7 从登录网站抓取网页

apache - CouchDB 代理? Apache 作为反向代理?

sql-server-2008 - 并排使用 couch db 和 sql server