• 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 做分布式项目

     

  • 相关阅读:
    设计模式之中介者模式
    排序算法-合并排序法(MergeSort)
    基于SpringBoot的合家云社区物业管理平台 - 登录模块开发
    Spring Cloud 之OpenFeign
    马蹄集OJ赛第十三次
    windows11系统如何设置锁屏壁纸
    @Configuration和@Component注解的区别
    电子学会2021年6月青少年软件编程(图形化)等级考试试卷(四级)答案解析
    gromacs中一些有用的分析命令
    vue3+vite+ts使用monaco-editor编辑器
  • 原文地址:https://blog.csdn.net/weixin_59334478/article/details/127799654