• 中间件集群的协议和算法的类语言描述


    提供DELPHI中间件和中间件集群,有意请联系。

    中间件集群的三种角色:客户端(简称C)、代理服务器(简称A)、中间件(简称M)。

    以下文字均使用简称。

    说明:C和M可能有多个,M在一台机器上可以开多个,多个M可以使用同一个IP地址,但必须绑定不同的端口号。

    中间件集群需要定义私有协议。

    M和A之间的交互协议:

    M每隔一秒钟发送一次心跳包给A,A收到后发送一个应答数据包给M。

    M发给A的数据包格式类似:

    TMiddleHeartBeat = packed record
      Head: byte;        // 包头的命令字
      IP: array[0..14] of char;  // 中间件的IP地址
      Port: Word;        // 中间件的端口号

      Clients: word;       // 中间件的负载数量
    end;

    如上所示,M每隔一秒钟发送自己的IP地址、端口号以及当前的负载数量给A,使A能够即时地知道M的状态。

    A对M的应答数据包类似:

    TMiddleHeartBeat_Resp = packed record
      Head: byte;    // 包头的命令字
      Status: Byte;   // 状态,status=0,返回正确;status=其它,返回其它状态 
    end;

    C和A之间的交互协议:

    C必须向A申请以获得提供服务的M(C不能直连某个M),C发送给A请求提供服务器中间件的数据包类似:

    TClientNeedMiddle = packed record
      Head: byte;  // 包头的命令字
    end;

    A对C的应答数据包类似:

    TClientNeedMiddle_Resp = packed record
      Head: byte;        // 包头的命令字
      Status: Byte;       // 状态,status=0,返回正确;status=其它,返回其它状态     
      IP: array[0..14] of char;   // 提供服务的中间件的IP地址
      Port: Word;         // 提供服务的中间件的端口号
    end;

    C开始连接A返回来的中间件。

    A对M的负载均衡算法:

    1)随机算法,A随机选择一个活动的M;

    2)负载数最少的优先算法,负载数是M发送给A的心跳包中提供的。

    当然还有其它的负载均衡算法,此处略。

  • 相关阅读:
    xunjian.sh
    192.168.50.235配置
    自动备份并删除旧日志
    bg和fg命令
    linux之sed用法
    正则表示第二行,第二列
    linux下redis安装
    Hma梳理
    linux 系统监控、诊断工具之 lsof 用法简介
    java的基本数据类型有八种
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/3904699.html
Copyright © 2020-2023  润新知