03.Spring Cloud Ribbon:负载均衡的服务调用

J-LINK下载程序出现No Cortex-M Device found in JTAG chain…问题,最全7种解决方法 J-Link下载程序出现No Corect 等的问题的7种方法 后来编辑JLinkSettings.ini文件,找到"Device"项,将其更改Device="Cortex-M0+" 阅读详情

Spring Cloud Ribbon:负载均衡的服务调用

Spring Cloud Ribbon 是Spring Cloud Netflix 子项目的核心组件之一,主要给服务间调用及API网关转发提供负载均衡的功能,本文将对其用法进行详细介绍。

1.Ribbon简介

在微服务架构中,很多服务都会部署多个,其他服务去调用该服务的时候,如何保证负载均衡是个不得不去考虑的问题。负载均衡可以增加系统的可用性和扩展性,当我们使用RestTemplate来调用其他服务时,Ribbon可以很方便的实现负载均衡功能。

2. RestTemplate的使用

RestTemplate是一个HTTP客户端,使用它我们可以方便的调用HTTP接口,支持GET、POST、PUT、DELETE等方法。

2.1 GET请求方法
<T> T getForObject(String url, Class<T> responseType, Object... uriVariables);

<T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables);

<T> T getForObject(URI url, Class<T> responseType);

<T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... uriVariables);

<T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Map<String, ?> uriVariables);

<T> ResponseEntity<T> getForEntity(URI var1, Class<T> responseType);
2.2 getForObject方法

返回对象为响应体中数据转化成的对象,举例如下:

@GetMapping("/{id}")
public CommonResult getUser(@PathVariable Long id) {
    return restTemplate.getForObject(userServiceUrl + "/user/{1}", CommonResult.class, id);
}
2.3 getForEntity方法

返回对象为ResponseEntity对象,包含了响应中的一些重要信息,比如响应头、响应状态码、响应体等,举例如下:

@GetMapping("/getEntityByUsername")
public CommonResult getEntityByUsername(@RequestParam String username) {
    ResponseEntity<CommonResult> entity = restTemplate.getForEntity(userServiceUrl + "/user/getByUsername?username={1}", CommonResult.class, username);
    if (entity.getStatusCode().is2xxSuccessful()) {
        return entity.getBody();
    } else {
        return new CommonResult("操作失败", 500);
    }
}
2.4 POST请求方法
<T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables);

<T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables);

<T> T postForObject(URI url, @Nullable Object request, Class<T> responseType);

<T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables);

<T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables);

<T> ResponseEntity<T> postForEntity(URI url, @Nullable Object request, Class<T> responseType);
2.5 postForObject示例
@PostMapping("/create")
public CommonResult create(@RequestBody User user) {
    return restTemplate.postForObject(userServiceUrl + "/user/create", user, CommonResult.class);
}
2.6 postForEntity示例
@PostMapping("/create")
public CommonResult create(@RequestBody User user) {
    return restTemplate.postForEntity(userServiceUrl + "/user/create", user, CommonResult.class).getBody();
}
2.7 PUT请求方法
void put(String url, @Nullable Object request, Object... uriVariables);

void put(String url, @Nullable Object request, Map<String, ?> uriVariables);

void put(URI url, @Nullable Object request);
2.8 PUT请求示例
@PutMapping("/update")
public CommonResult update(@RequestBody User user) {
    restTemplate.put(userServiceUrl + "/user/update", user);
    return new CommonResult("操作成功",200);
}
2.9 DELETE请求方法
void delete(String url, Object... uriVariables);

void delete(String url, Map<String, ?> uriVariables);

void delete(URI url);
2.10 DELETE请求示例
@DeleteMapping("/delete/{id}")
public CommonResult delete(@PathVariable Long id) {
   restTemplate.delete(userServiceUrl + "/user/delete/{1}", null, id);
   return new CommonResult("操作成功",200);
}

3. 创建一个user-service模块

首先我们创建一个user-service,用于给Ribbon提供服务调用。

3.1 在pom.xml中添加相关依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
3.2 在application.yml进行配置

主要是配置了端口和注册中心地址。

server:
  port: 8201
spring:
  application:
    name: user-service
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/
3.3 添加UserController用于提供调用接口

UserController类定义了对User对象常见的CRUD接口。

