标签: eventual-consistency

ZooKeeper在CAP定理方面总是一致吗?

ZooKeeper总是CP(就CAP定理而言)是否正确?或者无论如何使用它作为服务发现需求的AP?

service-discovery eventual-consistency cap-theorem apache-zookeeper

11
推荐指数
2
解决办法
2767
查看次数

Are DynamoDB Updates strongly consistent?

The whole reason why DynamoDB is fast and scalable is based on the fact that it is eventually consistent. But at the same time, it comes with this ConsistentRead option for operations like get, batchGet, and query which helps you make sure that the data you are reading is the latest one.

My question is about the update operation. First of all, it does not have the ConsistentRead option (one reason would be, update is not a read!). …

consistency eventual-consistency amazon-web-services amazon-dynamodb

11
推荐指数
1
解决办法
3027
查看次数

Cassandra最终一致性的含义?

当单个集群中的节点不包含相同数据的副本但数据在节点之间分布时,Cassandra中的最终一致性是什么意思.现在,因为在一个地方(节点)记录了一个数据.为什么Cassandra不会从那个单一的记录中返回最近的价值?在这种情况下如何产生多个副本?

database eventual-consistency cassandra nosql

10
推荐指数
2
解决办法
9279
查看次数

GAE HDR:按键的实体检索最终是否在XG事务中保持一致?

考虑"使用事务"中的第二个示例("使用命名密钥更新实体,或者如果它尚不存在则创建它"):

https://developers.google.com/appengine/docs/java/datastore/transactions

现在考虑这种情况.多人游戏只允许任意两个玩家之间的单一匹配.为了确保这一点,使用每个玩家的键创建一个键.此键用作UniqueMatch实体的键.

因此,为了创建匹配,将创建XG事务.在此交易中:

  1. 我们检查是否已经存在具有该密钥的UniqueMatch实体.如果使用该键的datastore.get()调用没有抛出EntityNotFoundException,那么我们知道这两个玩家之间的匹配已经存在,所以我们回滚()并向玩家显示错误消息.

  2. 我们将()所有需要放入的实体放入以创建匹配项.这包括UniqueMatch实体以及其他一些实体.

  3. 然后提交事务.

这似乎工作正常.但是,我注意到我可以在短时间内在任意两个玩家之间创建两场比赛.在一小段时间内(实际上其中一个测试中最多10-20秒),我对datastore.get(key)的调用抛出了EntityNotFoundException,即使该键已经被put().

这似乎是最终的一致性.但是,关键的实体回顾不是保证强烈一致吗?此保证是否受到在XG交易中完成的事实的影响?

提前致谢,

java google-app-engine transactions eventual-consistency google-cloud-datastore

10
推荐指数
1
解决办法
253
查看次数

在Quorum的一致性级别阅读Cassandra的操作?

我正在阅读有关Cassandra中读取操作和一致性级别的这篇文章.根据这篇文章:

例如,在复制因子为3且读取一致性级别为QUORUM的群集中,将联系给定行的3个副本中的2个以完成读取请求.假设联系的副本具有不同版本的行,具有最新版本的副本将返回所请求的数据.在后台,检查第三个副本与前两个副本的一致性,如果需要,最新副本会向过期副本发出写入.

因此,即使使用Quorum的一致性级别,也不能保证您没有得到过时的读取.根据上面的段落,如果第三个副本具有最新的时间戳,则协同协调器已经返回了它所询问的两个副本的最新时间戳.但它不是最新的,因为第三个副本有最新的时间戳.

eventual-consistency cassandra-2.0

10
推荐指数
1
解决办法
7991
查看次数

与数据库和消息队列记录的最终一致性

我有一个应用程序,我需要将一些数据存储在数据库(例如mysql)中,然后在消息队列中发布一些数据.我的问题是:如果应用程序在数据库中存储后崩溃,我的数据将永远不会写入消息队列然后丢失(因此我的系统的最终一致性将无法保证).我怎么解决这个问题 ?

database domain-driven-design message-queue eventual-consistency microservices

10
推荐指数
2
解决办法
1226
查看次数

在Cassandra中读取您自己的写入一致性

从所谓的最终一致性来看,你自己写的一致性是一个很大的改进:如果我改变了我的个人资料图片,我不在乎别人是否会在一分钟之后看到这个变化,但是如果页面重新加载之后看起来很奇怪我仍然看到旧的.

