Spring Cloud Ribbon客户端详细介绍

 更新时间:2022年09月01日 17:06:41   作者:一个风轻云淡  
Spring Cloud Ribbon 是一套基于 Netflix Ribbon 实现的客户端负载均衡和服务调用工具。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用

前言

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。(负载均衡+RestTemplate调用)

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

官网地址-传送门

LB负载均衡(Load Balance)是什么

简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用)。

常见的负载均衡有软件Nginx,LVS,硬件 F5等。

Ribbon本地负载均衡客户端 VS Nginx服务端负载均衡区别

Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实现转发请求。即负载均衡是由服务端实现的。

Ribbon本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用技术。

集中式LB-->

即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至服务的提供方;

进程内LB-->

将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。

Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。

Ribbon核心组件IRule

IRule:根据特定算法中从服务列表中选取一个要访问的服务

如何替换

官方文档明确给出了警告:

这个自定义配置类不能放在@ComponentScan所扫描的当前包下以及子包下,

否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,达不到特殊化定制的目的了。

修改为随机

@Configuration
public class MySelfRule
{
    @Bean
    public IRule myRule()
    {
        return new RandomRule();//定义为随机
    }
}
@SpringBootApplication
@EnableEurekaClient
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration=MySelfRule.class)
public class OrderMain80
{
    public static void main(String[] args)
    {
        SpringApplication.run(OrderMain80.class,args);
    }
}

到此这篇关于Spring Cloud Ribbon客户端详细介绍的文章就介绍到这了,更多相关Spring Cloud Ribbon内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • javaweb实现文件上传与下载功能

    javaweb实现文件上传与下载功能

    这篇文章主要为大家详细介绍了javaweb实现文件上传与下载功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • Java实现的猴子吃桃问题算法示例

    Java实现的猴子吃桃问题算法示例

    这篇文章主要介绍了Java实现的猴子吃桃问题算法,简单描述了猴子吃桃问题并结合实例形式给出了java解决猴子吃桃问题的具体实现技巧,需要的朋友可以参考下
    2017-10-10
  • 基于自定义BufferedReader中的read和readLine方法

    基于自定义BufferedReader中的read和readLine方法

    下面小编就为大家分享一篇基于自定义BufferedReader中的read和readLine方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • SpringBoot2整合Ehcache组件实现轻量级缓存管理

    SpringBoot2整合Ehcache组件实现轻量级缓存管理

    EhCache是一个纯Java的进程内缓存框架,具有快速、上手简单等特点,是Hibernate中默认的缓存提供方。本文讲述下SpringBoot2 整合Ehcache组件的步骤
    2021-06-06
  • Spring整合mybatis、springMVC总结

    Spring整合mybatis、springMVC总结

    这篇文章主要为大家详细介绍了Java整合Mybatis,SpringMVC,文中有详细的代码示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2023-05-05
  • java中HashMap.values()转为ArrayList()问题

    java中HashMap.values()转为ArrayList()问题

    这篇文章主要介绍了java中HashMap.values()转为ArrayList()问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Spring AOP拦截-三种方式实现自动代理详解

    Spring AOP拦截-三种方式实现自动代理详解

    这篇文章主要介绍了Spring AOP拦截-三种方式实现自动代理详解,还是比较不错的,这里分享给大家,供需要的朋友参考。
    2017-11-11
  • SpringBoot整合Mybatis简单实现增删改查

    SpringBoot整合Mybatis简单实现增删改查

    这篇文章主要介绍了SpringBoot整合Mybatis简单实现增删改查,文章为围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Java中终止线程的三种方法

    Java中终止线程的三种方法

    这篇文章主要为大家详细介绍了Java中终止线程的三种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • SpringBoot+Hibernate实现自定义数据验证及异常处理

    SpringBoot+Hibernate实现自定义数据验证及异常处理

    这篇文章主要为大家介绍了SpringBoot如何整合Hibernate自定义数据验证及多种方式异常处理,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-04-04

最新评论