问题标签 [cap-theorem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
akka - 在特定时间可靠地处理消息
假设我有一个聊天应用程序。
客户端向聊天室发送消息,从而向某个 Actor 发出一些命令。现在,我想立即处理他写的内容,并在此聊天中提供给其他用户,所以我处理了这个命令。同时我想告诉自己(一个演员),我需要将此消息存储在聊天历史数据库中,但不是现在。保存到数据库应该每 2 分钟发生一次。如果发生崩溃,我应该能够坚持到数据库。
我假设工作流程是这样的:
- 用户发送消息
- 聊天室参与者收到带有此消息的命令
- 我们将这条消息广播给每个人,并将这条消息添加到某种队列中,以将其保存到聊天历史数据库中
- 一些持久命令在 2 分钟超时后运行。它按照到达的顺序收集所有尚未持久化的传入聊天消息
- 对所有消息运行事务,然后将它们从队列中删除。
- 如果在 3 之后某处发生崩溃并且消息没有持久化,那么我应该尝试再次持久化它们。如果他们被坚持,我不应该再尝试坚持他们。
如何在 Akka 中构建这样的东西?我应该使用哪些功能/哪些模式?
hadoop - Hadoop 的 HDFS 高可用性特性如何影响 CAP 定理?
根据我目前所读到的关于 CAP 定理的所有内容,没有一个分布式系统可以同时提供以下三个方面:可用性、一致性和分区容错性。
现在,Hadoop 2.x 引入了一项新功能,可以对其进行配置以消除 hadoop 集群所具有的单点故障(单个名称节点)。这样,集群就变得高度可用、一致且具有分区容错性。我对吗?还是我错过了什么?根据 CAP 的说法,如果系统试图提供所有这三个功能,它应该为延迟付出代价,新功能是否会将这种延迟添加到集群中?还是 Hadoop 破解了 CAP 定理?
rdbms - 为什么 RDBMS 被认为适用于 CAP 定理 (CA)
如果我正确理解了 CAP 定理,可用性意味着即使节点出现故障,集群也会继续运行。
我见过很多人(http://blog.nahurst.com/tag/guide)将RDBMS列为CA,但我不明白RBDMS是如何可用的,好像一个节点宕机,集群必须宕机保持一致性。
我对此唯一可能的答案是大多数 RDBMS 都是单个节点,因此没有“非故障”节点。但是,这似乎是一个技术问题,而不是真正的“可用性”,也绝对不是高可用性。
谢谢你。
distributed-computing - 为什么 CP 系统也不能是 CAP?
我对CAP 缩写的理解如下:
- 一致:每次读取都会获得最近的写入
- A vailable:每个节点都可用
- Partion Tolerant:当节点之间的网络连接断开时,系统可以继续维护 A 和 C 承诺
假设我的理解或多或少处于正轨,那么有些事情困扰着我。
AFAIK,可用性是通过以下任何技术实现的:
- 负载均衡
- 复制到灾难恢复系统
因此,如果我有一个我已经知道是 CP 的系统,为什么我不能通过应用这些技术之一使其也可用来“使其成为完整的 CAP ”?我确定我在这里遗漏了一些重要的东西,只是不确定是什么。
clojure - Zookeeper Watches 系统是否存在错误,或者这是 CAP 定理的限制?
Zookeeper Watches文档指出:
“客户端将在看到与该 znode 对应的新数据之前看到它正在观察的 znode 的观察事件。” 此外,“因为 watch 是一次性触发器,并且在获取事件和发送新请求以获取 watch 之间存在延迟,因此您无法可靠地看到 ZooKeeper 中节点发生的每一个变化。”
关键是,不能保证您会收到观看通知。
这很重要,因为在像 Clojure 的Avout这样的系统中,您正在尝试使用Zookeeper在网络上模仿 Clojure 的软件事务内存。这依赖于每次更改都有一个监视通知。
现在我正在尝试确定这是一个编码缺陷,还是一个基本的计算机科学问题,(即CAP 定理)。
我的问题是:Zookeeper Watches 系统是否存在错误,或者这是 CAP 定理的限制?
marklogic - Marklogic 如何具有一致性和可用性?
CAP 定理对我来说似乎是合乎逻辑的。我明白那个:
如果我在分布式系统上具有一致性,我必须等待所有事务。ACID 的成本是在所有网络上复制数据的时间。
但是 Marklogic 怎么能两者兼得。ACID 和分布式系统没有延迟?
那么是否可以在同一个数据库上拥有 BASE 和 ACID 属性?
那么CAP定理错了吗?
dropbox - 为 Dropbox.com 应用 CAP 定理
根据CAP 定理的定义,任何分布式系统只能满足两个条件。从逻辑上思考,我觉得像 Dropbox 这样的云服务一次就能满足 C,P。C 这样即使您更新了一个节点中的数据,数据也会立即复制到另一个节点。
正确答案是 P,A(分区容差和可用性)。现在云服务可以同时兼具 P&A 功能吗?
对此有何见解?谢谢 :)
sql - Azure SQL 数据库牺牲了 CAP 定理的哪一部分,为什么?
它必须是一致的,因为它是一个 SQL 分布;它具有分区容错性,因为它存储在云中并且具有高可用性。那么它究竟牺牲了什么?