开发者学堂课程【精通 Spring Cloud Alibaba:实现服务下线动态感知】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/634/detail/10072
实现服务下线动态感知
首先访问到 nacos 里面去,进入服务管理中的服务列表,member 是一个集群,详情有两个。
如果8081动态职业下线,原理是在其集合里面移除掉,运行结果只有:订单调用会员返回结果:每特教育|蚂蚁课堂,端口号为:8080。
如果两个同时上线,运行结果就会动态出现8080和8081,即订单调用会员返回结果:每特教育|蚂蚁课堂,端口号为:8080/8081。
实现算法如下:
@RequestMapping( " /orderToMember")
public object orderToMember() i
//1.根据服务名称从注册中心获取集群列表地址
List instances =
discoveryclient.getInstances( serviceId: "meitemayikt-membe
//2.列表任意选择一个 实现本地 rpc 调用 rest 采用我们负载均衡的算法
ServiceInstancesrviceInstance= loadBalancer.getSingleAddres(instances);
URI rpcMemberUrl = srviceInstance.getUri();
string result = restTemplate.getForobject( url: rpcNemberUrl + "/getUser", String.class);
return"订单调用会员返回结果:"” + result;
}
public class RotationLoadBalancer implements LoadBalancer {
//从0开始计数
privateAtomicIntegeratomicInteger=new AtomicInteger( initialValu:0);
@override
publicServiceInstance getSingleAddres(List serviceInstances){
int index = atomicInteger.incrementAndGet() % serviceInstances.size();
return serviceInstances.get(index);
}
}