SpringCloud学习(三)负载均衡

SpringCloud 负载均衡

  1. Ribbon

    Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,可以将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用,微服务的调用、API网关的请求转发等都是通过Ribbon实现的

    1. 负载均衡

      • 负载均衡(服务端):
        • 一般指服务端负载均衡,是对系统的高可用、网络压力缓解、处理扩容能力的手段
        • 硬件负载均衡一般是在服务器节点之间安装设备如F5
        • 软件负载均衡是在服务器上安装具备负载均衡的软件来完成请求分发工作
        • 实现方式:维护一个下挂可用的服务端清单,周期心跳检测提出故障的服务端节点,按照算法(线性轮训、按权重负载、按流量负载)转发客户端请求
      • 客户端负载均衡:与服务端不同的是服务清单存储在客户端,需要与服务注册中心配合完成
    2. RestTemplate

      RestTemplate会使用Ribbon的自动化配置,通过配置@LoadBanlance注解开启客户端负载均衡,实现服务调用

      RestTemplate针对不同请求类型和参数类型有适合的方法调用服务

      • GET请求:
        • getForEntity(String url,Class responseType,Map urlVariables):urlVariables填充url参数的占位符,responseType为body体的返回类型,responseType为自定义对象类型时确保提供服务的接口返回的也是此自定义对象类型
        • getForObject(String url,Class responseType,Map urlVariables):相当于调用getForEntity().getBody(),直接返回Body体内容
      • POST请求:
        • postForEntity(String url,Object request,Class responseType,Map urlVariables):类似getForEntity(),增加了Object request字段,request是请求的body内容
        • postForEntity(String url,Object request,Class responseType,Map,urlVariables):相当于调用**postForEntity().getBody(),直接返回Body体内容
      • PUT请求:
        • put(String url,Object request,Map urlVariables):urlVariables填充url参数的占位符,request为请求的body内容,返回参数为void
      • DELETE请求:
        • delete(String url,Map urlVariables):urlVariables填充url参数的占位符
    3. 实现源码分析