/**
 * Created by yanglin on 2019/10/10.
 */
@RestController
@RequestMapping("/user")
public class UserController {

    private Logger LOGGER = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private UserService userService;

    @PostMapping("/create")
    public CommonResult create(@RequestBody User user) {
        userService.create(user);
        return new CommonResult("操作成功", 200);
    }

    @GetMapping("/{id}")
    public CommonResult<User> getUser(@PathVariable Long id) {
        User user = userService.getUser(id);
        LOGGER.info("根据id获取用户信息,用户名称为:{}",user.getUsername());
        return new CommonResult<>(user);
    }

    @GetMapping("/getUserByIds")
    public CommonResult<List<User>> getUserByIds(@RequestParam List<Long> ids) {
        List<User> userList= userService.getUserByIds(ids);
        LOGGER.info("根据ids获取用户信息,用户列表为:{}",userList);
        return new CommonResult<>(userList);
    }

    @GetMapping("/getByUsername")
    public CommonResult<User> getByUsername(@RequestParam String username) {
        User user = userService.getByUsername(username);
        return new CommonResult<>(user);
    }

    @PostMapping("/update")
    public CommonResult update(@RequestBody User user) {
        userService.update(user);
        return new CommonResult("操作成功", 200);
    }

    @PostMapping("/delete/{id}")
    public CommonResult delete(@PathVariable Long id) {
        userService.delete(id);
        return new CommonResult("操作成功", 200);
    }
}

4.创建一个ribbon-service模块

这里我们创建一个ribbon-service模块来调用user-service模块演示负载均衡的服务调用。

4.1 在pom.xml中添加相关依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
4.2 在application.yml进行配置

主要是配置了端口、注册中心地址及user-service的调用路径。

server:
  port: 8301
spring:
  application:
    name: ribbon-service
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/
service-url:
  user-service: http://user-service
4.3 使用@LoadBalanced注解赋予RestTemplate负载均衡的能力

可以看出使用Ribbon的负载均衡功能非常简单,和直接使用RestTemplate没什么两样,只需给RestTemplate添加一个@LoadBalanced即可。

/**
 *  Created by yanglin on 2019/10/10.
 */

@Configuration
public class RibbonConfig {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
4.4 添加UserRibbonController类

注入RestTemplate,使用其调用user-service中提供的相关接口,这里对GET和POST调用进行了演示,其他方法调用均可参考。

**
 *  Created by yanglin on 2019/10/10.
 */

@RestController
@RequestMapping("/user")
public class UserRibbonController {
    @Autowired
    private RestTemplate restTemplate;
    @Value("${service-url.user-service}")
    private String userServiceUrl;

    @GetMapping("/{id}")
    public CommonResult getUser(@PathVariable Long id) {
        return restTemplate.getForObject(userServiceUrl + "/user/{1}", CommonResult.class, id);
    }

    @GetMapping("/getByUsername")
    public CommonResult getByUsername(@RequestParam String username) {
        return restTemplate.getForObject(userServiceUrl + "/user/getByUsername?username={1}", CommonResult.class, username);
    }

    @GetMapping("/getEntityByUsername")
    public CommonResult getEntityByUsername(@RequestParam String username) {
        ResponseEntity<CommonResult> entity = restTemplate.getForEntity(userServiceUrl + "/user/getByUsername?username={1}", CommonResult.class, username);
        if (entity.getStatusCode().is2xxSuccessful()) {
            return entity.getBody();
        } else {
            return new CommonResult("操作失败", 500);
        }
    }

    @PostMapping("/create")
    public CommonResult create(@RequestBody User user) {
        return restTemplate.postForObject(userServiceUrl + "/user/create", user, CommonResult.class);
    }

    @PostMapping("/update")
    public CommonResult update(@RequestBody User user) {
        return restTemplate.postForObject(userServiceUrl + "/user/update", user, CommonResult.class);
    }

    @PostMapping("/delete/{id}")
    public CommonResult delete(@PathVariable Long id) {
        return restTemplate.postForObject(userServiceUrl + "/user/delete/{1}", null, CommonResult.class, id);
    }
}

5.负载均衡功能演示

  • 启动eureka-server于8001端口;

  • 启动user-service于8201端口;

  • 启动另一个user-service于8202端口,可以通过修改IDEA中的SpringBoot的启动配置实现:
    在这里插入图片描述
    *此 时运行中的服务如下:
    在这里插入图片描述

