Springcloud笔记(4)-客户端负载均衡Ribbon

news/2024/7/10 2:08:31 标签: spring cloud, 笔记, 负载均衡

Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,不需要独立部署,几乎存在于每一个springcloud构建的微服务和基础设施中。
微服务间调用,API网关的请求转发都通过Ribbon实现。

负载均衡

通常所说的负载均衡都是指的服务端负载均衡,包括硬件和软件,如软件的nginx。而ribbon是一个客户端负载均衡,客户端负载均衡中,所有客户端节点维护自己要访问的服务端清单,与服务注册中心配合完成。springcloud的服务治理框架,默认会整合ribbon,如Eureka。

在微服务架构中使用客户端负载均衡调用两步:
服务提供者只需要启动多个服务实例并注册到一个注册中心或是多个相关联的服务注册中心。
服务消费者直接通过调用被@LoadBalanced注解修饰过的RestTemplate来实现面服务的接口调用。

服务消费者的两个目标:发现服务和消费服务,发现服务由Eureka的客户端完成(通过@EnableDiscoveryClient注解让应用注册为Eureka客户端应用,获得服务发现能力),服务消费任务由ribbon完成(应用主类中创建RestTemplate的SpringBean实例,通过@LoadBalanced注解开启客户端负载均衡

Eureka包含了ribbon,当ribbon与Eureka联合使用时,ribbon的服务实例清单会被扩展为从Eureka注册中心获取服务端列表。
还使用文章中的例子 Springcloud笔记(2)-Eureka服务注册中心-CSDN博客

服务消费 

 在 j-cloud-sonsumer的 HelloController.java代码

@RestController
public class HelloController {

    @Bean
    @LoadBalanced
    public RestTemplate getResttemplate(){
        return new RestTemplate();
    }
    @Autowired
    private RestTemplate resttemplate;

    @RequestMapping("/hello")
    public String hello(){
        //指出服务地址   http://{服务提供者应用名名称}/{具体的controller}
        String url="http://provider-user/user/sayHello";

        //返回值类型和我们的业务返回值一致
        return resttemplate.getForObject(url, String.class);

    }
  
}

 1、创建RestTemplate的Spring Bean实例,并通过@LoadBalanced注解开启客户端
负载均衡

2、在接口实现中,调用RestTemplate创建的实例,使用getForObject方法实现对服务提供的/user/sayHello接口进行调用,可以看到这里的服务名为provider-user。

启动消费者访问查看控制台,Ribbon输出了当前客户端维护的provider-user的服务列表情况。其
中包含了各个实例的位置,Ribbo就是按照此信息进行轮询访问,以实现基于客户
端的负载均衡。另外还输出了一些其他非常有用的信息,如对各个实例的请求总数
量、第一次连接信息、上一次连接信息、总的请求失败数量等。

(使用ribbon来实现服务消费,ribbon对服务列表进行轮询,实现负载均衡

RestTemplate

RestTemplate ,该对象会使用Ribbon的自动化配置,通过配置@LoadBanlanced开启客户端负载均衡
在RestTemplate 中,对GET请求通过如下两个方法进行调用实现。
1)getForEntity
2) getForObject 
POST请求三个方法进行调用实现
1)postForEntity
2) postForObject
3) postForLocation

Ribbon支持的负载均衡策略

Ribbon内置了多种负载均衡策略,内部负载均衡的顶级接口为

com.netflix.loadbalancer.IRule

可以通过修改配置来调整Ribbon的负载均衡策略,具体代码如下

service-product: # 调用的提供者的名称

  ribbon:

    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule


http://www.niftyadmin.cn/n/5085091.html

相关文章

idea 相关配置

idea 相关配置 / 设置 1. 插件设置 下载插件代理: https://plugins.jetbrains.com推荐插件下载: Sequence Diagram 时序图Rainbow Brackets 彩虹括号MyBatisX 在 MyBatis 中写的 mapper 可以跳转maven helper 右键运行 maven 指令Lombok简化 getter …

生产级Stable Diffusion AI服务部署指南【BentoML】

在本文中,我们将完成 BentoML 和 Diffusers 库之间的集成过程。 通过使用 Stable Diffusion 2.0 作为案例研究,你可以了解如何构建和部署生产就绪的 Stable Diffusion 服务。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 Stable Diffusion 2.0 …

研发必会-异步编程利器之CompletableFuture(上)

微信公众号访问地址: 近期热推文章: 1、springBoot对接kafka,批量、并发、异步获取消息,并动态、批量插入库表; 2、SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据; 3、基于Redis的Geo实现附近商铺搜索(含源码) 4、基于Redis实现关注、取…

系统架构设计:20 论软件需求管理

目录 一 需求工程 1 需求开发 1.1 需求获取 1.1.1 软件需求的分类 1.1.2 需求获取方法

07-网络篇-抓包分析TCP

为了抓包方便一些&#xff0c;我在ubuntu虚拟机运行服务端程序&#xff0c;而在windows运行客户端程序&#xff0c;关于客户端与服务端程序如下。 ##1.程序 客户端&#xff1a; vs_client.cpp #include "stdafx.h" #include <iostream> #include <winsock2…

如何制件一本优秀的旅游杂志,这有一份操作指南

时间过的好快&#xff0c;一转眼一年已过了一大半&#xff0c;忙碌了一年&#xff0c;也该在这不冷不热的十月&#xff0c;而且充满桂花的香气的时间里停下脚步&#xff0c;带着家人出去畅游一番&#xff0c;开拓一下自己的眼界。那出去游玩肯定少不了记录生活&#xff0c;每到…

一元交友盲盒在线搭建完整教程 前后端分离 可二开

大家好啊&#xff0c;今天来给大家分享一个最近很火的一元交友盲盒小程序的搭建教程。 系统搭建教程&#xff1a; 需求分析与规划&#xff1a;明确系统的基本功能需求&#xff0c;如用户注册、登录、浏览和匹配其他用户、聊天、付费参与盲盒等。选择合适的平台和框架&#xff…

让视频更加完美——Adobe Premiere Pro 2024 (Pr2024)正式发布!

如果您是一名视频制作人员&#xff0c;或者是想把自己的视频制作得更加完美的业余爱好者&#xff0c;那么您一定听说过Adobe Premiere Pro。Adobe Premiere Pro是一款功能强大、稳定可靠的视频编辑软件&#xff0c;被广泛应用于电影、电视、广告等行业。 现在&#xff0c;好消…