首页 > 其他 > 详细

Ribbon服务调用

时间:2021-06-09 21:23:30      阅读:32      评论:0      收藏:0      [点我收藏+]

Spring Cloud Ribbon是Netflix Ribbon实现的一套客户端,主要功能是提供客户端软件负载均衡算法和服务调用。Ribbon客户端提供一系列完善的配置如连接超时,重试等。就是在配置文件中列出Load Balancer后面的所有机器,Ribbon会自动帮你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们能很容易的使用Ribbon实现自定义的负载均衡算法。

Ribbon本地负载均衡VS Nginx服务端负载均衡:...

Ribbon负载均衡和Rest调用:

1.Eureka客户端或者Feign的依赖中已经引入Ribbon的依赖(也可单独引入)

2.配置类中给容器注入RestTemplate

@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

3.在Controller层注入RestTemplate

@Resource
private RestTemplate restTemplate;
public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";

4.调用服务方法

restTemplate.getForObject(url, responseType);
restTemplate.postForObject(url, request, responseType);

 Ribbon负载均衡:(默认负载均衡策略是轮询)

1.添加负载均衡策略的配置类

@Configuration
public class MySelfRule {
    @Bean
    public IRule myRule(){
        new RoundRobinRule(); // 轮询,默认的负载均衡策略
        new RandomRule(); // 随机获取服务
        new RetryRule(); // 按照轮询获取服务,指定时间内失败会重试
        new WeightedResponseTimeRule(); // 按权重选择服务
        new BestAvailableRule(); // 先过滤不可用服务,然后选择并发量最小的服务
        new AvailabilityFilteringRule(); // 先过滤故障实例,再选择并发较小的实例
        new ZoneAvoidanceRule(); // 综合判断server所在区域的性能,和server的可用性
        return new MyRule();
    }
}

注意:Ribbon的负载均衡的配置类不能放再主启动类所在的包或子包

技术分享图片

  2.在主启动类上添加 @RibbonClient 注解

@SpringBootApplication
@EnableEurekaClient
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE", configuration = MySelfRule.class)
public class OrderMain80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderMain80.class, args);
    }
}

 注意:@RibbonClient 的name属性指定的服务名需要与注册中心中的服务名称一致(大写)

Ribbon服务调用

原文:https://www.cnblogs.com/zhouxuezheng/p/14864002.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!