【问题标题】:Using timeout in P2P architecture在 P2P 架构中使用超时
【发布时间】:2011-04-07 09:13:59
【问题描述】:

我正在使用 Java 编写 P2P 应用程序。更具体地说,我正在使用 RMI 来实现类似于节点间通信系统的令牌环 为了实现容错系统,我需要检测节点的崩溃。环中的每个节点都必须等待令牌 X 秒。在此时间之后,节点必须唤醒并执行一些操作(例如,它可以拉取令牌)。我可以使用哪种方法来实现每个节点的超时?

提前致谢!!

【问题讨论】:

    标签: java timeout rmi p2p token


    【解决方案1】:

    这是 P2P 系统中的经典问题。简短的回答是:如果您在选择的延迟后没有从远程对等方得到答案,您必须假设它无法访问(并冒着出错的风险)。

    这并不一定意味着远程对等方离线或崩溃,它可能只是意味着有人在深海中切断了电缆并且没有替代方法可以穿越海洋,或者任何替代通道过载并且无法满足您的带宽/连接请求。

    最根本的问题是,当您发现远程对等点出现问题时(例如,有人切断了电缆还是对等点真的崩溃了?),无论如何您都无法确定连接发生了什么你努力吧。

    【讨论】:

    • 嗨!感谢你的回答!我完全同意你的看法。问题是节点正在等待令牌正在等待其他一些节点调用他的远程方法“passToken”。所以,我的问题是:Java 中在选定的延迟后执行操作的最佳方法是什么?我知道 Timer 类,但我更喜欢避免使用线程。
    • @Davide 有一个名为 Quartz-scheduler 的库用于复杂的作业,但您可以从 java.util.concurrent 包中的 ScheduledExecutorService 之类的更简单的东西开始。它允许您在延迟后提交要执行的作业。
    • 谢谢!我会尝试应用您的解决方案!
    • 有趣的是,您实际上是在您的评论中回答了 OP 的问题,而不是在您的回答中。但是 +1 对于这个有趣的发展。
    猜你喜欢
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多