Spring Cloud 组件入门学习---Ribbon

Spring Cloud Alibaba入门教程 教程仓库:github Spring-Cloud-Alibaba-Learning 教程索引页: 本章为教程的概述部分 文章目录学习提纲1-Nacos2-Ribbon3-Feign前置知识Spring-Cloud-Alibaba是什么Spring-CloudSpring-Cloud-AlibabaSpring-Cloud-Alibaba主要组件本教程中主要使用的组件开发环境/生产环境 学... 阅读详情

简介

Spring Cloud Ribbon 是Spring Cloud Netflix 子项目的核心组件之一,主要给服务间调用及API网关转发提供负载均衡的功能,负载均衡可以增加系统的可用性和扩展性,当我们使用RestTemplate来调用其他服务时,Ribbon可以很方便的实现负载均衡功能。

项目搭建

项目源码

搭建服务提供模块

1、创建一个user-service,用于给Ribbon提供服务调用。
2、引入依赖

		<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、配置

server:
  port: 8201
spring:
  application:
    name: user-service
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/

4、创建服务提供接口

@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);
    }
}

搭建服务调用模块

同样的步骤
1、引入依赖

	 <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>

2、修改配置

server:
  port: 8301
spring:
  application:
    name: ribbon-service
  zipkin:
    base-url: http://localhost:9411
  sleuth:
    sampler:
      probability: 0.1 #设置Sleuth的抽样收集概率
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8001/eureka/
service-url:
  user-service: http://user-service

3、服务调用

@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);
    }
}

负载均衡功能演示

1、启动eureka-server于8001端口;
2、启动Ribbon-service于8301端口;
3、启动两个user-service,分别用8201和8202端口
在这里插入图片描述
4、调用接口进行测试:http://localhost:8301/user/1
在这里插入图片描述

【狂神说】Spring Cloud SpringCloud能干嘛? - Distributed/versioned configuration 分布式/版本控制配置 - Service registration and discovery 服务注册与发现 - Routing 路由 - Service-to-service calls 服务到服务的调用 - Load balancing 负载均衡配置 - Circuit Breakers 断路器 - Distributed messaging 分布式消息管理 阅读详情

相关推荐

Java与Spring Cloud框架入门

Spring Cloud框架的入门内容包括了解Spring Cloud框架的基本概念、安装和配置、服务注册与发现、负载均衡、服务熔断和降级、声明式HTTP客户端、网关和路由等。Spring Cloud是一个基于Spring Boot构建的分布式系统开发框架,它提供了一系列的组件,用于处理服务发现、负载均衡、配置管理等问题。Spring Cloud是一个基于Spring Boot构建的分布式系统开发框架,它提供了一系列的组件,用于处理服务发现、负载均衡、配置管理等问题。

吃不胖. 138

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

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

macrozheng的专栏 498

spring cloud Greenwich 学习笔记(一)spring cloud eureka ribbon 服务注册与发现

文章目录概述环境说明eureka注册中心eureka 简介工程搭建eureka注册中心服务提供者ribbon客户端负载均衡服务消费者 概述 Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,主节点选举, 分布式session, 集群状态)。协调分布式环境中各个系统,为各类服务提供模板性配置...

刘本龙的专栏 5430

springcloud ribbon 简单使用(入门系列)

springcloud 版本 Hoxton.RELEASE springboot 版本2.2.2.RELEASE 一、简单介绍(相关原理后续学习) Ribbon:提供客户端侧负载均衡算法,默认轮询(Feign中自带ribbon,不需导入依赖) 工作流程: 1、选择Eureka Server(优先选择在同一个Zone且负载较少的Server) 2、根据用户指定的策略(Ribbon提供),从...

z446981439的博客 787

Spring Cloud 微服务开发:入门、进阶与源码剖析 —— 4.1 Spring Cloud Ribbon入门

4.1 Spring Cloud Ribbon入门 Ribbon是Netflix公司开源的一个负载均衡组件,它在微服务体系中起着至关重要的作用,在Github上诞生于2013年,至今处于维护状态,活跃度较高,至今已有97个Release版本。整合进Spring Cloud生态后,正式命名为Spring Cloud Ribbon,它是一个基于HTTP好TCP的客户端负载均衡工具,它是一个工具类框架,...

极客挖掘机 2092

华大 HC32F460 DMA数据传输实战:从配置到中断处理的完整指南

本文提供了华大半导体HC32F460微控制器DMA(直接内存访问)功能的完整实战指南。详细解析了DMA的配置流程、中断处理机制以及软件与硬件触发方式,并附有实验代码示例。通过合理使用DMA进行数据传输,可以显著解放CPU资源,提升嵌入式系统的实时性与运行效率。

weixin_29194255的博客 251

学习Spring Cloud第七课(Ribbon的基本使用)

