中间件集群的协议和算法的类语言描述
提供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的心跳包中提供的。
当然还有其它的负载均衡算法,此处略。
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/3904699.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?