springCloud之Ribbon(接上篇)

1 简介

Ribbon是Netflix发布的负载均衡器,为Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。

在Spring Cloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,

原理图
在这里插入图片描述

2 Ribbon基础应用

修改上上篇博客中的服务者消费项目
在这里插入图片描述
在pom文件中添加依赖

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

yml文件添加

eureka:
  client:
    register-with-eureka: false #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
    service-url:
      defaultZone: http://2001服务器ip:2001/eureka/,http://2003服务器ip:2002/eureka/,http://2003服务器ip:2003/eureka/ # 集群

注:这里的defaultZone同上篇博客的服务提供者的集群配置
在这里插入图片描述
SpringCloudConfig类需加个负载均衡注解 @LoadBalanced

在这里插入图片描述
启动类也需要加个注解@EnableEurekaClient
在这里插入图片描述
然后服务提供者配置下服务名
在这里插入图片描述
然后这里的名字对应上
在这里插入图片描述

先启动在这里插入图片描述
再启动在这里插入图片描述
最后启动在这里插入图片描述输入请求地址即可

3 Ribbon负载均衡

新建项目springcloudStudentProvider1007、springcloudStudentProvider1009(同springcloudStudentProvider1008一样)
复制springcloudStudentProvider1008中Java类、pom文件、yml文件

启动类名称对应的改下
yml配置文件有两处要对应的改下,port端口改下,以及服务实例名称改下
在这里插入图片描述
测试:
先启动三个eureka集群,再启动三个服务提供者集群;
在这里插入图片描述
先测试服务提供者:
http://localhost:1007/student/list
http://localhost:1008/student/list
http://localhost:1009/student/list

没问题再测试 eureka:
http://2002服务器ip:2003/eureka/
http://2002服务器ip:2003/eureka/
http://2003服务器ip:2003/eureka/

没问题然后再启动服务消费者输入地址调用即可,多刷新几次会发现会轮询调用提供者1007、1008、1009,但是有个缺陷,比如挂了一个提供者,那就会用1/3的几率调用失败

解决办法:
ribbon默认给我们提供的策略
在这里插入图片描述
在这里插入图片描述
默认有7个策略

自定义策略
在服务消费者项目的SpringCloudConfig类中
添加

/**
   * 自定义轮询算法
   * @return
   */
  @Bean
  public IRule myRule(){
    
    
	return new RetryRule();
  }

在这里插入图片描述
自定义选择这种策略,当消费者调用服务提供者时候,那么在前几轮中还会继续调用其中一个挂掉的服务提供者,经过几轮调用后还发现那个挂掉的提供者没恢复那么就不会再继续调那个挂掉的提供者了。

猜你喜欢

转载自blog.csdn.net/weixin_38323645/article/details/104975556
今日推荐