【问题标题】:RMI client trackingRMI 客户跟踪
【发布时间】:2011-03-19 16:07:21
【问题描述】:

我正在构建一个具有一些非常特殊需求的客户端/服务器应用程序。有两种服务器:第一种提供大部分远程过程,客户端直接连接到这些,而第二种是单个服务器,应该跟踪哪些用户是活动的(客户端)以及第一种服务器的数量kind 在调用方法时处于活动状态。

主要是监视器应该只连接到服务器而不是直接连接到客户端。我的第一个想法是在客户端连接/断开连接时实现一个简单的登录/注销 rmi 方法并跟踪列表中的那些,但主要问题是客户端或服务器异常结束时。

例如,如果客户端突然脱机,则应以某种方式通知服务器并相应地更新列表,而如果服务器中断,则与其连接的所有客户端都应在控制服务器中标记为未激活。

任何关于如何实现此功能的想法都将不胜感激。

【问题讨论】:

    标签: java rmi


    【解决方案1】:

    我建议对问题实施“会话”方法,其中服务器和客户端每隔几分钟(可能是几秒钟或几小时,具体取决于您的需要)向监控服务器发送一次“心跳”方法调用。如果监控服务器在一定时间内没有收到服务器或客户端的“心跳”,则认为它们已消失(异常终止)并相应通知。

    【讨论】:

    • 嗯,是的,这应该可以很好地工作。我猜的 heartbeat 方法只是一个不时被调用的方法,所以在一个单独的线程中运行它应该对用户隐藏。
    【解决方案2】:

    Zookeeper 可能值得一看。让每个客户端服务器为自己以及连接到它的每个客户端注册一个临时节点。当客户端服务器宕机时,临时节点将死亡。监控服务器只需要监视 Zookeeper 以查看谁已启动并连接。

    为了检测客户端宕机,您需要某种心跳,以便客户端服务器可以检测到客户端何时死亡。如果客户端可以直接与zookeeper对话,那么只需让客户端在zookeeper中注册一个临时节点,客户端服务器就可以监视客户端的临时节点,并知道客户端何时关闭。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      相关资源
      最近更新 更多