我正在编写一个基于TodoMVC angularjs(http://todomvc.com/)的示例项目和一个带有Google App Engine Cloud Endpoint的后端api,我在从App Engine数据存储区获取todos监听时有一些一致性结果.
Todo对象使用objectify存储在App Engine数据存储区中.
Todo实体的编码如下:
@Entity
public class Todo {
@Id
private Long id;
private String title;
private boolean completed;
private Date lastEdit;
@Index
private Long userId;
public Todo() {
}
public Todo(String title, boolean completed) {
this.title = title;
this.completed = completed;
}
public Todo(Long id, String title, boolean completed) {
this.id = id;
this.title = title;
this.completed = completed;
}
public Long getId() {
return id;
}
public void setId(Long id) …Run Code Online (Sandbox Code Playgroud) google-app-engine consistency objectify google-cloud-endpoints
来自Firebase的常见问题解答:
如果丢失网络连接,我的应用会发生什么?
一旦重新获得连接,Firebase就会透明地重新连接到Firebase服务器.与此同时,您的应用在本地完成的所有Firebase操作都会立即触发事件(...).重新建立连接后,您将收到相应的一组事件,以便您的客户端"赶上"当前服务器状态
然后,如果我离线并继续修改本地数据,然后返回在线并且其他客户端执行了不同的更改,会发生什么?最终会保存哪一个?
如果服务器上的数据被覆盖,是否意味着旧数据可以替换较新的数据?
如果保留在线添加的新数据,我是否知道离线时提交的数据已被丢弃?
假设我有一个 mongoDB 数据库,我在其中创建了一个属于用户的文档,其中文档和用户都存储在数据库中。
让我们进一步说用户对象包含对文档的引用。
创建一个新文档可能看起来像这样。
exports.create = function (req, res, next) {
//make a new document
var newDoc = new Document({
title: req.body.title,
content: req.body.content,
});
User.findById(req.user._id, function (err, user) {
if (err)
return res.send(400);
user.documents.push(newDocument._id);
user.save(function(err){
if (err)
return res.json(400, err);
newDoc.save(function(err) {
if (err)
return res.json(400, err); //<--- What if you have an error here??
return res.json(200, {document:'successfully created'});
});
});
});
};
Run Code Online (Sandbox Code Playgroud)
如果您在最后一个 if(err) 出现错误,您将向用户添加对新文档的引用,但不会创建该文档。
当然,这是一个非常简单的案例。大量相互引用的文档可能会变得更加复杂。在 Mongo/Mongoose 中处理这个最干净的方法是什么?
可以说我已经创建了一个键空间和表:
CREATE KEYSPACE IF NOT EXISTS keyspace_rep_0
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 0};
CREATE TABLE IF NOT EXISTS some_table (
some_key ascii,
some_data ascii,
PRIMARY KEY (some_key)
);
Run Code Online (Sandbox Code Playgroud)
我不想要这些数据的任何副本.我可以使用一致性级别插入此表ANY.但是我无法从该表中选择任何数据.
与一致性水平查询时,我得到了下面的错误ANY,并ONE分别为:
message="ANY ConsistencyLevel is only supported for writes"
message="Cannot achieve consistency level ONE"
info={'required_replicas': 1, 'alive_replicas': 0, 'consistency': 1}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了其他读取一致性级别,但它们都没有为我工作.
这与选择'replication_factor': 1和关闭节点非常相似.我再次无法选择任何数据.所有读取一致性级别至少需要一个副本才能启动.这是卡桑德拉的作品吗?没有复制,您无法选择数据?我错过了什么?
我想知道如何解决聚合之间的事务一致性问题.我的第一印象是,无论何时需要聚合之间的事务一致性,您都错误地设计了聚合.但是,我仍然想问这个问题,以确保我没有遗漏任何东西.
想象一下,你卖牛奶.你有多头奶牛,每头奶牛每天产一定量的牛奶.您需要一项能够获得库存牛奶量的服务.除此之外,您还应该能够订购牛奶.根据此信息,您可以创建三个聚合Cow,Stock和Order.每当订购一定数量的牛奶时,其中一个业务规则是检查该金额是否有库存,如果没有,请立即告知用户.当两个用户同时发出请求并订购总量为150升的牛奶时,如何才能实现这一目标,而只有130升可用?我的第一个想法是你可以通过乐观/悲观锁定实现这一点,但在这种情况下,一个聚合依赖于另一个.是否有某种方法可以解决这个特定的问题,或者这只是糟糕的聚合设计?
顺序一致性
任何执行的结果都是一样的,就好像所有处理器的操作都是按某种顺序执行的,每个处理器的操作都按照其程序指定的顺序出现在这个序列中。
我是分布式系统的新手,在这种情况下执行是什么意思,请以简单的方式解释这个定义?
我正在使用LEON2处理器(Sparc V8)开展项目.处理器使用8M字节的RAM,需要在引导自检期间进行一致性检查.我的问题是我的Boot显然使用了一小部分RAM作为其Heap/BSS/Stack,我无法修改而不会崩溃我的应用程序.我的RAM测试非常简单,向所有RAM地址写入一定值然后将其读回以确保RAM芯片可以被寻址.
此方法可用于大多数可用的RAM,但我怎样才能安全地检查剩余RAM的一致性?
标题说明了一切,我正在寻找一些最好的东西,因为我不想添加更多的库.
性能应该很好,因为我需要一个紧凑的高性能循环.我想这将以随机程度为代价.
我试图使用mysqldbcompare实用程序比较两个本地数据库.检查始终显示数据库一致性检查失败.我试过检查和修理命令.但无济于事.
我使用了以下代码并得到了
C:\Program Files\MySQL\MySQL Workbench CE 5.2.47\utilities>mysqldbcompare --s
erver1=root@localhost --server2=root@localhost ebookshop:ebookpub --run-all-tests
# server1 on localhost: ... connected.
# server2 on localhost: ... connected.
# Checking databases ebookshop on server1 and ebookpub on server2
#
# Object definitions differ. (--changes-for=server1)
#
--- ebookshop
+++ ebookpub
@@ -1,1 +1,1 @@
-CREATE DATABASE `ebookshop` /*!40100 DEFAULT CHARACTER SET latin1 */
+CREATE DATABASE `ebookpub` /*!40100 DEFAULT CHARACTER SET latin1 */
# WARNING: Objects in server1.ebookshop but not in server1.ebookpub:
# TABLE: books
# …Run Code Online (Sandbox Code Playgroud) 我正在阅读"多处理器编程的艺术".现在,我被困在第三章,因为不理解静态一致性的概念.你能举个例子来说明什么是静态一致性吗?请尽可能清楚!
consistency ×10
c ×1
c++ ×1
cassandra ×1
concurrency ×1
distributed ×1
embedded ×1
firebase ×1
heap ×1
mongodb ×1
mongoose ×1
mysql ×1
objectify ×1
portability ×1
random ×1
replication ×1
sequential ×1
stack ×1
testing ×1