maven父子项目Spring-Cloud负载均衡(Ribbon组件)使用

一、简介

Ribbon:springcloud提供的负载均衡组件。

二、对谁的负载均衡

1、consumer访问provider的负载均衡

三、Ribbon的使用

1、注意(依赖、策略):

  1. 关于依赖:如果已经引入了feign或者网关的依赖。则无需再单独添加ribbon的依赖

  2. 关于负载均衡策略:默认策略为轮询,如果没必要无需进行任何配置

2、依赖

一、父项目 pom.xml

<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <java.version>1.8</java.version>
        <!-- springboot的版本 -->
        <spring-boot.version>2.3.2.RELEASE</spring-boot.version>
        <!-- springcloud的版本 -->
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
        <!-- alibaba推出springcloud的对应版本 -->
        <spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
    </properties>
    <!-- 项目打包方式 -->
    <packaging>pom</packaging>
​
    <dependencyManagement>
        <dependencies>
            <!-- spring boot依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- spring-cloud依赖 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- alibaba推出的spring-cloud依赖的父依赖 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

二、consumer项目 pom.xml文件

<dependencies>
    <!-- springboot core 启动依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- springboot web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- alibaba-nacos注册中心客户端支持依赖 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
    <!-- 导入feign组件或网关组件都可以里面自动依赖了Ribbon组件 -->
    <!-- feign组件 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <!-- 也可以直接导入ribbon -->
<!--
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
    </dependency>
-->
</dependencies>

三、provider项目 pom.xml文件

<dependencies>
    <!-- springboot core 启动依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- springboot web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- alibaba-nacos注册中心客户端支持依赖 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
</dependencies>

3、配置文件.yml

一、provider的pom.xml配置文件

# idea下同一个项目启动多个,集群操作
server:
  port: 8181
spring:
  profiles: no1
---
server:
  port: 8182
spring:
  profiles: no2
---
server:
  port: 8183
spring:
  profiles: no3
---
spring:
  application:
    name: test-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
        # 所属的命名空间:填写的是命名空间id
        namespace: asidhasudh-2sada-8hjbahas
        # 所属命名空间的组名称
        group: user
# 数据源配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/market?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
    username: root
    password: root
    druid:
      driver-class-name: com.mysql.jdbc.Driver

启动完成nacos注册中心的样子

二、consumer的pom.xml配置文件

server:
  port: 8183
spring:
  application:
    name: test-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
        # 所属的命名空间:填写的是命名空间id
        namespace: asidhasudh-2sada-8hjbahas
        # 所属命名空间的组名称
        group: user
​
# 配置对provider的负载均衡策略
test-provider: # 往注册中心注册的名字
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
    # 默认RoundRobinRule,轮询
    # WeightedResponseTimeRule,根据影响权重分配,可能会超时
    # RandomRule:随机分配
    # 还有其他的请上网搜索

4、访问

直接访问Consumer 访问层就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值