上节课我们一起学习了如何在Eureka Server上注册微服务,这节课我们一起学习服务消费者如何动态调用服务消费者以及如何实现负载均衡。         首先我们来说下最常见的负载均衡策略,那就是使用nginx作为反向代理服务器,对服务的调用进行负载均衡,这种方式是服务器端负载均衡。如下图所示。这个不是我们本节课一起学习的重点。         下面我们来说说另一种负载均衡策略,如下

u012453843的专栏 1万+

VSCode初级使用教程详细版

Visual Studio Code(简称VSCode)是一款轻量级但功能强大的代码编辑器,支持多种编程语言,具有丰富的扩展插件,并内置了Git版本控制。VSCode工具满足绝大多数工作场景,使用场景包括不限于大学生作业代码编写、读研期间实验脚本编写、工作中项目代码编写与协作、数学建模竞赛中代码编写等。本文将从VSCode的安装开始,逐步介绍其基本使用方法和一些高级功能,帮助读者快速上手。

qq_37360300的博客 5万+

Spring Cloud入门-Ribbon服务消费者(Hoxton版本)

文章目录摘要Ribbon简介RestTemplate的使用GET请求方法getForObject方法getForEntity方法POST请求方法postForObject示例postForEntity示例PUT请求方法PUT请求示例DELETE请求方法DELETE请求示例创建一个user-service模块在pom.xml中添加相关依赖在application.yml进行配置添加UserContr...

ThinkWon的博客 1万+

智能座舱架构与芯片 - (3) 硬件篇 上

在了解智能座舱的基本架构之后,我们有必要针对智能座舱域的硬件平台,软件平台,SOC等进行逐一介绍。从它们的整体结构中去认识最新的智能座舱组成部件,以及主要功能等。如上图,是中央计算-区域控制架构下的智能座舱硬件平台框架图,其中,智能座舱控制器CDC挂载在以太网交换机上,与其他车控域VDC,自驾域ADC,网联设备5G+V2X等通过以太网实现数据交互。而智能座舱域的外部硬件设备还包含有连接子系统音频子系统摄像头子系统显示子系统存储子系统功能安全子系统等。

joanna_xiao的博客 2397

从零到一:手把手教你用海康VisionMaster完成第一个字符识别项目(附完整流程与避坑点)

本文详细介绍了如何使用海康VisionMaster完成首个字符识别项目,涵盖从环境搭建、图像预处理到系统集成的完整流程。特别分享了Blob分析配置、字符识别优化等实战技巧,帮助开发者避开常见陷阱,快速掌握VisionMaster的基本操作,提升工业自动化场景下的字符识别效率。

weixin_29313423的博客 664

小白入门Spring Cloud应该怎么入门?

本文介绍Spring Cloud和相关组件,让大家大概了解什么是Spring Cloud以及各组件的介绍,并推荐一些学习书籍。 什么是微服务? 引用 ThoughtWorks 公司的首席科学家 Martin Fowler 的一段话:简而言之,微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。这些服务是围绕业务功能构建的,可以通过全自动部署机制独立部署。这些服务的集中管理最少,可以用不同的编程语言编写...

javax1228的博客 703

四大厂商网络设备巡检命令实战指南:华为、华三、锐捷、思科

本文详细介绍了华为、华三、锐捷、思科四大厂商网络设备的巡检命令实战指南,涵盖硬件状态、软件运行和网络功能等核心维度。通过具体命令示例和实用技巧,帮助网络工程师高效完成设备巡检,预防潜在故障,确保网络稳定运行。

weixin_29235923的博客 390

Spring cloud Alibaba小白入门指南

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 官网链接: https://github.com/alibaba/spring-cloud-alibaba/wiki 学习一个项目,首先就是配置好自己的idea咯~ mark 一些快捷键...

wantLight的博客 515

基于simulink的能量管理策略的场景实例:混合动力电动汽车(HEV)的能量回收与分配策略

本文以混合动力电动汽车(HEV)为研究对象,通过Simulink建模详细演示了能量管理策略的设计与实现。内容涵盖HEV系统架构、核心组件工作原理,并分步骤指导搭建车辆动力学模型、动力系统组件模型和基于规则的能量管理策略。重点分析了制动能量回收与功率分配机制,通过仿真验证了逻辑门限策略在提升燃油经济性和维持电池SOC平衡方面的有效性。文章最后展望了更高级控制策略的应用前景,为HEV能量优化提供了完整的仿真研究框架。

xiaoheshang_123的博客 212

5G射频到底是啥?方案怎么搭?工作流程、SAW选型、PA选型一口气讲透(工程师秒懂版)

很多人一提 5G 射频,脑子里先冒出来的是几个零件名:👉 PA👉 LNA👉 SAW👉 天线👉 开关但真正做方案时,这些东西不是一堆分立器件,而是一条完整的“信号流水线”。更准确地说,。Qualcomm 对 RFFE 的定义就是“把信息转换成可发送的射频信号,并把接收到的信号转换回有用信息”的那一整套组件。

weixin_43199439的博客 533

