`
y806839048
  • 浏览: 1120798 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

springcloud:Ribbon自定义配置

阅读更多

总括:

 

ribbon的使用也是类似zuul一样是个入口,经过这个入口的才会有后面的路由,负载

 

自定义的ribbon只能指定某一个微服用这个自定义的负载,或者应用于所有经过这个项目访问的微服务(放在componentscan扫描范围内,由于框架内部都是

@beanonconditionmiss--这个就是外部只要用自定义的同名的就会用自定义的)

 

需要指定这个系统中访问某一个服务才用自定义策略的时候,这个自定义的不可在主类全局的扫描范围之内

   1,用exlucde: 基于路径的定位排除,或者基于注解的定位排除--------------------java中类似的定位1,用类路径,2,用注解---类似切面,这里用注解定位排除 ---自定义注解的用处就在于定位,标记

   2,自定义的ribbon类在@feignCLient中用属性配置即可

 

 

一、编写一个注解ExcludeFromComponentScan.java

 

package com.itmuch.cloud;

 

public @interface ExcludeFromComponentScan {

 

}

二 、编写一个TestConfiguration.java,将负载均衡策略变为随机

 

package com.itmuch.cloud;

 

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

 

 

import com.netflix.client.config.IClientConfig;

import com.netflix.loadbalancer.IRule;

import com.netflix.loadbalancer.RandomRule;

 

 

@Configuration

@ExcludeFromComponentScan

public class TestConfiguration {

@Autowired

IClientConfig config;

 

@Bean 

public IRule ribbonRule(IClientConfig config){

return new RandomRule();

}

}

public class TestConfiguration {

@Autowired

IClientConfig config;

 

@Bean 

public IRule ribbonRule(IClientConfig config){

return new RandomRule();

}

}

三、修改启动类ConsumerMovieRibbonApplication.java

在类上添加两个注解:

 

 

@RibbonClient(name="microservice-provider-user",configuration = TestConfiguration.class)

@ComponentScan(excludeFilters={@ComponentScan.Filter(type=FilterType.ANNOTATION,value=ExcludeFromComponentScan.class)})

四、在Controller中添加测试代码:

 

@Autowired

private LoadBalancerClient LoadBalancerClient;

 

@GetMapping("/test")

public String test() {

ServiceInstance serviceInstance = this.LoadBalancerClient.choose("microservice-provider-user");

System.out.println("111"+serviceInstance.getHost()+":"+serviceInstance.getPort()+":"+serviceInstance.getServiceId());

 

ServiceInstance serviceInstance2 = this.LoadBalancerClient.choose("microservice-provider-user2");

System.out.println("222"+serviceInstance2.getHost()+":"+serviceInstance2.getPort()+":"+serviceInstance2.getServiceId());

 

return "1";

}

五、启动

先启动eureka,再启动四个提供者实例,7900,7901,7902(user2),7903(user2),修改application.yml即可。最后启动消费者。启动成功界面:

 



 

 

六、访问页面:localhost:8010/test,刷新八次。




 

 

小结

到这里,自定义配置的展示就完成了。其中的知识点总结一下。

 

1、扫描包的排除:

@Configuration这个注解是不能@SpringBootApplication的所在扫描到的,否则将自定义的配置将失效。所以需要将TestConfiguration.java排除在包扫描之外,用自定义的注解@ExcludeFromComponentScan,然后在启动类加注解@ComponentScan(excludeFilters{@ComponentScan.Filter(type=FilterType.ANNOTATION,value=ExcludeFromComponentScan.class)})将其排除。

 

2、自定义负载均衡策略的更换。

 

@Bean

public IRule ribbonRule(IClientConfig config){

return new RandomRule();

}

这里是关键,还可以换成其它负载均衡策略。

 

  • 大小: 51.5 KB
  • 大小: 42.8 KB
分享到:
评论

相关推荐

    SpringCloud:Ribbon设计原理解析

    融合到微服务的一些基础设施(如Feign),不需要独立部署Ribbon会将微服务之间的Rest请求转为客户端的负载均衡的RPC调用Ribbon默认的负载均衡策略是轮询,但不止轮询一种,可以自定义配置 1:微服务之间通过Feign调用...

    SpringCloud使用Ribbon实现负载均衡

    Spring Cloud是构建微服务架构的一套工具集,其中Ribbon是它提供的一个客户端负载均衡器,可以帮助我们实现服务间的智能路由。本篇文章将详细探讨如何在Spring Cloud中使用Ribbon实现负载均衡。 首先,我们要理解...

    spring cloud Ribbon使用详细例子

    - **应用配置**:在Spring Cloud应用中,需要配置服务ID,Ribbon会根据该ID从Eureka获取服务实例。 - **自定义负载策略**:可以通过实现IRule接口,定义自己的负载策略,如基于权重的分配。 4. **使用Ribbon进行...

    springcloud-ribbon-feign-hystrix-zuul-config

    在Spring Cloud框架中,"springcloud-ribbon-feign-hystrix-zuul-config"这个标题涉及到四个关键组件:Ribbon、Feign、Hystrix和Zuul,以及配置管理Config。这些组件都是构建分布式系统时常用的服务发现、客户端负载...

    SpringCloud-Ribbon负载均衡服务调用及手写Ribbon算法代码

    在Spring Cloud生态中,Ribbon是一个重要的客户端负载均衡器,它与Netflix的Eureka服务注册中心结合,使得微服务间的调用能够实现智能路由和负载均衡。本篇将深入探讨Spring Cloud Ribbon的工作原理、功能特性以及...

    springCloud的ribbon和feign

    3. **自定义配置**:用户可以通过自定义实现IRule接口来定制自己的负载均衡策略,以满足特定场景下的需求。 接下来,Feign是另一个Spring Cloud引入的声明式HTTP客户端,它通过基于注解的接口简化了服务间的调用。...

    想学习的看过来了spring4.0、springboot、springcloud详细视频课程(硅谷)

    31.硅谷学习_SpringCloud_Ribbon配置初步 32.硅谷学习_SpringCloud_Ribbon负载均衡 33.硅谷学习_SpringCloud_Ribbon核心组件IRule 34.硅谷学习_SpringCloud_自定义Ribbo的负载均衡策略(上) 35.硅谷学习_Spring...

    springcloud+ribbon.doc

    在Spring Cloud生态系统中,Ribbon是一个重要的组件,它主要用于客户端负载均衡。Ribbon是一个轻量级的客户端负载均衡器,它作为一个库内嵌在Netflix的客户端应用中,用于从一组服务器列表中选择一个服务器来执行...

    微服务springcloud之ribbon使用demo

    Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一。Ribbon客户端...

    基于spring cloud项目源码源码.rar

    2. 深入理解Zuul或Spring Cloud Gateway的路由规则配置,学习如何自定义过滤器,实现API权限控制。 3. 研究Hystrix Dashboard和Turbine,了解服务性能监控和熔断效果的可视化展示。 五、进阶主题 1. Spring Cloud ...

    springcloud入门代码基于Spring Cloud实现的Ribbon客户端负载均衡模板代码

    在提供的压缩包文件"springcloud-idea-chapter03-demo1-c1"中,可能包含了实现以上步骤的一个简单示例项目。该项目可能包括了服务提供者和服务消费者两个部分,展示了如何配置Ribbon以及如何在代码中发起负载均衡的...

    02Spring Cloud Ribbon:负载均衡的服务调用1

    在Spring Cloud生态系统中,Spring Cloud Ribbon是一个至关重要的组件,它主要负责实现客户端的负载均衡,以确保服务间的调用能够均匀地分散到各个实例上,从而提高系统的整体可用性和性能。Ribbon是Netflix开发的一...

    SpringCloud-Ribbon,使用RestfulTemplate实现负载均衡练习

    2. 在Spring配置类中,创建一个Bean,注入`IRestTemplate`接口的实现,Spring Cloud会自动注入一个带有Ribbon负载均衡功能的RestTemplate实例: ```java @Configuration public class RestTemplateConfig { @...

    Springcloud 多数库 多数据源整合,查询动态切换数据库

    3. **Spring Cloud Config Server**:为了更好地管理和维护多数据源的配置,我们可以结合Spring Cloud Config Server,将配置集中存储并管理。这样,当需要更新数据库配置时,只需更改Config Server上的配置,服务端...

    SpringCloud 服务负载均衡和调用 Ribbon、OpenFeign的方法

    总的来说,SpringCloud 通过 Ribbon 和 OpenFeign 提供了灵活的客户端负载均衡解决方案,可以根据不同的场景和需求选择合适的工具和策略。无论是自定义负载均衡规则还是利用默认策略,都能帮助开发者有效地管理和...

    spring-cloud.pdf

    CustomizingtheMessageBroker: 消息代理的自定义配置。 9.7. TracingBusEvents: 追踪总线事件。 9.8. BroadcastingYourOwnEvents: 如何广播自定义事件。 9.9. Configurationproperties: 配置属性。 10. ...

    尚硅谷周阳老师SpringCloud笔记

    在SpringCloud的学习中,首先需要了解的是SpringCloud的基础概念,包括它为何而生,以及它如何解决在分布式系统中常见的问题,如服务发现、负载均衡、断路器模式、配置中心等。SpringCloud基于Spring Boot的轻量级...

Global site tag (gtag.js) - Google Analytics