客户端负载均衡之SpringCloud Ribbon理论学习

本文介绍SpringCloud Ribbon如何简化微服务架构中客户端负载均衡调用,通过@LoadBalanced注解的RestTemplate实现面向服务的接口调用,提高系统高可用性和处理能力。

SpringCloud Ribbon是一个基于http和tcp的客户端负载均衡工具,通过对spring cloud的封装,可以让我们轻松的将面向服务的REST模板请求自动转换为客户端负载均衡的服务调用。
负载均衡在系统架构中是一个非常重要,并且是不得不去实施的内容,负载均衡对系统的高可用、网络压力的缓解和处理能力扩容的重要手段之一,负载均衡有硬件的负载均衡设备,比如F5,软件的负载均衡是通过在服务器上安装一些具有均衡负载功能或模板的软件来完成请求分发工作,比如:Nginx,不管是硬件还是软件的负载均衡,只要是服务端负载均衡都能以这样下图的架构方式构建:
在这里插入图片描述
通过SpringCloud Ribbon的封装,我们在微服务架构中使用客户端负载均衡调用非常简单,只需要如下两步:

  1. 服务提供者只需要启动个多服务实例并注册到一个注册中心或多个相关的服务注册中心
  2. 服务消费者直接调用被@LoadBalanced注解修饰过的RestTemplate来实现面向服务的接口调用。

启动类:

@Bean
    @LoadBalanced
        //负载均衡
    RestTemplate restTemplate(){
        return new RestTemplate();
    }

service层

@Autowired
    RestTemplate restTemplate;

  
    public String helloService(){

        return restTemplate.getForEntity("http://HELLO-SERVICE/pro",String.class).getBody();
    }

controller层:

@RestController
public class consumerController {

   @Autowired
    HelloService helloService;

    @RequestMapping(value = "/ribbon-consumer", method = RequestMethod.GET)
    public String helloConsumer() {

        return helloService.helloService();
        }
}

RestTemplate简单概述:
RestTemplate会使用Ribbon的自动化配置,同时通过配置@LoadBalanced还能开启客户端负载均衡,比如:

@Bean
    @LoadBalanced
        //负载均衡
    RestTemplate restTemplate(){
        return new RestTemplate();
    }

在RestTemplate中,对GET请求可以通过以下方式进行调用实现。
一:getForEntity函数。改方法返回的是一个ResponseEntity对象,该对象是spring对HTTP请求响应的封装,其中主要存储了HTTP的几个重要的元素,比如HttpStatus(404,500这些错误码)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值