开发者学堂课程【精通 Spring Cloud Alibaba:纯手写本地负载均衡器轮训算法】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/634/detail/10071
纯手写本地负载均衡器轮训算法
目录:
一、Rpc远程调用设计到本地负载均衡算法。
二、运行
一、Rpc 远程调用设计到本地负载均衡算法。
1. 从注册中心获取服务集群的列表。
2.从列表选择一个 负载均衡算法有那些:
A.一致性 hash 计算。
B.轮训、权重.
C.随机
采用什么设计模式:策略模式
假设我们两台服务器集群,访问次数集群 size
1%2=1.
2%2=0.
3%2=1.
4%2=0.
1%1=0,
二、运行
import org.springframework.cloud.client.ServiceInstance;
import java.util.List;
@author 蚂蚁课堂创始人-余胜军QQ644064779
米@title:RotationLoadBalancer
@description:每特教育独创第五期互联网架构课程
@date 2020/1/722:08
public class RotationLoadBalancer implements LoadBalancer
private AtomicInteger atomicInteger = new AtomicInteger(initialValue:0);
@Override
public ServiceInstance getSingleAddres(List<ServiceInstance> serviceInstances)
int index = atomicInteger.incrementAndGet()% serviceInstances.size();
return serviceInstances.get(index);
@RestController
public class OrderService
@Autowired
private DiscoveryClient discoveryClient; @Autowired
private RestTemplate restTemplate; @Autowired
private LoadBalancer loadBalancer;
订单服务调用到我们的会员服务接口
@return
@RequestMapping("/orderToMember")
public Object orderToMember()(
// 1.根据服务名称从 注册中心获取集群列表地址
List<ServiceInstance>instances=
discoveryClient.getInstances( serviceld:"meitemayikt-member");
// 2.列表任意选择一个 实现本地 rpc 调用 rest 采用我们负载均衡的算法
ServiceInstance srviceInstance = loadBalancer.get
SingleAddres(instances);
URI rpcMemberUrl = srviceInstance.getUri();String result = restTemplate.getForObject(url:rpcMemberUrl +"/getUser", String.class);
return
"订单调用会员返回结果:"+result;