SpringCloud的Eureka的服务注册与发现入门配置_L0317的博客-CSDN博客1.父pom文件导入依赖: 根据上面的文章复制一份一模一样的服务提供商,修改端口即可 访问服务可视化界面如下,则user-provider的2台服务提供者,微服务启动成功 注:yml文件的ribbon配置需要指定自定义分配算法的类 springCloud_eureka.zip - 蓝奏云文件大小:33.9 K|https://llh317.lanzout.com/iAT2vyoxrjc 欢迎分享,转载请注明来源:内存溢出package com.guigu.cloud.config;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RibbonConfig {
@Bean
// LoadBalanced加了这个注解默认配置轮询的资源分配
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
// 随机分配注入
@Bean
public IRule iRule(){
return new RandomRule();
}
}
2.启动类指定资源分配配置类
package com.guigu.cloud.config;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RibbonPrivateConfig {
@Bean
public IRule rule(){
return new RandomRule();
}
}
3.yml文件内部指定资源分配类
#消费者的服务名
user-provider:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
# 自定义资源分配
# com.netflix.loadbalancer.RandomRule:随机选择一个server
# com.netflix.loadbalancer.BestAvailabl:选择一个最小的并发请求的server,逐个考察Server,如果Server被tripped了,则忽略
# com.netflix.loadbalancer.RoundRobinRule:roundRobin方式轮询选择, 轮询index,选择index对应位置的server
# com.netflix.loadbalancer.WeightedResponseTimeRule:根据响应时间分配一个weight(权重),响应时间越长,weight越小,被选中的可能性越低
4.自定义轮询算法
package com.guigu.cloud.IRule;
import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.AbstractLoadBalancerRule;
import com.netflix.loadbalancer.Server;
public class CustomIRule extends AbstractLoadBalancerRule {
@Override
public void initWithNiwsConfig(IClientConfig iClientConfig) {
}
@Override
public Server choose(Object o) {
//自定义资源分配算法
return null;
}
}
#消费者的服务名
user-provider:
ribbon:
NFLoadBalancerRuleClassName: com.guigu.cloud.IRule.CustomIRule
编写消费者Controller类
package com.guigu.cloud.controller;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@RestController
@RequestMapping("consumer")
public class UserController {
@Resource
private RestTemplate restTemplate;
@Resource
private DiscoveryClient discoveryClient;
@RequestMapping("user/{id}")
public Object findById(@PathVariable Integer id){
//发送请求
String url = "http://user-provider/user/find/"+id;
String forObject = restTemplate.getForObject(url, String.class);
System.out.println(forObject);
return forObject;
}
}
运行消费者启动类,访问消费者Controller,轮询结果如下
源码链接,仅供学习参考!!!
SpringCloud的Eureka的Ribbon的资源分配
搭建服务注册与发现参考如下文章
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
2021年上半年建筑业经济数据分析
上一篇
2022-12-17
ORC索引的位置信息
下一篇
2022-12-17
评论列表(0条)