【SpringCloud】- Ribbon是什么?

是什么

在开始之前首先我们需要了解Ribbon是什么,Spring Cloud Ribbon是基于Netflix Ribbon实现的一套基于HTTP和TCP协议的客户端负载均衡的工具,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用;Ribbon客户端组件提供一系列的配置项如连接超时、重试等,通过在配置文件中列出Load Balancer所有的机器,Ribbon就能够自动基于某种规则(简单轮询、随机连接等)去连接这些机器,实现负载均衡;

简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用),Ribbon可以和其他所需的客户端结合使用,本次操作使用的是和Eureka结合使用;

能做什么

常见的负载均衡有软件Nginx,LVS,硬件F5等,负载均衡load Balance包括两种类型:

  • 集中式LB

在服务的消费方和提供方使用独立的LB设施(该设置可以是硬件、也可以软件、如Nginx),由该设施把访问的请求通过某种策略转发至服务的提供方;

  • 进程内LB

将LB的逻辑集成到消费方,消费方从服务注册中心获取有哪些地址可以使用,然后自己再从这些可用的地址中选择一个合适的服务器,Ribbon就属于是进程内LB,集成与消费方进程,消费方通过Ribbon获取到服务提供方的地址;

在这里插入图片描述

RestTemplate

什么是RestTemplate

RestTemplate是Spring提供的一个访问Http服务的客户端类,支持GET、POST、PUT、ELETE等常用方法,微服务间调用使用的是RestTemplate;

Ribbon就是使用的负载均衡+RestTenplate调用;

RestTemplate使用

类关系图示:
在这里插入图片描述

  • GET-getForObject

底层方法:
在这里插入图片描述
应用操作:

@GetMapping("/consumer/payment/get/{id}")
public CommonResult<Payment> getPayment(@PathVariable("id") Long id){
    return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
}
  • GET-getForEntity

底层方法:
在这里插入图片描述
应用:

@GetMapping("/consumer/payment/getForEntity/{id}")
public CommonResult<Payment> getPayment2(@PathVariable("id") Long id){
    ResponseEntity<CommonResult> entity=
            restTemplate.getForEntity(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
    if(entity.getStatusCode().is2xxSuccessful()){
        return entity.getBody();
    }else {
        return new CommonResult<>(444,"操作失败");
    }
}

Ribbon模块说明

名称说明
ribbon-loadbalancer负载均衡模块,可以单独使用,也可以和其他模块一起使用
Ribbon其中包含内置的负载均衡算法
ribbon-eureka集成Eureka
ribbon-core核心通用代码
ribbon-exampleRibbon使用的一些代码示例
ribbon-transport集成Netty,实现多协议支持
ribbon-httpclient基于Apache HttpClient的REST客户端,集成了负载均衡,可直接在项目中使用来调用接口

Ribbon工作步骤

  • 选择EurekaServer,它优先选择在同一个区域内负载较少的server;
  • 根据用户指定的策略,从server取到的服务注册列表中选择一个地址;
    其中Ribbon提供了多种策略:比如轮询、随机和根据响应时间加权。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值