前言
在日常的项目中,负载均衡基本上都是采用默认的loadBalance,今天便根据源码,手写轮询算法去实现负载均衡。
先上loadBalance源码:
new AtomicInteger (0) 便于后面原子操作
reachableServers 表示有心跳的服务,即在注册中心正常的服务。
allServers 表示所有的服务。
nextServerIndex: 通过自旋获取实际请求服务的下标
server:实际调用的服务
自旋锁实现CAS,获取请求次数,用于服务集合下标
改造,手撸代码实现轮询:
新增接口:
实现类
order80服务controller:
payment8001服务:
payment8002服务与8001一致,提供接口:
调用结果
轮询算法:
rest接口第几次请求数 % 服务器集群总数量 = 实际调用服务器位置下标。
项目源码地址:https://gitee.com/javaeelhb/cloud2021/tree/haibo.li/