原创

Spring Cloud 学习笔记2 Eureka 结合ribbon实现负载均衡

Spring Cloud学习笔记2


上篇文章Spring Cloud 学习笔记1 Eureka环境搭建 成功的进行了环境的搭建。这篇文章接着学习方大佬的内容,实现ribbon负载均衡。

本次代码都已经提交在github上,点击这里访问

如何开启多实例(单个idea开启多个client,这样注册中心就会看到多个了)

本篇文章基于上篇文章的代码。需要修改的地方:

pom.xml->modules 中增加

<module>ribbon</module>

src\main\java\cn\djc8\eurekaclient\EurekaclientApplication.java

增加portValue属性,portValue上面增加注解 @Value("${server.port}")

welcome方法修改为: return name+" PORT:"+portValue;

1.jpg

新建一个Spring boot项目,如下图

2.jpg

3.jpg

4.jpg

修改 src\main\resources\application.properties 名称为 src\main\resources\application.yml

修改 src\main\resources\application.yml

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:7001/eureka/
server:
  port: 7010
spring:
  application:
    name: ribbon

修改 ribbon\pom.xml 中的内容为:

<?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>cn.djc8</groupId>
        <artifactId>blog2</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <groupId>cn.djc8</groupId>
    <artifactId>ribbon</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>ribbon</name>
    <description>Demo project for Spring Boot</description>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>

            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    </project>

修改 src\main\java\cn\djc8\ribbon\RibbonApplication.java

增加图中的两段代码

5.jpg

ribbon 增加类:src\main\java\cn\djc8\ribbon\WelcomeService.java 6.jpg

ribbon 增加类:src\main\java\cn\djc8\ribbon\WelcomeControl.java 7.jpg

启动ribbon 8.jpg

我们默认client还没有启动,按照文章开头多实例的方式,先允许idea能够开启多个client。

之后先启动一个client,然后修改 src\main\resources\application.yml 中的端口为7004(或者其他)再启动一次

查看注册中心,在web浏览器中访问链接 :http://localhost:7001

10.jpg

web浏览器中 访问链接 :http://127.0.0.1:7010/welcome

浏览器中交替显示,代表负载均衡成功

username PORT:7005
username PORT:7004

因为ribbon默认的负载均衡规则不一定符合要求,可以通过更改配置的方式,修改为其他的规则。

可以看下参考文献1

参考文献

  1. 负载均衡之ribbon
  2. Ribbon进行服务调用/负载均衡以及请求重试配置
  3. Spring-Cloud-Ribbon学习笔记(二):自定义负载均衡规则
  4. EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
温馨提示:
本文最后更新于 2020年08月18日,已超过 726 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我
正文到此结束
该篇文章的评论功能已被站长关闭
本文目录