最近在做一些基础的网络开发,需要自行设计负载均衡方案。因为需要根据某个字段做会话保持,此处的做法是对这个字段做Hash,根据Hash值在服务列表数组中选择一个机器。
大致流程为:
1.client启动时在配置文件列表中列出所有server机器,启动后与所有server机器建立rpc连接,并保持一个1次/秒的心跳连接做健康检查。
2.将健康检查通过的机器按配置顺序放到注册发现列表中。
3.新的消息进来,根据目的ID进行Hash运算,根据算出来的hash值,从注册列表中拿到机器IP端口进行转发。
Hash运算借用Hutool工具类,
HashUtil.additiveHash(“被HASH的值”, 健康的机器数量);