zoukankan      html  css  js  c++  java
  • 网络编程中的心跳机制

    心跳机制

    在一些C/S结构、分布式程序中可以使用心跳来判断节点的存活状态。


    应用中的使用

    1. 从节点主动向主节点发送ping

      主节点回应pong,这也是一般的使用情况,如hadoop、spark那些系统。
    每个从节点上启动一个线程专门发送ping,采用定时器来定时检查是否应该发送下一次的ping以及上一次ping是否超时等。主节点上需要不断更新收到的来自从节点的ping的时间,用来判断是否超时。如果有N个从节点,1个主节点,则需要N+1个线程来发送信息,另外还要考虑如何接收。

    2. 主节点主动发送心跳

      主节点持有对从节点的连接的引用,可以使用两个队列来保存发送的时间等信息:

    1. 已发送ping的队列

    2. 待发送ping的队列

      每次在收到pong后将代表从节点的元素从队列1中移出,加入到队列2中。

      线程数也并不比上面的方式少。

    3. 超时

    有时候由于网络阻塞等原因造成心跳超时,这种情况需要考虑设置两个超时时间,一个较短,一个较长。当较长的时间内仍无响应,则可以判定为长久连接已断开,再进行重新连接或直接删除节点连接信息。

  • 相关阅读:
    10055
    国外程序员推荐:每个程序员都应该读的非编程书
    Volume 0. Getting Started
    如何成为一名 Google 软件工程师?【Google招聘信息】作者: 丁鑫哲
    毕设-家校通
    如何快速创建数据库连接字符串
    LeetCode day13
    LeetCode day12
    LeetCode day11
    LeetCode day10 Called it
  • 原文地址:https://www.cnblogs.com/makefile/p/heartbeat.html
Copyright © 2011-2022 走看看