iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >什么是SpringCloud客户端负载均衡
  • 185
分享到

什么是SpringCloud客户端负载均衡

2024-04-02 19:04:59 185人浏览 薄情痞子
摘要

本篇内容介绍了“什么是SpringCloud客户端负载均衡”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!s

本篇内容介绍了“什么是SpringCloud客户端负载均衡”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

spring cloud Ribbon

Ribbon是什么?

  • (spring Cloud Netflix) -->大量使用了Netflix公司的开源项目

  • (Spring Cloud Alibaba)-->大量使用了Alibaba公司的开源项目

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡器;

我们通常说的负载均衡是指将一个请求均匀地分摊到不同的节点单元上执行,负载均衡分为硬件负载均衡和软件负载均衡:

  • 硬件负载均衡:比如 F5、深信服、Array 等;

  • 软件负载均衡:比如 Nginx、LVS、HAProxy 等;(是一个服务器实现的)

Ribbon是Netflix公司发布的开源项目(组件、框架jar包),主要功能是提供客户端的软件负载均衡算法,它会从eureka中获取一个可用的服务端清单,通过心跳检测来剔除故障的服务端节点以保证清单中都是可以正常访问的服务端节点。

当客户端发送请求,则ribbon负载均衡器按某种算法(比如轮询、权重、 最小连接数等)从维护的可用服务端清单中取出一台服务端的地址,然后进行请求;

Ribbon非常简单,可以说就是一个jar包,这个jar包实现了负载均衡算法,Spring Cloud 对 Ribbon 做了二次封装,可以让我们使用  RestTemplate 的服务请求,自动转换成客户端负载均衡的服务调用。

Ribbon 支持多种负载均衡算法,还支持自定义的负载均衡算法。

客户端负载均衡 vs 服务端负载均衡

什么是SpringCloud客户端负载均衡

什么是SpringCloud客户端负载均衡

采用Ribbon实现服务调用

1、首先加入ribbon的依赖,但是eureka已经依赖了ribbon,所以这里不需要再引用ribbon的依赖;

2、要使用ribbon,只需要一个注解:

@Bean @LoadBalanced public RestTemplate restTemplate(){     RestTemplate restTemplate = new RestTemplate();     return restTemplate; }

在RestTemplate上面加入@LoadBalanced注解,这样就可以实现RestTemplate 在调用时自动负载均衡;

我们这里现在启动了eureka集群(3个eureka) 和服务提供者集群(2个service-Goods)  和一个服务调用者(service-portal)

#告诉服务端,服务实例的唯一ID

eureka.instance.instance-id=34-sprinGCloud-service-portal

Ribbon 负载均衡策略

Ribbon 的负载均衡策略是由 IRule 接口定义, 该接口由如下实现:

在jar包:com.netflix.ribbon#ribbon-loadbalancer中;

什么是SpringCloud客户端负载均衡

要使用ribbon实现负载均衡,在Spring 的配置类里面把对应的负载均衡接口实现类作为一个Bean配置一下就行了;

负载均衡的入口:ILoadBalancer接口

如果要切换负载均衡策略:

@Bean public IRule iRule(){     return new RoundRobinRule(); }

 什么是SpringCloud客户端负载均衡

如果我们没有指定负载均衡策略,ribbon默认的负载均衡是ZoneAvoidanceRule;(新版本,G版本)

Spring Cloud Feign

Feign是什么?

Feign 是 Netflix 公司开发的一个声明式的 REST 调用客户端; (调用远程的restful风格的Http接口的一个组件)

调用组件其实很多,比如:

1、Httpclient(apache)

2、Httpurlconnection (jdk)

3、restTemplate(spring)

4、OkHttp(Android)

5、Feign (Netflix) --> 实现非常优雅

Spring Cloud Feign 对 Ribbon  负载均衡进行了简化,在其基础上进行了进一步的封装,在配置上大大简化了开发工作,它是一种声明式的调用方式,它的使用方法是定义一个接口,然后在接口上添加注解,使其支持了Spring  mvc标准注解和HttpMessageConverters,Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

Feign能干什么?

Feign旨在简化微服务消费方(调用者,客户端)代码的开发,前面在使用Ribbon+RestTemplate进行服务调用时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方式,但是在实际开发中,由于服务提供者提供的接口非常多,一个接口也可能会被多处调用,Feign在Ribbon+RestTemplate的基础上做了进一步封装,在Feign封装之后,我们只需创建一个接口并使用注解的方式来配置,即可完成对服务提供方的接口绑定,简化了使用Ribbon  + RestTemplate的调用,自动封装服务调用客户端,减少代码开发量;