这可以在Cassandra中实现,而无需在多个节点上进行完整的读取检查吗?

ConsistencyLevel.QUORUM在读取未指定的数据时使用正常,实际上正在读取n> 1个节点.但是,当客户端在写入时从同一节点读取(并且实际使用相同的连接)时,这可能是浪费的 - 在这种情况下,某些数据库将始终确保返回先前写入的(my)数据,而不是某些较旧的数据.使用ConsistencyLevel.ONE不能保证这一点,并假设它会导致竞争条件.一些测试表明:http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/per-connection-quot-read-after-my-write-quot-consistency-td6018377.html

我对此场景的假设设置是2个节点,复制因子2,读取级别1,写入级别1.这导致最终的一致性,但我希望在读取时读取您自己的写入一致性.

在我看来,使用3个节点,RF = 3,RL =仲裁和WL =仲裁会导致浪费的读取请求,如果我对"我的"数据保持一致就足够了.

// seo:也称为:会话一致性,read-after-my-write一致性

consistency eventual-consistency cassandra

9
推荐指数
1
解决办法
4874
查看次数

在Mongodb中读取您自己的写入一致性

首先,这是Pymongo文档中的内容

默认情况下,当线程首次在MongoDB上运行操作时,PyMongo会为每个线程启动一个请求.这保证了**读写一致性.在请求中,线程将继续独占使用相同的套接字,并且没有其他线程将使用此套接字,直到线程调用end_request()或它终止.此时,套接字将返回到连接池以供其他线程使用.

所以当对Mongodb使用异步库(比如Asyncmongo,Motor)时,用户是否会像阻塞调用或最终一致性那样具有一致性?

asynchronous tornado eventual-consistency mongodb pymongo

9
推荐指数
1
解决办法
4459
查看次数

寻找所有节点都可读/写的分布式/可扩展数据库解决方案?不是MongoDB?

我希望实现一个可以在地理上广泛分布的数据库,这样每个节点都可以读取/写入,并最终与所有其他节点保持一致.我应该在哪里看?

我认为MongoDB在出现这种担忧之前似乎是其他原因的不错选择.显然所有MongoDB节点都是可读的,但只有主节点是可写的?反正有没有绕过这个?我不能允许单点失败写入数据库.

database distributed scalability eventual-consistency mongodb

8
推荐指数
1
解决办法
7208
查看次数

如何在NoSQL中维护非规范化的一致性?

假设我有两个集合,每个集合的值彼此独立,但每个集合彼此相关.他们是photosusers.用户和照片之间存在一对多的关系.

非规范化数据的一个例子:

users:
{
  "id": "AABC",
  "name": "Donna Smith"
}

photos:
{
  "id": "FAD4",
  "description": "cute dog",
  "user_id": "AABC",  // This is the relationship
  "user_name": "Donna Smith"  // This is the denormalized value from the "users" collection
}
Run Code Online (Sandbox Code Playgroud)

photos当用户"AABC"将名称从"Donna Smith"更改为"Donna Chang"时,如何确保与集合中的文档保持一致?

作为非交易性的,我理解一致性将是最终的.

在更改用户"AABC"以更新user_id ="AABC"的所有照片后,简单(天真)实现可能会触发后台作业.在单次更新的情况下,这将很好.但这是一个多用户环境,并且会同时在各个方向上进行更新.例如,如果在照片的背景更新中途将"Donna Smith"更改为"Donna Chang",用户"AABC"的名称将更改为"Donna Smith"?

在线搜索,我看到很多关于如何建模非规范化数据的讨论.但是关于如何维护它的任何讨论似乎都被轻视为"你还需要更新所有相关记录".在这种情况下,是否有任何NoSQL系统为您提供繁重的工作?任何框架或实用程序?

我已经阅读了Thomas Wanschik关于"物化视图"主题的精彩博客文章以及这个场景的背景更新.但我担心:

  1. 后台作业必须延迟一个大于更新允许的最大时间的预定量(如何确定延迟?如果操作需要更长时间?),和;
  2. 这是我发现实际解决方案的唯一讨论.NoSQL是一个大问题,为什么我没有看到更多关于此的讨论?我错过了什么?

eventual-consistency nosql denormalized

8
推荐指数
1
解决办法
651
查看次数