• OpenFeign简介,负载策略


    openFeign概念:

    OpenFeign 是 Spring Cloud 家族的一个成员, 它最核心的作用是为 HTTP 形式的 Rest API 提供了非常简洁高效的 RPC 调用方式

    ...
           
                org.springframework.cloud
                spring-cloud-starter-openfeign
           

    ...
           
              org.springframework.cloud
              spring-cloud-dependencies
              ${spring-cloud.version}
              pom
              import
             

    接口类上:@FeignClient("被调用的服务器名")

    启动类上:@EnableFeignClients

    然后在需要使用的地方@Resource注入

    OpenFeign的用途及实现原理
    openfeign的用途:服务发现,负载均衡,服务调用

    openfeign的实现原理:基于@EnableFeignClients 将所有被@FeignClient注解的类 注册到容器中。当这些被@FeignClient注解的类被调用时会创建一个动态代理的对象为我们创建被调用类的实例,然后都会被统一转发给 Feign 框架所定义的一个 InvocationHandler , 由该 Handler 完成后续的 HTTP 转换, 发送, 接收, 翻译HTTP响应的工作。

    在SpringCloud中,Ribbon可以实现服务调用和负载均衡,而OpenFeign基于注解加接口的服务调用方式比Ribbon看起来更加简洁,那我们在使用OpenFeign实现服务调用时,如何修改负载均衡策略呢?

    随机(Random)算法:在实例列表中随机选择某个实例
    轮询(RoundRobin)算法:按顺序选择实例
    最少连接数(Least Connections)算法:每次取连接数最少的实例
    一致性哈希(Consistent Hashing)算法:基于一致性哈希算法总是将相同参数的请求落在同一个实例上
    权重随机(Weigthd Random):随机取一个数,根据这个数属于哪个范围选择对应的实例

    Ribbon内置负载均衡算法

    1、 RoundRobinRule

        轮询策略:Ribbon 默认采用的策略。若经过一轮轮询没有找到可用的provider,其最多轮询 10 轮(代码中写死的,不能修改)。若还未找到,则返回 null。

    2、RandomRule

        随机策略:从所有可用的 provider 中随机选择一个。

    3、RetryRule

        重试策略:先按照 RoundRobinRule 策略获取 server,若获取失败,则在指定的时限内重试。默认的时限为 500 毫秒。

    4、BestAvailableRule

        最可用策略:选择并发量最小的 provider,即连接的消费者数量最少的provider。其会遍历服务列表中的每一个server,选择当前连接数量minimalConcurrentConnections 最小的server。

    5、AvailabilityFilteringRule

        可用过滤算法:该算法规则是过滤掉处于熔断状态的 server 与已经超过连接极限的server,对剩余 server 采用轮询策略。 

  • 相关阅读:
    基于springboot+Redis的前后端分离项目之分布式锁(四)-【黑马点评】
    Linux C++ 053-设计模式之模板方法模式
    上传 iOS App ipa安装包 【推荐使用mac】
    力扣(LeetCode)177. 第N高的薪水(2022.06.26)
    爬虫,TLS指纹 剖析和绕过
    RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像
    OdeInt与GPU
    Redis学习2——String数据类型的操作
    【附源码】计算机毕业设计JAVA预约健身私教网站
    CentOS 升级内核至5.15.52
  • 原文地址:https://blog.csdn.net/u011630097/article/details/126050803