还得需要注意对外暴露的微服务名字不要修改,必须是统一一个服务名才行.

    通过上面的代码发现我们用到了一个注解@LoadBalanced,根据这名字大概就能知道Ribbon是可以实现负载均衡的。

    03.Ribbon负载均衡的实现 - 图1

    【microcloud-provider-product】 复制两份
    分别为【microcloud-provider-product2】与【microcloud-provider-product3】

    【springcloud数据库】复制两份
    分别为【springcloud2数据库】【springcloud3数据库】 里面分别执行spingcloud数据库的脚本

    【microcloud-provider-product2】修改application.yml文件如下
    server:
    port: 8081
    mybatis:
    mapper-locations: # 所有的mapper映射文件
    - classpath:mapping/.xml
    spring:
    datasource:
    type: com.alibaba.druid.pool.DruidDataSource # 配置当前要使用的数据源的操作类型
    driver-class-name: com.mysql.cj.jdbc.Driver # 配置MySQL的驱动程序类
    url: jdbc:mysql://localhost:3306/springcloud2?serverTimezone=GMT%2B8 # 数据库连接地址
    username: root # 数据库用户名
    password: root1234% # 数据库连接密码
    application:
    name: microcloud-provider-product # 注意三个相同的服务的名字一定是一样的
    # security:
    # user:
    # roles:
    # - USER # 授权角色
    # name: root
    # password: enjoy

    logging:
    level:
    cn.enjoy.mapper: debug

    eureka:
    client: # 客户端进行Eureka注册的配置
    service-url:
    #defaultZone: http://admin:enjoy@localhost:7001/eureka
    defaultZone: http://admin:enjoy@eureka1:7001/eureka,http://admin:enjoy@eureka2:7002/eureka,http://admin:enjoy@eureka3:7003/eureka
    instance:
    instance-id: microcloud-provider-product2
    prefer-ip-address: true
    lease-renewal-interval-in-seconds: 2 # 设置心跳的时间间隔(默认是30秒)
    lease-expiration-duration-in-seconds: 5 # 如果现在超过了5秒的间隔(默认是90秒)



    info:
    app.name: microcloud-provider-product2
    company.name: enjoy
    build.artifactId: $project.artifactId$
    build.modelVersion: $project.modelVersion$


    【microcloud-provider-product3】修改application.yml文件如下
    server:
    port: 8082
    mybatis:
    mapper-locations: # 所有的mapper映射文件
    - classpath:mapping/
    .xml
    spring:
    datasource:
    type: com.alibaba.druid.pool.DruidDataSource # 配置当前要使用的数据源的操作类型
    driver-class-name: com.mysql.cj.jdbc.Driver # 配置MySQL的驱动程序类
    url: jdbc:mysql://localhost:3306/springcloud3?serverTimezone=GMT%2B8 # 数据库连接地址
    username: root # 数据库用户名
    password: root1234% # 数据库连接密码
    application:
    name: microcloud-provider-product # 注意三个相同的服务的名字一定是一样的

    # security:
    # user:
    # roles:
    # - USER # 授权角色
    # name: root
    # password: enjoy

    logging:
    level:
    cn.enjoy.mapper: debug

    eureka:
    client: # 客户端进行Eureka注册的配置
    service-url:
    #defaultZone: http://admin:enjoy@localhost:7001/eureka
    defaultZone: http://admin:enjoy@eureka1:7001/eureka,http://admin:enjoy@eureka2:7002/eureka,http://admin:enjoy@eureka3:7003/eureka
    instance:
    instance-id: microcloud-provider-product3
    prefer-ip-address: true
    lease-renewal-interval-in-seconds: 2 # 设置心跳的时间间隔(默认是30秒)
    lease-expiration-duration-in-seconds: 5 # 如果现在超过了5秒的间隔(默认是90秒)



    info:
    app.name: microcloud-provider-product3
    company.name: enjoy
    build.artifactId: $project.artifactId$
    build.modelVersion: $project.modelVersion$


    分别启动3个服务提供方,访问
    http://localhost:8080/prodcut/get/1
    http://localhost:8081/prodcut/get/1
    http://localhost:8082/prodcut/get/1
    确认3个服务是能正确提供访问的

    【microcloud-consumer】启动
    访问:http://localhost/consumer/product/list

    现在发现每一次获取数据都是通过不同的微服务获得的,所以现在同一个消费端就可以通过 Ribbon 实现了负载均衡配置处理。