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 抽象类--> 实现类

    重写方法即可

  • 相关阅读:
    Android 解决小米手机Android Studio安装app 报错的问题It is possible that this issue is resolved by uninstalling an existi
    Android Unresolved Dependencies
    Android studio 自定义打包apk名
    Android Fragment与Activity交互的几种方式
    魅族和三星Galaxy 5.0webView 问题Android Crash Report
    Android几种常见的多渠道(批量)打包方式介绍
    Android批量打包 如何一秒内打完几百个apk渠道包
    上周热点回顾(9.30-10.6)团队
    上周热点回顾(9.23-9.29)团队
    上周热点回顾(9.16-9.22)团队
  • 原文地址:https://www.cnblogs.com/frankcui/p/14123112.html
Copyright © 2011-2022 走看看