zoukankan      html  css  js  c++  java
  • SpringCloud

    1. Ribbon是什么?

    多个“微服务提供者”在eureka集群里注册服务,然后消费者要调用服务时,通过ribbon从eureka集群里查询到可用的服务列表(分别有8001,8002,8003)

    然后根据ribbon的load balance算法,选择一个进行调用

    2. Ribbon能干嘛?

    3. 在客户端集成Ribbon, Eureka

    3.1 导入ribbon,eureka包

    为啥需要eureka包,上节说了ribbon集成在客户端,客户端需要从注册中心获取哪些地址可用。因此需要eureka。

    3.2 eureka配置 + 开启eureka

    注意: Ribbon的负载均衡虽然是在前端做的,但是目的依然是为了load balance在微服务提供者上,而不是eureka server集群上...这里不要迷惑!!!
    
    因为博主之前做了eureka集群,所以下方截图里eureka server有3个,反而微服务提供者提供者只有1个。所以容易造成误解,误以为load balance是在eureka server上。
    
    这里应该多加几个“微服务提供者”来提提现ribbon的作用。

    在主配置文件application.yml中,做eureka配置:

     在主程序开启eureka:

    3.3 在RestTemplate bean中配置@LoadBalanced

    由于客户端的所有请求都是通过RestTemplate (SpringCloud - RestTempleate使用)这个bean来访问微服务的,因此只要在这里加上@LoadBalanced即可。

    3.4 客户顿controller的变化

    重点:

    在整合eureka和ribbon后,这里直接写“服务名”即可,而不必要关注IP和端口
    (注意:这里应该多写几个“服务名”一样的“服务提供者”,才能提现ribbon的作用)

     

    4. Ribbon的负载均衡算法

    所有的负载均衡算法,都是如下的继承链:

    IRule 接口--> AbstractLoadBalancerRule 抽象类--> 实现类

    默认的负载均衡算法是:轮训,8001, 8002, 8003轮着来

    4.1 启用其他负载均衡算法 

    不用默认的“轮询”,改用其他算法时要注意(官方建议):不要把LB算法的java config文件放在与@SpringBootApplcation主函数相同的目录(包括其子目录)下面,以避免@ComponetScan直接把LB算法的java config文件扫描进入,使得所有的@RibbonClients共享。

    应该让每个@RibbonClients自己选择用什么LB算法。

    LB算法的java config文件:

    @SpringBootApplication函数显示注解@RibbonClient:

     

    4.2 自定义负载均衡算法

    所有的负载均衡算法,都是如下的继承链:

    IRule 接口--> AbstractLoadBalancerRule 抽象类--> 实现类

    重写方法即可

  • 相关阅读:
    使用keepalived实现双机热备
    MYSQL ERROR CODE 错误编号的意义
    Mysql slow query log
    eclipse svn 分支合并到主干
    Timer的schedule和scheduleAtFixedRate方法的区别解析
    Java内部类引用外部类中的局部变量为何必须是final问题解析
    nginx中有关命令和日志切割,配置文件加载的详细阐述
    流媒体中ffmpeg 命令的使用
    windows下搭建nginx服务器及实现nginx支持https配置流程
    mysql 中sql语句的执行顺序
  • 原文地址:https://www.cnblogs.com/frankcui/p/14123112.html
Copyright © 2011-2022 走看看