  • 调用接口进行测试:http://localhost:8301/user/1
    在这里插入图片描述

  • 可以发现运行在8201和8202的user-service控制台交替打印如下信息:
    在这里插入图片描述
    在这里插入图片描述

6.Ribbon的常用配置

6.1 全局配置
ribbon:
  ConnectTimeout: 1000 #服务请求连接超时时间(毫秒)
  ReadTimeout: 3000 #服务请求处理超时时间(毫秒)
  OkToRetryOnAllOperations: true #对超时请求启用重试机制
  MaxAutoRetriesNextServer: 1 #切换重试实例的最大个数
  MaxAutoRetries: 1 # 切换实例后重试最大次数
  NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #修改负载均衡算法
6.2 指定服务进行配置

与全局配置的区别就是ribbon节点挂在服务名称下面,如下是对ribbon-service调用user-service时的单独配置。

user-service:
  ribbon:
    ConnectTimeout: 1000 #服务请求连接超时时间(毫秒)
    ReadTimeout: 3000 #服务请求处理超时时间(毫秒)
    OkToRetryOnAllOperations: true #对超时请求启用重试机制
    MaxAutoRetriesNextServer: 1 #切换重试实例的最大个数
    MaxAutoRetries: 1 # 切换实例后重试最大次数
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #修改负载均衡算法

7.Ribbon的负载均衡策略

所谓的负载均衡策略,就是当A服务调用B服务时,此时B服务有多个实例,这时A服务以何种方式来选择调用的B实例,ribbon可以选择以下几种负载均衡策略。

  • com.netflix.loadbalancer.RandomRule:从提供服务的实例中以随机的方式;

  • com.netflix.loadbalancer.RoundRobinRule:以线性轮询的方式,就是维护一个计数器,从提供服务的实例中按顺序选取,第一次选第一个,第二次选第二个,以此类推,到最后一个以后再从头来过;

  • com.netflix.loadbalancer.RetryRule:在RoundRobinRule的基础上添加重试机制,即在指定的重试时间内,反复使用线性轮询策略来选择可用实例;

  • com.netflix.loadbalancer.WeightedResponseTimeRule:对RoundRobinRule的扩展,响应速度越快的实例选择权重越大,越容易被选择;

  • com.netflix.loadbalancer.BestAvailableRule:选择并发较小的实例;

  • com.netflix.loadbalancer.AvailabilityFilteringRule:先过滤掉故障实例,再选择并发较小的实例;

  • com.netflix.loadbalancer.ZoneAwareLoadBalancer:采用双重过滤,同时过滤不是同一区域的实例和故障实例,选择并发较小的实例。

8.使用到的模块

Spring-Cloud-Greenwich
├── eureka-server – eureka注册中心
├── user-service – 提供User对象CRUD接口的服务
└── ribbon-service – ribbon服务调用测试服务

9.项目源码地址

https://github.com/yanglin1501804006/spring-cloud-vGreenwich.SR3

android 14.0 控制wifi启用禁用功能实现 在14.0的产品rom定制化开发中,在产品开发中,对于功能的开发的功能也是挺多的,而在对于wifi的功能定制需求,有要求需要通过系统属性来控制wifi开关是否可以打开 来控制是否可以连接wifi,打开控制wifi的功能,接下来分析wifi的开启流程来实现该功能的实现 阅读详情

相关推荐

Python量化投资——mplfinance实现全功能动态交互式K线图(蜡烛图)【源码+详解】

特别鸣谢:@szFoxtech 同学热心提供了通过键盘操作平移和缩放K线图的代码!!在我的另一篇文章《七行代码利用tushare和mplfinance生成K线图》中,我介绍了两个非常好用的python库,结合起来可以非常方便容易地生成股票的K线图,对于使用python进行量化投资研究的朋友可谓是必备良方。如下图所示,仅仅几行代码,就能生成下面这张K线图:不过,仅仅使用七行代码生成的K线图,虽然看上去也像那么回事了,但是对于真正需要使用K线图作为研究工具或者可视化工具的朋友们来说,是远远不够的。在我看来,至少

m0_67390379的博客 9835

Spring Cloud Ribbon:负载均衡的服务调用

Spring Cloud Ribbon 是Spring Cloud Netflix 子项目的核心组件之一,主要给服务间调用及API网关转发提供负载均衡的功能,本文将对其用...

macrozheng的专栏 498

AutoSar实战营 - 总目录

欢迎大家来学习《AutoSar实战营》专栏,该篇为总目录,方便以后大家直接进入需要学习的文章。 ~正所谓独乐乐不如众乐乐 - - ~1, AutoSar之DaVinci开发环境2,BswM模块之Ecu State Handling1)读写DID功能 《AutoSar实战》读写DID之一:CDD准备 《AutoSar实战》读写DID之二:工具链配置 《AutoSar实战》读写DID之三:代码实现2)功能寻址 《AutoSar实战》禁止功能寻址

