• 11.如何修改默认的负载均衡算法(springcloud)


    5.1 修改 yml 配置文件(指定某一个服务使用什么算法)
    provider :
    # 提供者的服务名称 , 那么访问该服务的时候就会按照自定义的负载均衡算法
    ribbon :
    NFLoadBalancerRuleClassName : com.netflix.loadbalancer.RandomRule
    # 几种算法的全限定类名
    5.2 测试调用该服务(这里使用随机规则)

    5.3 配置此消费者调用任何服务都用某种算法

    @Bean
    public IRule myRule () {
    // 指定调用所有的服务都用此算法
    return new RandomRule();
    }
    6.Ribbon 的配置文件和常用配置
    Ribbon 有很多默认的配置,查看 DefaultClientConfigImpl
    1. ribbon: #全局的设置
    2. eager-load:
    3. enabled: false # ribbon 一启动不会主动去拉取服务列表,当实际使用时才
    4. 去拉取 是否立即加载
    5. http:
    6. client:
    7. enabled: false # 在 ribbon 最后要发起 Http 的调用调用,我们认为是
    8. RestTemplate 完成的,其实最后是 HttpURLConnection 来完成的,这里面设置为 true
    9. 可以把 HttpUrlConnection->HttpClient
    10. okhttp:
    11. enabled: false #HttpUrlConnection 来完成的,这里面设置为 true ,可以
    12. 把 HttpUrlConnection->OkHttpClient(也是发 http 请求的,它在移动端的开发用的多)
    13. provider: #提供者的服务名称,那么访问该服务的时候就会按照自定义的负载均衡算法
    14. ribbon:
    15. NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
    16. #修改默认负载均衡算法,几种算法的全限定类名
    17. # NFLoadBalancerClassName: #loadBalance 策略
    18. # NFLoadBalancerPingClassName: #ping 机制策略
    19. # NIWSServerListClassName: #服务列表策略
    20. # NIWSServerListFilterClassName: #服务列表过滤策略
    21. ZonePreferenceServerListFilter 默认是优先过滤非一个区的服务列表

     7.Ribbon 总结(后面的代码中 不会出现 ribbon

    Ribbon 客户端实现负载均衡的远程调用组件 ,用法简单
    Ribbon 源码核心:
    ILoadBalancer 接口:起到承上启下的作用
    1. 承上:从 eureka 拉取服务列表
    2. 启下:使用 IRule 算法实现客户端调用的负载均衡
    设计思想:每一个服务提供者都有自己的 ILoadBalancer
    userService--- 》客户端有自己的 ILoadBalancer
    TeacherService--- 》客户端有自己的 ILoadBalancer
    在客户端里面就是 Map iLoadBalancers
    Map iLoadBalancers 消费者端
    服务提供者的名称 value (服务列表 算法规则 )
    如何实现负载均衡的呢?
    iloadBalancer loadbalance = iloadBalancers.get(“user-service”)
    List servers = Loadbalance.getReachableServers();// 缓存起来
    Server server = loadbalance .chooseServer(key) //key 是区 id -- IRule 算法
    chooseServer 下面有一个 IRule 算法
    IRule 下面有很多实现的负载均衡算法
    你就可以使用 eureka+ribbon 做分布式项目

     

  • 相关阅读:
    java入门,@interface
    git使用及常用命令
    如果有10个词,我想从中取3个词,然后把所有的10选3的可能统计记录下来,该怎么做?...
    91.(leaflet之家)leaflet态势标绘-进攻方向绘制
    17.重定向(redirect)和请求转发(forward)
    企业使用Windows Sysprep工具来封装Win10、Win11操作系统(全网最新最全)
    购物单-蓝桥杯
    idea中把spring boot项目打成jar包
    【webrtc】rtp包组帧
    最新AI智能创作系统ChatGPT商业源码+详细图文搭建部署教程+AI绘画系统
  • 原文地址:https://blog.csdn.net/weixin_59334478/article/details/127799654