【Spring Cloud】Ribbon详细介绍及底层原理分析

Ribbon 是微服务架构中实现客户端负载均衡的重要工具,通过它可以显著提升服务调用的效率和可靠性。

分享学习 3747

【Bug已解决】Failed to fetch version ECONNREFUSED 解决方案

方案适用场景推荐指数难度方案一:NODE_EXTRA_CA_CERTS代理/企业网关证书⭐⭐⭐⭐⭐低方案二:浏览器导出证书不知证书在哪⭐⭐⭐⭐中方案三:使用系统证书macOS 用户⭐⭐⭐⭐中方案四:关闭代理直连快速验证⭐⭐⭐低方案五:更新 Node.js证书列表过时⭐⭐⭐低方案六:同步系统时间时间偏差导致⭐⭐⭐低根本原因。

博客 9972

Spring cloud系列六 Ribbon的功能概述、主要组件和属性文件配置

Ribbon实现客户端的负载均衡。Spring cloud Feign已经默认集成Ribbon。 - 1.ribbon功能说明 - 2.ribbon的6个主要组件:IRule、IPing、ServerList 、ServerListFilter、ServerListUpdater、ILoadBalancer - 3.ribbon通过属性文件配置ribbon

不积跬步无以至千里; 不积小流无以成江海 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Spring Cloud Ribbon源码解析

负载均衡就是用来帮助我们将众多的客户端请求合理的分配到各个服务器,以达到服务端资源的充分利用和更少的请求时间,它是日活亿级用户的网站架构中最重要的手段。而Ribbon实现正向代理的软负载均衡,Spring cloud Feign默认集成Ribbon,所以注解@FeignClient的类,默认实现了ribbon的功能,在之前的spring cloud-feign源码中已经提过LoadBalancer...

布道 5456

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Spring Cloud Ribbon

祝大家每日进步,有技术问题多多交流,同时欢迎大家关注我的头条号:IT人孙会良 Spring Cloud Ribbon 一.Sping Cloud Ribbon概述 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡.................................

sunhuiliang85的专栏 6272

Spring Cloud Ribbon 组件介绍

ribbon 组件 接口 作用 默认值 IClientConfig 读取配置 DefaultclientConfigImpl 工Ru1e 负载均衡规则,选择实例 ZoneAvoidancerule 工Ping 筛选掉ping不通的实例 Dummying Serverlist 交给 Ribbon的实例列表 Ribbon: ConfiqurationBasedServerList...

qq_35809876的博客 1153

Ribbon - 官方已停更!Spring Cloud 为何弃用 Ribbon

Spring Cloud弃用Ribbon的原因及替代方案 摘要:随着微服务架构演进,Netflix Ribbon因官方停止维护被Spring Cloud弃用。Ribbon曾是核心客户端负载均衡组件,但存在阻塞式I/O模型、与新技术不兼容等问题。Spring Cloud推出轻量级的Spring Cloud LoadBalancer作为替代方案,具有非阻塞I/O、响应式编程支持、更好集成性等优势。迁移路径包括:从Hoxton.SR12版本开始标记Ribbon为弃用,2021.0.0版本正式移除,开发者需改用Lo

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

【spring cloud Netflix】Ribbon组件

SpringCloud Ribbon是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将 Netflix 的中间层服务连接在一 起。Ribbon 的客户端组件提供一系列完整的配置项,如:连接超时、重试等。简单的说,就是在配置文 件中列出 LoadBalancer (简称LB:负载均衡) ,Ribbon 会自动的帮助你基于某种规则 (如简单轮询,随机 连接等等) 去连接这些机器。

L3526581402的博客 880

Spring Cloud系列之Ribbon

概述负载均衡负载均衡,即Load Balance,LB,通器常有两种实现手段,服务端和客户端。负载均衡器,是带有负载均衡功能的实体(或载体),本文不做严格区分;即缩写LB,可表示负载均衡策略,也可以表示负载均衡器。服务端LB的缺点,提供更强的流量控制权,但无法满足不同的消费者希望使用不同负载均衡策略的需求,而使用不同负载均...

cnzzs的博客 1044

Spring Cloud Alibaba快速入门及相关组件使用

Spring Cloud Alibaba是Aalibaba结合自身微服务实践,开源的微服务全家桶。在Spring Cloud项目中孵化,很可能成为Spring Cloud第二代的标准实现。在业界广泛使用,已有很多成功案例。大型复杂的系统,例如大型电商系统高并发系统,例如大型门户、秒杀系统需求不明确,且变更很快的系统,例如创业公司业务系统Spring Cloud Alibaba是Spring Cloud的子项目,Spring Cloud Alibaba符合Spring Cloud的标准。

llg3189609554的博客 2243
上一篇: Spring Cloud 组件入门学习---Eureka
下一篇: Spring Cloud 组件入门学习---Zuul
CodersCoder
博客等级 码龄10年 90粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值