package com.concat.myrule;
import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.AbstractLoadBalancerRule;
import com.netflix.loadbalancer.ILoadBalancer;
import com.netflix.loadbalancer.Server;
import java.util.List;
/**
* 定制 Ribbon 负载均衡策略
*/
public class MyRandomRule extends AbstractLoadBalancerRule {
private int total = 0; // 总共被调用的次数,目前要求每台被调用5次
private int currentIndex = 0; // 当前提供服务的机器号
public Server choose(ILoadBalancer lb, Object key) {
if (lb == null) {
return null;
}
Server server = null;
while (server == null) {
if (Thread.interrupted()) {
return null;
}
//获取所有有效的服务实例列表
List<Server> upList = lb.getReachableServers();
//获取所有的服务实例的列表
List<Server> allList = lb.getAllServers();
//如果没有任何的服务实例则返回 null
int serverCount = allList.size();
if (serverCount == 0) {
return null;
}
//与随机策略相似,但每个服务实例只有在调用 3 次之后,才会调用其他的服务实例
if (total < 3) {
server = upList.get(currentIndex);
total++;
} else {
total = 0;
currentIndex++;
if (currentIndex >= upList.size()) {
currentIndex = 0;
}
}
if (server == null) {
Thread.yield();
continue;
}
if (server.isAlive()) {
return (server);
}
server = null;
Thread.yield();
}
return server;
}
@Override
public Server choose(Object key) {
return choose(getLoadBalancer(), key);
}
@Override
public void initWithNiwsConfig(IClientConfig clientConfig) {
// TODO Auto-generated method stub
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
spring-cloud-example-ribbon (198个子文件)
Dept.class 2KB
MyRandomRule.class 2KB
DeptController_Consumer.class 2KB
DeptController.class 2KB
DeptController.class 2KB
DeptController.class 2KB
DeptServiceImpl.class 1KB
DeptServiceImpl.class 1KB
DeptServiceImpl.class 1KB
MicroServiceCloudConsumerDept80Application.class 1KB
MicroServiceCloudProviderDept8001Application.class 892B
MicroServiceCloudEureka7002Application.class 881B
MicroServiceCloudEureka7003Application.class 881B
MicroServiceCloudEureka7001Application.class 881B
MicroServiceCloudProviderDept8003Application.class 824B
MicroServiceCloudProviderDept8002Application.class 824B
MicroServiceCloudApiApplication.class 785B
ConfigBean.class 717B
MySelfRibbonRuleConfig.class 635B
MicroServiceCloudConsumerDept80ApplicationTests.class 616B
MicroServiceCloudEureka7002ApplicationTests.class 604B
MicroServiceCloudEureka7003ApplicationTests.class 604B
MicroServiceCloudEureka7001ApplicationTests.class 604B
MicroServiceCloudApiApplicationTests.class 571B
DeptMapper.class 448B
DeptMapper.class 448B
DeptMapper.class 448B
DeptService.class 358B
DeptService.class 358B
DeptService.class 358B
mvnw.cmd 7KB
mvnw.cmd 7KB
mvnw.cmd 7KB
mvnw.cmd 7KB
mvnw.cmd 7KB
mvnw.cmd 7KB
mvnw.cmd 7KB
mvnw.cmd 7KB
mvnw.cmd 7KB
.DS_Store 12KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 47B
maven-wrapper.jar 61KB
maven-wrapper.jar 61KB
maven-wrapper.jar 61KB
maven-wrapper.jar 59KB
maven-wrapper.jar 59KB
maven-wrapper.jar 59KB
maven-wrapper.jar 59KB
maven-wrapper.jar 59KB
maven-wrapper.jar 59KB
MyRandomRule.java 2KB
DeptController_Consumer.java 2KB
MicroServiceCloudConsumerDept80Application.java 1KB
DeptController.java 1KB
DeptController.java 1KB
DeptController.java 1KB
DeptServiceImpl.java 671B
DeptServiceImpl.java 671B
DeptServiceImpl.java 671B
MySelfRibbonRuleConfig.java 669B
ConfigBean.java 569B
MicroServiceCloudProviderDept8001Application.java 546B
MicroServiceCloudEureka7002Application.java 502B
MicroServiceCloudEureka7003Application.java 502B
MicroServiceCloudEureka7001Application.java 502B
Dept.java 435B
MicroServiceCloudProviderDept8003Application.java 365B
MicroServiceCloudProviderDept8002Application.java 365B
共 198 条
- 1
- 2
资源评论
windfallsheng
- 粉丝: 24
- 资源: 31
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功