SpringCloud如何实现和测试Ribbon负载均衡配置

2025-11-06 09:55:22

1、Ribbon在工作时分成两步:

第一步先选择Eureka Server,它优先选择在同一个区域内负载较少的Server。

第二步再根据用户指定的策略,再从Server取到的服务注册表中选择一个地址。

其中Ribbon提供了多种策略:比如轮询、随机和根据响应时间加权。

我们现在来看一下我们需要实现的项目的整体架构图如下:

SpringCloud如何实现和测试Ribbon负载均衡配置

2、参考microcloudservice-provider-dept-8001,新建两个提供者微服务,分别命名为:microcloudservice-provider-dept-8002,

microcloudservice-provider-dept-8003。

在父pom文件中加入这两个模块。

SpringCloud如何实现和测试Ribbon负载均衡配置

SpringCloud如何实现和测试Ribbon负载均衡配置

3、修改上面两个复制项目的主程序类的启动类名称。

SpringCloud如何实现和测试Ribbon负载均衡配置

4、新建8002/8003数据库,各自微服务分别连自己的数据库。

DROP DATABASE IF EXISTS cloudDB02;

CREATE DATABASE cloudDB02 CHARACTER SET UTF8;

USE cloudDB02;

DROP TABLE IF EXISTS dept;

CREATE TABLE dept  (

  dname varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

  db_source varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

  deptno int(11) NOT NULL AUTO_INCREMENT,

  PRIMARY KEY (deptno) USING BTREE

);

insert into dept(dname,db_source) values('开发部',database());

insert into dept(dname,db_source) values('人事部',database());

insert into dept(dname,db_source) values('财务部',database());

insert into dept(dname,db_source) values('市场部',database());

insert into dept(dname,db_source) values('运维部',database());

SpringCloud如何实现和测试Ribbon负载均衡配置

SpringCloud如何实现和测试Ribbon负载均衡配置

5、修改8002/8003各自的yml文件,修改端口和数据库连接。

server:

  port: 8002

mybatis:

  config-location: classpath:mybatis/mybatis.cfg.xml    # mybatis配置文件所在路径

  type-aliases-package: com.gwolf.springcloud.entities       # 定义所有操作类的别名所在包

  mapper-locations:                                     # 所有的mapper映射文件

  - classpath:mybatis/mapper/**/*.xml

spring:

  datasource:

    type: com.alibaba.druid.pool.DruidDataSource    # 配置当前要使用的数据源的操作类型

    driver-class-name: com.mysql.cj.jdbc.Driver      # 配置MySQL的驱动程序类

    url: jdbc:mysql://localhost:3306/cloudDB02?serverTimezone=UTC   # 数据库连接地址

    username: root                                  # 数据库用户名

    password: root                            # 数据库连接密码

    dbcp2:                                          # 进行数据库连接池的配置

      min-idle: 5                                   # 数据库连接池的最小维持连接数

      initial-size: 5                               # 初始化提供的连接数

      max-total: 5                                  # 最大的连接数

      max-wait-millis: 200                          # 等待连接获取的最大超时时间

  application:

    name: microcloudservice-provider-dept

    

eureka:

  client:

    service-url: 

      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

  instance:

    instance-id: microcloudservice-provider-dept-8002

    prefer-ip-address: true

  

info:

  app.name: gwolf-microcloudservice-provider-dept-8002

  company.name: www.gwolf.com

  build.artifactId: $project.artifactId$

  build.version:  $project.version$

SpringCloud如何实现和测试Ribbon负载均衡配置

6、三个部门微服务提供者要对外暴露统一的微服务实例名:

spring:

  application:

    name: microcloudservice-provider-dept

三个项目的这个名字必须一样。

现在我们来测试Ribbon的负载均衡配置,验证是否是轮询访问了三个部门微服务提供者。

1、启动3个eureka集群

2、启动3个部门微服务提供者

3、启动部门微服务消费者。

SpringCloud如何实现和测试Ribbon负载均衡配置

SpringCloud如何实现和测试Ribbon负载均衡配置

SpringCloud如何实现和测试Ribbon负载均衡配置

7、现在我们可以看出ribbon通过消费端已经实现了负载均衡轮询访问了部门提供者。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