spring cloud——Ribbon的学习笔记以及入门案例

什么是Ribbon

Ribbon是一个基于HTTP和TCP的客服端 负载均衡工具,它是基于Netflix Ribbon实现的,它几乎存在每一个Spring Cloud微服务之中,包括Feign提供的声明式服务调用也是基于Ribbon实现的
其默认提供很多负载均衡算法,例如轮询,随机等等,还可以自定义

负载均衡不同方案的区别

集中式负载均衡(服务器负载均衡),即在consumer和provider之间使用独立的负载均衡设施,由该设施负责把访问请求通过某种策略转发至provider

进程内负载均衡(客户端负载均衡)将负载均衡集成到consumer,consumer从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的provider,Ribbon就属于这种,它是一个类库,集成于consumer进程

Ribbon负载均衡策略

轮询(默认) RoundRobinRule

权重轮询策略 WeightedResponseTimeRule
根据每个Provider的响应时间开始分配一个权重,响应时间越长,权重越小,被选中的可能性就越小

随即策略 RandomRule

最少并发数策略 BestAvailableRule,选择最闲的那个

重试策略 RetryRule,轮询查到不可用时,会重新尝试

可用性敏感策略 AvailabilityFilteringRule,过滤掉性能差的provider

区域敏感性策略 ZoneAvoidanceRule
以一个区域为单位考察可用性,对于不可用的区域整个丢弃,从剩下区域中选可用的provider

Ribbon入门案例与Ribbon负载均衡策略设置

首先创建两个具有相同服务名称的服务provider,这里我因为是在同一台机子上,所以用端口号进行区分

server:
  port: 7071
spring:
  application:
    name: service-provider

  freemarker:
    prefer-file-system-access: false

eureka:
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client,ip-address}:${server.port}
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 7070
spring:
  application:
    name: service-provider

  freemarker:
    prefer-file-system-access: false

eureka:
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client,ip-address}:${server.port}
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

全局的配置,都是同过上面的类名直接注入,或者进行配置,这里注意是在服务的调用者 consumer中设置

package com.service_consumer.config

import com.netflix.loadbalancer.RandomRule
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration
class RibbonConfig {

    @Bean
    fun randomRule():RandomRule{
        return RandomRule()
    }
}

局部的配置

service-provider: #服务的名称
  ribbon:
    NFloadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

在这里插入图片描述
在访问的时候就可以看见是随机的,我对于两个服务的返回字符串不同

Ribbon点对点直连

点对点直连是指绕过注册中心,直接连接服务提供者获取服务,一般再测试阶段使用比较多
需要去除Eureka的依赖,引入Ribbon依赖

// https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-ribbon
implementation("org.springframework.cloud:spring-cloud-starter-netflix-ribbon:2.2.10.RELEASE")

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值