使用Feign实现消费者

使用 Feign 实现消费者,我们通过下面步骤进行:

第一步:创建普通 Spring Boot 工程

把接口放在通用的接口层、常量类、model的项目中

第二步:添加依赖

要 添 加 的 依 赖 主 要 是

spring-cloud-starter-netflix-eureka-client 和  spring-cloud-starter-feign,如下:

<!-- spring-cloud-starter-openfeign --> <dependency>     <groupId>org.springframework.cloud</groupId>     <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>

第三步:声明服务

定义一个 GoodsRemoteClient 接口,通过@FeignClient 注解来指定服务名称,进而绑定服务,然后再通过 springMVC  中提供的注解来绑定服务提供者提供的接口, 如下:

@FeignClient("34-SPRINGCLOUD-SERVICE-GOODS") public interface GoodsService { @RequestMapping("/service/goods") public String goods(); }

这相当于绑定了一个名叫34-SPRINGCLOUD-SERVICE-GOODS (这里34-SPRINGCLOUD-SERVICE-GOODS大小写34-sprinGCloud-service-goods都可以 )  的服务提供者提供的/service/goods 接口;

第四步:添加注解

在项目入口类上添加@EnableFeignClients 注解表示开启 Spring Cloud Feign的支持功能;

第五步:使用 Controller 中调用服务

接着来创建一个 Controller 来调用上面的服务,如下:

public class GoodsController {     @Autowired     private GoodsService goodsService;          @RequestMapping("/cloud/goodsFeign")     public ResultObject goodsFeign() {         //调用远程的一个controller, restful的调用         return goodsService.goods();     } }

第六步:属性配置

在 application.properties 中指定服务注册中心、端口号等信息,如下:

server.port=8090

#打开所有的WEB访问端点

management.endpoints.web.exposure.include=*

#此实例注册到eureka服务端的name

spring.application.name=34-sprinGCloud-service-feign

#不注册自己,我是一个消费者,别人如果不调用我的话,我就不用注册

eureka.client.register-with-eureka=false

#每间隔2s,向服务端发送一次心跳,证明自己依然"存活"

eureka.instance.lease-renewal-interval-in-seconds=2

#告诉服务端,如果我10s之内没有给你发心跳,就代表我故障了,将我踢出掉

eureka.instance.lease-expiration-duration-in-seconds=10

#告诉服务端,服务实例以IP作为链接,而不是取机器名

eureka.instance.prefer-ip-address=true

#告诉服务端,服务实例的唯一ID

eureka.instance.instance-id=34-sprinGCloud-service-feign

#eureka注册中心的连接地址

#eureka.client.service-url.defaultZone=http://eureka8761:8761/eureka

#eureka.client.service-url.defaultZone=http://eureka8761:8761/eureka,http://eureka8762:8762/eureka,http://eureka8763:8763/eureka

eureka.client.service-url.defaultZone=http://192.168.10.128:8761/eureka,http://192.168.10.128:8762/eureka,http://192.168.10.128:8763/eureka

第七步:测试

依次启动注册中心、服务提供者和 feign 实现服务消费者,然后访问如下地址:

http://localhost:8090/cloud/goodsFeign

使用Feign实现消费者的测试

负载均衡:

我们知道,Spring Cloud 提供了 Ribbon 来实现负载均衡,使用 Ribbo 直接注入一个 RestTemplate  对象即可,RestTemplate 已经做好了负载均衡的配置;

在 Spring Cloud 下,使用 Feign 也是直接可以实现负载均衡的,定义一个有@FeignClient  注解的接口,然后使用@RequestMapping 注解到方法上映射远程的 REST 服务,此方法也是做好负载均衡配置的;

通过feign只需要定义服务绑定接口且以声明式的方法,优雅而简单的实现了服务调用;

“什么是SpringCloud客户端负载均衡”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 什么是SpringCloud客户端负载均衡

本文链接: https://www.lsjlt.com/news/70269.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 什么是SpringCloud客户端负载均衡
    本篇内容介绍了“什么是SpringCloud客户端负载均衡”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!S...
    99+
    2024-04-02
  • SpringCloud客户端负载均衡——Ribbon
      Ribbon——A ribbon is a long, narrow piece of cloth that you use for tying things together or as a decoration.  Ribbon是一...
    99+
    2023-06-02
  • 客户端负载均衡是什么意思
    本篇文章为大家展示了客户端负载均衡是什么意思,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。服务端负载均衡负载均衡是我们处理高并发、缓解网络压力和进行服务端扩容的重要手段之一,但是一般情况下我们所说的...
    99+
    2023-06-19
  • SpringCloud 客户端Ribbon负载均衡的实现方法
    目录Ribbon 介绍开启客户端负载均衡,简化 RestTemplate 调用负载均衡策略饥饿加载Ribbon 介绍 Ribbon 是 Netflix 提供的一个基于 Http 和 ...
    99+
    2024-04-02
  • springcloud负载均衡的作用是什么
    Spring Cloud负载均衡的作用是帮助应用程序在多个服务提供者之间分配负载,以提高系统的可扩展性和可靠性。具体来说,Sprin...
    99+
    2023-09-01
    springcloud 负载均衡
  • SpringCloud Ribbon负载均衡使用策略是什么
    这篇“SpringCloud Ribbon负载均衡使用策略是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Sp...
    99+
    2023-07-05
  • springcloud负载均衡怎么搭建
    要搭建Spring Cloud负载均衡,你可以使用Ribbon作为负载均衡器。下面是搭建Spring Cloud负载均衡的步骤:1....
    99+
    2023-09-01
    springcloud 负载均衡
  • springcloud负载均衡怎么实现
    Spring Cloud提供了多种方式来实现负载均衡,常用的有以下几种方式:1. Ribbon:Ribbon是Spring Clou...
    99+
    2023-09-02
    springcloud 负载均衡
  • springcloud负载均衡怎么配置
    Spring Cloud提供了多种负载均衡的方式,可以通过在配置文件中配置相关参数来进行配置。 使用Ribbon负载均衡器: 在...
    99+
    2023-10-26
    springcloud
  • springcloud怎么实现负载均衡
    Spring Cloud中实现负载均衡,可以使用Ribbon和Feign两种方式。1. Ribbon负载均衡:Ribbon是一个客户...
    99+
    2023-08-26
    springcloud
  • SpringCloud Ribbon负载均衡原理
    目录一、Ribbon负载均衡原理1 负载均衡原理2 负载均衡策略(IRule接口)3 Ribbon默认懒加载4 总结:Ribbon负载均衡规则、自定义、饥饿加载一、Ribbon负载均...
    99+
    2024-04-02
  • 详解SpringCloud的负载均衡
    目录一.什么是负载均衡 二.负载均衡的简单分类 三.为什么需要做负载均衡 四.springCloud如何开启负载均衡 五.IRule 1.RandomRule:表示随机策略,它将从服...
    99+
    2024-04-02
  • lvs负载均衡是什么
    lvs负载均衡是一种能够在unix/linux平台下实现负载均衡集群功能的虚拟服务器集群系统,主要是用来将一组服务器构成一个高性能的、高可用的虚拟服务器。具体内容如下:LVS是linux virtual server的简写linux虚拟服务...
    99+
    2024-04-02
  • SpringCloud怎么实现Ribbon负载均衡
    这篇文章主要讲解了“SpringCloud怎么实现Ribbon负载均衡”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringCloud怎么实现Ribbon负载均衡”吧!Ribbon使用R...
    99+
    2023-06-30
  • springcloud负载均衡策略怎么实现
    在Spring Cloud中,负载均衡策略的实现主要依赖于Ribbon和Eureka。Ribbon是Netflix开源的负载均衡组件...
    99+
    2023-09-27
    springcloud
  • Nginx的负载均衡是什么
    本篇内容介绍了“Nginx的负载均衡是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!负载均衡所谓负载均...
    99+
    2024-04-02
  • 负载均衡到底是什么,负载均衡结构和流程(图)
    负载均衡到底是什么,负载均衡结构和流程(图)负载均衡,英文名Load Balance,作用是将操作分摊到多个执行单元上执行。随着如今网络流量的不断增大,服务的负载均衡是必须的,这里就来讲一讲负载均衡的结构。   &nbs...
    99+
    2023-06-04
  • 网络负载均衡是什么
    网络负载均衡是由多台服务器以对称的方式组成一个服务器集合,能够平均分配客户请求到服务器列阵,从而提高服务器响应速度,主要用来解决高并发和高可用的问题。具体内容如下:网络负载均衡( Load balance)主要用于扩展网络设备和服务器的带宽...
    99+
    2024-04-02
  • 什么是七层负载均衡
    七层负载均衡是指在OSI网络模型中的应用层,通过对网络流量进行分析和处理,将请求分发到不同的服务器上,以实现负载均衡。七层负载均衡能...
    99+
    2024-04-17
    负载均衡
  • 什么是弹性负载均衡
    弹性负载均衡(Elastic Load Balancing)是一种分布式系统的技术,用于均衡不同的网络请求负载,并将其分配给多个服务...
    99+
    2023-09-01
    弹性负载均衡 负载均衡
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作