问题标签 [distributed-algorithm]

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.

0 投票
3 回答
743 浏览

c++ - 分布式算法编程的帮助库?

当您编写分布式算法时,您是否使用任何库来对处理器、寄存器、消息、链接等抽象事物进行建模?有没有这样做的图书馆?

我正在考虑例如自稳定算法,例如自稳定最小生成树算法。

0 投票
2 回答
4282 浏览

algorithm - 开源的基于八卦的会员协议?

我正在寻找一个可以插入到分布式应用程序中的库,该应用程序实现任何基于 gossip 的成员协议。

这样的库将允许我发送/接收成员列表,合并收到的成员列表等......如果库实现具有性能 O(logn) 性能保证的协议,那就更好了。

有谁知道这样的开源库?它不需要满足上述所有要求;即使是部分实施的东西也会有所帮助。

0 投票
1 回答
709 浏览

distributed-system - 查看更改算法和paxos

我想知道视图更改算法和Paxos之间有什么关系?在我的讲义中,它指出“每个视图的参与者都同意主要的,然后再控制复制过程”。在这种情况下的观点是什么? Paxos 与此有何关联?

0 投票
1 回答
3783 浏览

protocols - 为什么反熵协议中会出现“熵”这个词?

反熵协议是八卦协议的一种形式。http://en.wikipedia.org/wiki/Gossip_protocol。我想知道是否有人可以解释一下熵在这里的意义。

0 投票
1 回答
53 浏览

sql - 数据库之间的安全价值转移

我做了一些搜索,但找不到合适的搜索词。

有两个完全分开但受信任的数据库。它们的连接不可靠(但安全)。两个数据库都在不同的服务器上运行,并有一定的服务器故障概率。

两个数据库都是用钱运作的,需要将一些金额从一个账户(数据库#1,服务器#1)“转移”到另一个账户(数据库#2,服务器#2)。

这应该以永远不会导致“损失金钱”或“重复金钱”的方式完成,即使两个服务器都崩溃并在最坏的时刻恢复。

我认为应该有一个通用算法。

0 投票
2 回答
89 浏览

c++ - 在单机上模拟经典分布式计算模型的环境

我正在寻找一种工具来模拟单台机器上的经典分布式计算模型,以实现我正在研究的论文中的几种算法。因此,性能并不那么重要,它只适用于科学应用。

我希望有可能指定进程的数量和它们之间的通信链接。换句话说,我想定义网络图结构。

计算应该是异步的和消息驱动的,即我想在连接的进程之间发送消息并对这些消息做出反应。

是否有任何用于此类计算的库或框架?越简单越好。语言并不重要,但我更喜欢 Python 或 C++。我已经看过Celery,但我没有发现有可能指定进程之间的连接。

0 投票
1 回答
81 浏览

time - 当今的流程同步是否有最先进的方式?

在过去的几天里,我不得不为大学处理定时进程同步的分布式算法。我的主要练习是从 1978 年开始关注 Leslie Lamport 的算法(事件的部分排序/总排序)以及从 1988 年开始 F. Mattern 和 CJ Fidge 的向量时间概念。

在这三个人的想法中,我发现在分布式系统中使用他们的算法有很多优点和缺点。但是我想知道并且没有发现对于当今分布式系统中的定时进程同步是否存在“最先进的”算法。

今天如何处理这个问题?

0 投票
3 回答
10458 浏览

java - 在单台机器上同步启动 2 个 hazelcast 实例(hazelcast.initial.min.cluster.size=2)

如何配置 Hazelcast(最好是我当前使用的版本:3.1.2)以在一台机器上运行 2 个 hazelcast 实例,并在启动期间阻止第一个实例,直到两个实例都存在?

hazelcast.initial.min.cluster.size

上面描述的阻塞行为可以hazelcast.initial.min.cluster.size在不同机器上运行两个实例的帮助下实现: 使用配置:

在不同的机器上运行,我得到输出

但是在一台机器上运行两个实例,我得到

最后一条 INFO 消息无限重复。

那么集群大小是集群中节点的数量,而不是hazelcast实例的数量?

单台机器上的阻塞行为

我使用cfg.setProperty("hazelcast.initial.min.cluster.size","2")两个分布式实例同步启动我的分布式算法。此外,它解决了一些 hazelcast 成员找不到的问题,请参阅https://stackoverflow.com/a/20716919/750378

那么在单机上运行时如何避免这两个问题呢?如果集群大小只是运行 hazelcast 实例的数量,那就太好了。然后,无论我如何部署我的两个实例(在 1 或 2 台机器上),我都可以保持我的配置。

更新

我在https://github.com/hazelcast/hazelcast/issues/2292发布了一个关于集群大小的问题。

0 投票
2 回答
604 浏览

java - 这个算法在 Java 中执行有什么问题?

考虑以下树:

树

我想要做的是模拟树波算法,这样如果一个节点从除一个直接连接的邻居之外的所有节点接收到一个令牌,它就会向那个沉默的邻居发送一个令牌(对于叶节点总是如此)。如果一个节点从沉默的邻居那里收到一个令牌,就会做出决定。节点总是 7,树结构相同,所以我总是知道每个节点的邻居(直接连接的节点)。

树算法伪代码:

树算法

我有以下对象:

在 run() 方法内部有一个 while(condition) 实际上意味着.. 等待(从邻居接收令牌),当只有一个邻居节点没有收到令牌时,向他发送令牌。

这就是我创建节点以及相互关联的方式:

我所做的是随机选择要执行的节点顺序:

因此,例如节点可以按任何顺序排列:

然后我启动线程:

有时我会得到预期的结果(2 必须决定):

但通常我得到一个错误,只有一个决定:

是的,这是一个作业,我真的很接近这些人..但我正面临这个问题。

0 投票
2 回答
435 浏览

algorithm - 只有一个节点的图的直径是多少?

我试图在我的分布式算法课程中找到问题的答案,为此我想澄清一些事情。

  1. 具有一个节点且自身有一条边的图的直径是多少?是 1 还是 0?

如果您有兴趣,我试图找到答案的问题是:

就 n(# 个节点)而言,FloodMax 算法中使用的消息数(= diam * |E|)很容易看出是 O(n^3)。产生一类有向图,其中乘积 (diam * |E|) 确实是 Omega(n^3)。

我想出的有向图是一个只有一个节点的图,它本身有一条有向边。那样|E| 将是 1 ,即 n^2,如果 diam 是 1,它也满足第二个条件,即 diam = 1 = n 。所以它给了我一类消息复杂度为 Omega(n^3) 的有向图。

那么我的想法是否正确,在这样的图中,直径是 1?