问题标签 [bully-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 投票
2 回答
1439 浏览

algorithm - Bully 算法 - 检测失败

欺凌算法的描述通常不包括故障的实际检测。

我有一个欺负算法的工作实现,它使用选举本身来检测失败,而不是让失败触发选举。

简而言之,我的实现中的选举是按计划执行的,而不是在检测到故障时执行的。

显然,这意味着产生了网络流量,但它似乎是一个简单的解决方案,否则可能会变得复杂(例如,有一个单独的故障检测机制,它将有自己的网络流量)。

任何人都可以看到这个问题吗?

0 投票
1 回答
592 浏览

algorithm - 协调员首先做什么?

所以,我正在阅读Bully 算法和其他类似算法,这很容易,但有一点我不明白,为什么我们首先需要一个协调器?一旦他成为协调员,流程会做什么?任何真实世界的例子都会很棒,用 C 或 Java,或者只是文字。

0 投票
1 回答
457 浏览

windows - 进程间通信模拟欺凌算法

我不太了解进程间通信,但我想使用进程间通信来模拟欺负算法,经过搜索,我发现有使用 IPC 的机制

剪贴板 COM 数据复制 DDE 文件映射 邮槽 管道 RPC Windows 套接字

我不知道哪种机制最适合这种情况!

我会告诉你我的想法,但它可能是错误的:)

我排除了这些:

文件映射用于文件共享(这与我们的示例相去甚远) COM:用于复合文档(我们不想要) DDE:因为它通常由用户命令启动,并且不如新技术高效文件映射:因为有无法保证已收到数据报。ClipBoard :因为几乎总是用于对用户命令的一次性响应,例如从菜单中选择粘贴命令。

所以剩下的机制是:

数据复制

管道

RPC

WindowsSockets

所以这是在这些情况下使用的最佳机制

1)如果通信在同一台计算机上 2)不同计算机之间

0 投票
1 回答
508 浏览

failovercluster - What election algorithm does microsoft failover cluster use?

I cannot find anything about the algorithm it uses as primary node election algorithm.

http://msdn.microsoft.com/en-us/library/aa373130%28v=vs.85%29.aspx

Is it a bully algorithm, or ring algorithm, or some other algorithms?

0 投票
1 回答
179 浏览

distributed-system - 如果在欺凌算法中进行选举后失败的进程唤醒会发生什么

我目前正在学习分布式系统中用于协议的欺凌算法。我了解选举是如何进行的,但我有点困惑,例如如果进程 4 失败并且进程 2 开始选举并且进程 3 获胜并且在进程 3 宣布它是协调员之后如果进程 4 唤醒会发生什么?进程 3 是否继续担任协调员,还是会进行另一次选举,如果是,谁开始选举?提前谢谢你,如果我失去了这个长问题的人,我很抱歉

0 投票
1 回答
608 浏览

javascript - 有什么方法可以使用 node.js 在我的 Kubernetes 应用程序中选举领导者?

我正在尝试在我的分布式 node.js 应用程序中实现领导者选举算法。我使用 Kubernetes 作为容器管理器并部署 docker 容器。我没有在不同 pod 中运行的其他应用程序实例的主机和端口的详细信息。

Kubernetes 已经使用领导者选举算法一次选择一个领导者,但我的应用程序在容器和 pod 内,它不知道我是否是领导者。还有一个示例代码可用于了解谁是当前领导者。

https://github.com/kubernetes-retired/contrib/tree/master/election

此代码有助于了解哪个容器是领导者,但它需要一些特殊权限才能调用 kubernetes API。

Bully/Ring 算法可以是一个解决方案,但由于限制不使用任何队列/集中式服务,如 redis 或 zookeeper,因为我们需要另一个进程来运行这些,但我可以使用共享文件系统,因为它不需要监控一个额外的过程。

不确定是否可以在不运行新进程的情况下使用 redis/zookeeper 并且可以在应用程序本身内完成。

我如何使用该应用程序实现此解决方案,或者通过 ping 它们检查它是否已关闭,然后使自己掌握。在这个过程中也会出现很多竞争条件。

我尝试过Kubenetes的leader算法来选举leader,但是由于API的访问受限,无法使用。

尝试过 Bully 算法,但由于容器位于不同的 pod 中,它们彼此不知道。

尝试了 Ring algorithm ,但与 Bully 算法相同的问题。

我希望使用任何算法来实现领导者选举,但不引入任何新流程。

0 投票
0 回答
33 浏览

distributed-computing - 欺负算法举行选举

根据我对欺凌算法的理解,进程发送选举消息后,接收者会举行选举,除非它已经在举行选举。这对我来说似乎有些模棱两可,因为我不确定什么是举行选举。这是否意味着 a) 如果一个进程已经发送了一个选举并且收到了一个 ok 但还没有听说过获胜者,它仍然在举行选举,或者 b) 举行选举只是一个进程当前正在发送选举的时间到所有具有更高 ID 的进程。

当多个进程正在寻找领导者时,这具有不同的含义。