weixin_48498880的博客 3633

【Day4-Spring Cloud】之RestTemplate--Ribbon负载均衡GET、POST、PUT、DELETE

========================================启动注解  ========================================启动注解 @SpringBootApplication public class Application { public static void main(String[] args) { Spr...

YFSREAD的博客 631

002、搭建你的第一个Agent开发环境:Python与核心库安装

在上一篇《Agent智能体开发入门:概念、应用与前景》中,我们描绘了Agent智能体的宏伟蓝图,理解了其作为“数字员工”的巨大潜力。然而,许多开发者在迈出第一步时,常常被复杂的依赖、版本冲突和晦涩的配置所劝退,空有想法却无从下手。这种感觉就像拿到了一张藏宝图,却找不到出发的港口。本文正是你的“启航指南”。我们将彻底解决这个痛点,通过一个清晰、可复现的流程,为你搭建一个专为Agent开发量身定制的Python环境。一个纯净、隔离的Python虚拟环境,避免项目间的“依赖地狱”。一套经过验证的核心工具链。

G_RE_RE的博客 111

地平线旭日X5开发板--搭建ROS1环境开发

由于RDK X5是基于Ubuntu22.04 进行版本释放,而ROS1只兼容到了20.04,为了更很好的做以前ROS1相关代码方案的快速迁移,提供了使用docker 的ros环境,进而使用ros1的方案。

bingdund的博客 1019

Spring Cloud Ribbon 重试机制

前言在集群环境中,多个节点来提供服务,难免会有某个节点故障用Nginx做负载均衡的时候,如果你的应用是无状态的,是可以滚动发布的,也就是一台台去重启应用这样对用户其实是影响比较小的,因为Nginx在转发请求失败后会重新将该请求转发到别的实例上去Zuul中是否也存在这样的问题我们在用Zuul构建API网关时,发现eureka中的服务挂了一个, 由于ribbon的默认负载机制是轮询如果一个服务下线,eu

u010889990的专栏 3278

rk3576 点亮 LCD(eDP)

RK3576 处理器集成了对 **eDP (Embedded DisplayPort)** 接口的支持,主要用于驱动嵌入式或笔记本电脑的内置屏幕。支持 **eDP 1.3 版本协议**, 最大可支持 ****4K@120Hz**。

weixin_35723192的博客 354

Ribbon的超时和重试机制

ribbon实现了负载均衡,如果访问某服务的A节点超时后,会触发ribbon的重试机制Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端的行为。为Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。...

ywb201314的专栏 1563

C#上位机+YOLOv8实战:摄像头/视频流实时目标检测(工业级优化+完整可运行源码)

纯C#实现,无Python依赖,适配工业工控机部署;工业级优化:解决帧率、内存、鲁棒性三大核心问题;代码完整可复用,支持摄像头/视频流/RTSP多源检测;避坑指南覆盖开发中90%的常见问题,降低落地成本。相较于传统方案,该方案兼顾实时性与易用性,成本仅为商用视觉库的1/10,可快速落地到工业质检、安防、物流等场景。后续可拓展方向包括:自定义数据集训练、GPU加速推理、工业通信(PLC/串口)对接等。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 733

第10章 shellcode实战:18 神级开源shellcode工具:donut

Donut是一款shellcode生成器,可将C/C++、C#生成的PE文件转换为shellcode文件,同时支持JS、XSL、VBS脚本转换为shellcode。以下“原生”EXE/DLL指非托管PE文件(包括并不限于C/C++、delphie等编写生成的可执行文件),可以直接由系统加载运行,区别于.Net生成的托管文件。被处理exe/dll为32位程序,则需要用32为的shellcode加载器启用,exe/dll为64位的就用64位shellcode加载器启用。

李小咖·网安技术库 2796

负载均衡:Ribbon - 远程调用:RestTemplate & OpenFeign

根据设定的负载均衡算法,从列表中取出一个合适的URL,到此Ribbon的事情结束了。所以部署集群时都是设置相应的应用程序相同的应用名称.权重轮询策略(常用,中小型项目使用) :根据每个application service的响应时间分配一个权重,响应时间越长,权重越小,被选中的可能性越低。(注意: 这里的客户端指的是一个服务调用另一个服务(不涉及用户端,是内部服务间的调用),调用方是客户端,被调用方是服务端)可以是硬件,如F5, 也可以是软件,如nginx(注意这里的客户端指的是用户端,服务端是服务器)

风生的博客 945

《手把手教你玩转RTOS操作系统》专栏简介

《手把手教你玩转RTOS操作系统》专栏系统讲解实时操作系统开发,以FreeRTOS为主线,结合RT-Thread和Zephyr对比分析。内容涵盖RTOS基础、任务管理、通信机制、中断处理等核心知识,并配套STM32/ESP32平台实战项目。专栏特色在于零基础友好、实战驱动、多系统对比和行业趋势分析,适合嵌入式开发者进阶RTOS开发能力,解决实际项目中的选型与优化问题。通过完整学习路径,读者可掌握构建高可靠性嵌入式系统的关键技能。

MHD0815的博客 531

【夯实Spring Cloud】Spring Cloud中使用Ribbon实现负载均衡详解(下)

3. Ribbon 实现负载均衡 要实现负载均衡,首先要有多个订单服务提供者,目前我们就一个 microservice-order-provider01,端口号 8001,我们可以仿照这个服务,再创建两个子模块,也是订单服务提供者,取名为 microservice-order-provider02,端口号 8002 和 microservice-order-provider03,端口号 8003。...

4027

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring Cloud OpenFeign 声明式服务调用与负载均衡组件

Feign 对 Ribbon 进行了集成,OpenFeign 是 Spring Cloud 对 Feign 的二次封装,具有 Feign 的所有功能并在 Feign 的基础上增加了对 Spring MVC 注解的支持。应用于微服务架构中的服务调用,它可以帮助开发人员简化服务调用,提高开发效率,并提供一些常用的功能来保证服务的可靠性和安全性(通过集成Spring Security)。是 Spring Cloud 下的远程调用和负载均衡组件以实现服务的远程调用和负载均衡。

qq_60972641的博客 3161

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

API网关spring cloud gateway和负载均衡框架ribbon实战

原文地址:https://www.cnblogs.com/ye-feng-yu/p/11106006.html

BUse的博客 5494

Ribbon负载均衡策略

目录 1.基于Ribbon方式的负载均衡,Netflix默认提供了七种负载均衡策略, 2. @LoadBalanced 1.基于Ribbon方式的负载均衡,Netflix默认提供了七种负载均衡策略, 对于SpringCloud Alibaba解决方案中又提供了NacosRule策略,默认的负载均衡策略是轮训策略。如图所示: 当系统提供的负载均衡策略不能满足我们需求时,我们还可以基于IRule接口自己定义策略. Ribbon 是什么? (Netflix公司提供的负载均衡...

qq_51239427的博客 1万+

03_Consul服务注册与发现、Ribbon负载均衡服务调用

03_Consul服务注册与发现、Ribbon负载均衡服务调用4、Consul服务注册与发现4.1 Consul简介4.1.1 是什么4.1.2 能干嘛4.1.3 去哪下4.1.4 怎么玩4.2 安装并运行Consul4.2.1 官网安装说明4.2.2 下载完成后只有一个consul.exe文件,4.2.3 使用开发模式启动4.3 服务提供者4.4 服务消费者4.5 三个注册中心异同点4.5.1 CAP4.5.2 经典CAP图5、Ribbon负载均衡服务调用![在这里插入图片描述](https://img

北笙LBJ的博客 819

03-08、SpringCloud第八章,升级篇,负载均衡与服务调用Ribbon和OpenFeign

springCloud 负载均衡 ribbon

记录自我学习的过程 871

狂神说Spring Cloud Netflix笔记-03(Ribbon负载均衡)

狂胜说Spring Cloud Netflix笔记-01(服务注册与发现) 狂胜说Spring Cloud Netflix笔记-02(Eureka集群的搭建 ) Ribbon负载均衡10、Ribbon负载均衡ribbon是什么?ribbon能干什么?10.1、springcloud-consumer-dept-80使用Ribbonpom.xmlConfigBeanapplication.ymlDeptConsumer_80DeptConsumerController10.2、使用Ribbon实现负载均衡创.

学不死就往死里学 1115

SpringCloud03 -- 服务调用 Ribbon OpenFeign

服务调用 Ribbon 简介 ​ Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 ​ 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们很容易使用Ribbon实现自定义

Jsu蘇的博客 253

Spring Cloud Netflix快速入门03-Ribbon

Spring Cloud Ribbon 是一个基于 Netflix Ribbon 实现的客户端负载均衡工具,用于在微服务架构中实现请求的均衡分配。它支持多种负载均衡算法(如轮询、随机等),并能与 Eureka 服务注册中心无缝集成。本文介绍了 Ribbon 的基本概念、功能(如进程内负载均衡)以及如何在 Spring Cloud 项目中集成 Ribbon(包括配置 RestTemplate 和 Eureka 客户端)。

weixin_46425661的博客 939

Spring Cloud- Ribbon-03

Ribbon是Spring Cloud提供的一个客户端负载均衡器,它可以根据服务实例的健康状态、权重等信息进行动态的负载均衡。Ribbon通过服务发现和负载均衡策略来选择合适的服务实例,并通过监控和故障切换来保证服务的高可用性。Ribbon的核心概念是服务列表和负载均衡策略。服务的发现和注册:Ribbon通过集成服务发现组件(如Eureka、Consul等)来获取可用的服务实例列表,并定期更新这个列表。请求的发送和重试:Ribbon会发送HTTP请求到选择的服务实例,并处理相应的结果。

Flying_Fish_roe的博客 1307

【SpringCloud】【Hoxton】Ribbon

1 基础环境准备 2 一文读懂Eureka 3 Zookeeper注册中心 4 Consule注册中心 1 Ribbon介绍 Spring Cloud Ribbon是基于 Netflix Ribbon实现的一套客户端负载均衡的工具。简单的说, Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负載均衡算法和服务调用。 Ribbon客户端组件提供一系列完善的配置项如连接超时,重...

qq_34125999的博客 3849

Spring Cloud学习记录 03Spring Cloud Ribbon 负载均衡

Ribbon 负载均衡 Spring Cloud Ribbon 是一个基于 Http、TCP 的客服端负载均衡工具,它是基于 Netflix Ribbon 实现的。主要解决高量访问均匀的分布到每个节点 负载均衡示例 提供者需要形成集群,负载均衡的功能集成到消费方,进行请求均衡分配 提供者 提供者 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.

柏竹的博客 286

[03] 入门Spring Cloud_配置Ribbon

一、Ribbon 负载均衡 如下图,端口:8001、8002、8003 功能完全相同,高并发的情况下将请求均匀分配给三个端口以减小服务器压力。简单来说就是将用户的请求平均分配到多个服务器上从而达到HA(高可用) 所以,Ribbon的主要功能是提供客户端的软件负载均衡算法和服务调用,其客户端组件提供一系列的配置项,如:连接超时,重试等。 简单地说,就是在配置文件中列出 Load Balance(负载均衡 简称 LB )后面的机器,Ribbon会自动帮你基于某种规则(简单轮询、随机连接等)去连接这些机器。 不

weixin_42547014的博客 594

Spring Cloud:使用Ribbon实现负载均衡详解(下)

在上一篇文章(Spring Cloud:使用Ribbon实现负载均衡详解(上))中,我对 Ribbon 做了一个介绍,Ribbon 可以实现直接通过服务名称对服务进行访问。这一篇文章我详细分析一下如何使用 Ribbon 实现客户端的负载均衡。 1. 使用 Ribbon 实现负载均衡 要实现负载均衡,首先要有多个订单服务提供者,目前我们就一个 microservice-order-provider0...

222
上一篇: 02. Spring Cloud Eureka:服务注册与发现
下一篇: 04.Spring Cloud Hystrix:服务容错保护
Spring的思念
博客等级 码龄7年 80粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值