SpringCloud微服务小白也能搭(Hoxton.SR8)(二)Ribbon|服务消费者

SpringCloud(微服务) 阅读详情

简单上手,直接照搬,就可搭建微服务(Hoxton.SR8) 2020.8.28发布,SpringCloud搭建的文章正在整理,干货不要错过哦

摘要:

Spring Cloud Netflix Ribbon 是Spring Cloud Netflix 子项目的核心组件之一,主要给服务间调用及API网关转发提供负载均衡的功能,在微服务架构中,很多服务都会部署多个,其他服务去调用该服务的时候,如何保证负载均衡是个不得不去考虑的问题。负载均衡可以增加系统的可用性和扩展性,当我们使用RestTemplate来调用其他服务时,Ribbon可以很方便的实现负载均衡功能。本文将对其用法进行详细介绍。

1.创建一个 user-service 模块

注意:配置及搭建参考之前第(一)文章的 客户端 配置

   

1.1 创建 UserApiController 提供 接口服务

package com.zqh.www.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
 * 用户服务类
 */
@RestController
@RequestMapping("/api/user")
public class UserApiController {

    @Value("${server.port}")
    private int port;

    @GetMapping("/getUserList")
    public Map<String, Object> getUserList() {
        System.out.println("我是:" + port + "有人调用我啦");
        ArrayList<User> dataList = new ArrayList<>();
        User user = new User();
        user.setUserId(1);
        user.setUserName("我是测试1");
        dataList.add(user);
        User user2 = new User();
        user2.setUserId(2);
        user2.setUserName("我是测试2");
        dataList.add(user2);
        HashMap<String, Object> resultMap = new HashMap<>();
        resultMap.put("code", "200");
        resultMap.put("msg", "获取成功");
        resultMap.put("data", dataList);
        return resultMap;
    }

    // 为了方便演示,所以我就直接在这里创建了一个类,大家不要照搬哦
    class User {
        private Integer userId;
        private String userName;

        public Integer getUserId() {
            return userId;
        }

        public void setUserId(Integer userId) {
            this.userId = userId;
        }

        public String getUserName() {
            return userName;
        }

        public void setUserName(String userName) {
            this.userName = userName;
        }
    }
}

2.创建ribbon-service模块,用于调用user-service

注意:配置及搭建参考之前第(一)文章的 客户端 配置

  

  

2.1 创建 RibbonApiController 调用 UserApiController 

package com.zqh.www.controller;

import com.zqh.www.utils.RestTemplateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
@RequestMapping("/api/ribbon")
public class RibbonApiController {

    @Autowired
    private RestTemplateUtils restTemplateUtils;

    private String userServiceUrl = "http://user-service";
//    private String userServiceUrl = "http://localhost:8084";

    @GetMapping("/getUserList")
    public Map<String, Object> getUserList() {
        return restTemplateUtils.exchange(userServiceUrl + "/api/user/getUserList", HttpMethod.GET, null, null, null, Map.class);
    }
}

2.2 RestTemplateUtils

package com.zqh.www.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import java.util.Map;

@Component
public class RestTemplateUtils {

    private final static Logger logger = LoggerFactory.getLogger(RestTemplateUtils.class);

    @Autowired
    private RestTemplate restTemplate;

    /**
     * @param url           请求路径
     * @param method        请求方式? HttpMethod.POST/HttpMethod.GET
     * @param uriVariables  表单传参的参数
     * @param jsonObject    JSON格式传参的参数
     * @param requestHeader 请求头
     * @param responseType  返回结果Class
     * @return
     * @Description: JSON格式参数和表单参数一起传
     */
    public <T> T exchange(String url, HttpMethod method, Map<String, Object> uriVariables, Object jsonObject, HttpHeaders requestHeader, Class<T> responseType) {
//		一般的表单传参
        String uriVariablesParam = "";
        if (null != uriVariables && 0 != uriVariables.size()) {
            StringBuffer uriSb = new StringBuffer("?");
            uriVariables.forEach((k, v) -> {
                uriSb.append(k).append("=").append("{").append(k).append("}").append("&");
            });
            uriVariablesParam = uriSb.substring(0, uriSb.length() - 1).toString();
        }
        HttpHeaders requestHeaders = requestHeader;
        if (null == requestHeaders) {
            requestHeaders = new HttpHeaders();
        }

        HttpEntity<Object> requestEntity = new HttpEntity<>(null, requestHeaders);
        if (null != jsonObject) {
            requestEntity = new HttpEntity<>(jsonObject, requestHeaders);
        }
        url += uriVariablesParam;
        long startTime = System.currentTimeMillis();
        if (null == uriVariables || 0 == uriVariables.size()) {
            T body = restTemplate.exchange(url, method, requestEntity, responseType).getBody();
            logger.info("【接口请求】【{}】【处理时间:{}】【普通参数:{}】【JSON参数:{}】【返回结果:{}】", url, System.currentTimeMillis() - startTime, uriVariables, jsonObject, body);
            return body;
        }
        T body = restTemplate.exchange(url, method, requestEntity, responseType, uriVariables).getBody();
        logger.info("【接口请求】【{}】【处理时间:{}】【普通参数:{}】【JSON参数:{}】【返回结果:{}】", url, System.currentTimeMillis() - startTime, uriVariables, jsonObject, body);
        return body;
    }
}

2.3 RibbonConfig

package com.zqh.www.config;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.List;

@Configuration
public class RibbonConfig {

    /**
     * 使用@LoadBalanced注解赋予RestTemplate负载均衡的能力,以及根据微服务名称调用接口的能力
     *
     * @return
     */
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);

        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        objectMapper.registerModule(simpleModule);

        RestTemplate restTemplate = new RestTemplate();
        List<HttpMessageConverter<?>> converters = new ArrayList<>();
        MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
        jsonConverter.setObjectMapper(objectMapper);
        converters.add(jsonConverter);
        restTemplate.setMessageConverters(converters);
        return restTemplate;
    }
}

3.单服务测试调用

    

 

4.负载服务

注意:

  1. 先开启一个user-service 不用关闭,然后复制一个userService,改一下名字

      
  2. 修改 user-service  的yml 文件,注意之前的服务是没有关闭的还是在跑的,然后启动刚刚新配置的应用

      
  3. 此时的 eureka 注册中心会出现2个user-service

4.1 测试调用

第一次调用:发现8086端口的user-service 被调用了,8084的user-service未被调用

  

第一次调用:发现8084端口的user-service 被调用了,8086的user-service未被调用,负载完成
 

5 ribbon 常用配置

注意:

  1. 配置不生效,文档找了没发现原因。。如果有读者知道原因,请告知,非常感谢

5.1 全局配置

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

5.2 单独服务配置

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

6. 总结

  1. 使用ribbon来进行服务调用,并测试了服务负载的情况下接口调用情况
  2. 处理使用 RestTemplate 返回结果为List 类型时数据缺失  

7.gitee地址

源码参考

SpringCloud系列之客户端负载均衡Netflix Ribbon 负载均衡是一种基础的网络服务,它的核心原理是按照指定的负载均衡算法,将请求分配到后端服务集群上,从而为系统提供并行处理和高可用的能力。提到负载均衡,你可能想到nginx。对于负载均衡,一般分为服务端负载均衡和客户端负载均衡 Ribbon 是由 Netflix 发布的负载均衡器,它有助于控制 HTTP 和 TCP 的客户端的行为。Ribbon 属于客户端负载均衡。 阅读详情

相关推荐

springcloud_入门示例_Hoxton.SR8.zip

使用的是springcloud的Hoxton.SR8版本,idea工程,下载即可使用。适用于入门快速看效果。整合了eureka(注册中心)、Zuul(网关)、Feign(本地化的远程调研、负载均衡)、hystrix(熔断器)。笔记可查看:https://blog.csdn.net/snail_spoor/article/details/117196596

SpringCloud Hoxton SR8最新版,博文有点长耐心看完不说精通,至少从零搭建没问题了

SpringCloudNetflix 简介 Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-t

吴杰 7300

spring-cloud-alibaba-plus:基于Spring Boot 2.3.X、Spring Cloud Hoxton版和 Spring Cloud Alibaba 2.2.X 微服务快速开发平台

技术之路永无止境,菜鸟永远在路上 spring-cloud-alibaba-plus 基于Spring Boot(2.3.3.RELEASE)、Spring Cloud Hoxton版(Hoxton.SR8)和 Spring Cloud Alibaba(2.2.1.RELEASE)框架,构建微服务应用简单、快速、高效开发平台,致力于,服务于程序爱好者、程序猿、攻城狮等广大人群,不足之处请各位武林高手批评、指正。在此,仅代表个人对您表达衷心的感谢和敬意。 1、简介 本项目即为学习实战资料,也为二次进行开发平台。 2、技术栈 2.1后端技术 1.分布式系统套版本:Spring Cloud Hoxton.SR8 2.服务治理注册与发现:Spring Cloud Nacos (Eureka/Consul) 3.分布式统一配置中心:Spring Cloud Nacos (Config) 4.熔断隔离

SpringCloud微服务小白也能搭(Hoxton.SR8)(一)Eureka|服务的注册与发现

简单上手,直接照搬,就可搭建微服务(Hoxton.SR8) 2020.8.28发布,SpringCloud搭建的文章正在整理,干货不要错过哦https://spring.io/blog/2020/08/28/spring-cloud-hoxton-sr8-has-been-released 开发工具:ideaj社区版 jar管理:maven 聚合构建 1.创建父pom项目 注意: Spring Assistant是一个插件,需要自己安装,安装教程参考 第三幅图,以前是不用强制选择的组件的,应.

itjavaee的博客 4567

从“Segmentation fault”到流畅运行:深入解析CARLA Engine crash与Signal 11报错排查指南

本文深入解析了CARLA仿真平台运行时遭遇的Engine crash与Signal 11(Segmentation fault)报错。文章指出,该错误的根本原因常与NVIDIA显卡驱动版本不兼容有关,并提供了从日志分析、常见方案试错到驱动安全降级的完整排查指南,帮助用户从崩溃走向流畅运行。

pca5navigator的博客 462

OCC WebGL案例编译实战:从FreeType配置到静态库生成

本文详细记录了将OCC(Open CASCADE Technology)3D图形库编译为WebAssembly(Wasm)并在浏览器中通过WebGL渲染的实战过程。重点解决了FreeType库的交叉编译配置、OCC核心库的裁剪与静态库生成,以及WebGL样例项目的CMake改造等关键步骤,为开发者提供了从环境搭建到最终集成的完整指南。

weixin_28831461的博客 314

SpringCloud微服务小白也能搭(Hoxton.SR8)(七)Gateway|服务网关

简单上手,直接照搬,就可搭建微服务(Hoxton.SR8) 2020.8.28发布,SpringCloud搭建的文章正在整理,干货不要错过哦 SpringCloud微服务小白也能搭(Hoxton.SR8)(一)Eureka|服务的注册与发现 SpringCloud微服务小白也能搭(Hoxton.SR8)(二)Ribbon|服务消费者 SpringCloud微服务小白也能搭(Hoxton.SR8)(三)Feign|服务消费者 SpringCloud微服务小白也能搭(Ho.

itjavaee的博客 1770

深入解析SSD报错“READ FPDMA QUEUED”:从诊断到修复全流程

本文深入解析了SSD报错“READ FPDMA QUEUED”的含义、成因与全流程解决方案。该错误通常指示硬盘硬件或健康状态问题。文章详细介绍了如何通过系统日志定位错误、解读关键的S.M.A.R.T.健康报告(重点关注重分配扇区计数等指标),并逐步进行硬件排查(如更换SATA数据线)、软件修复与数据抢救,最终指导用户根据诊断结果做出维修或更换SSD的决策。

weixin_29233333的博客 395

【SpringCloud+】Spring Cloud Hoxton.SR8升级到Spring Cloud 2020

由于近期项目做安全扫描,原项目中引用的Spring Cloud Hoxton.SR8,存在一些漏洞问题。也是因为Spring Cloud新组件的发布。所以打算升级到Spring Cloud 2020版本,在此记录一下一路的坎坷。Spring Cloud组件的使用,是有依赖关系。若不进行相关组件升级,会报一系列的问题。非常让人EMO。 示例在使用Spring Cloud 2020之后,官方文档介绍新版spring cloud关闭了bootstrap.xml读取。所以需要增加引用。 2.@EnableOAuth

诸葛小二的博客 1661

利用Dify平台打造大学生专属AI模拟面试助手:从零到精通的完整指南

在这个充满竞争的就业市场中,拥有一个24小时在线的AI面试教练无疑是大学生求职路上的秘密武器。通过本文的指导,你已经掌握了使用Dify平台构建专业级模拟面试助手的全套技能。从环境部署、模型选择,到Prompt设计、知识库集成,再到高级功能开发和效果优化,我们一步步打造了一个能够适应不同岗位、提供专业反馈的智能面试系统。无论是技术岗的算法问答,还是咨询业的案例分析,或是外企的英语面试,你的定制助手都能提供针对性训练。更重要的是,这个方案具有极强的可扩展性。

专注于编程、AI、人工智能等多个领域内容研究和分析 2789

【GameFramework框架内置模块】15、场景(Scene)

场景(Scene)模块,提供场景管理的功能,负责场景的加载、卸载、切换和管理。可以方便地管理不同场景之间的切换以及不同场景之间的信息传递。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1882

SpringCloud微服务搭建(Hoxton.SR8)(二)-- springcloud gateway以及其动态路由搭建

SpringCloud微服务搭建(二)-- springcloud gateway以及其动态路由搭建一、基本的gateway项目搭建1、项目说明2、代码实现3、测试二、gateway进阶之动态路由配置1、代码实现2、测试三、源码 一、基本的gateway项目搭建 1、项目说明 这里我们不讲什么是springcloud gateway,网上类似的文章一大堆,我们直接上代码实践,这里需要用到三个项目,分别是eureka注册中心、gateway网关项目、consumer项目。 其中eureka注册中心不必说,管理

书生灬今天不吃饭的博客 773

2019年高教社杯全国大学生数学建模竞赛 C 题:《机场的出租车问题》真题解析与 MATLAB 解决方案

🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。

**My Coding Family** 3451

【SpringCloud】微服务笔记

集中什么是微服务架构: 1597213385700 SpringCloud 是微服务一站式服务解决方案,微服务全家桶。它是微服务开发的主流技术栈。它采用了名称,而非数字版本号。 s方法gCloud 和 springCloud Alibaba 目前是最主流的微服务框架组合。 版本选择: 选用 springboot 和 springCloud 版本有约束,不按照它的约束会有冲突。 版本问题 本次学习的各种软件的版本: boot使用的是数字作为版本。官网强烈建议升级到2.0以上 cloud使用的是字母作为版本,伦

努力充实,远方可期 3万+

Transformer实战(38)——视觉Transformer (Vision Transformer, ViT)

Transformer 在自然语言处理 (NLP) 领域取得了显著成就,在许多不同的任务中都表现出色。在本节中,我们将探索视觉 Transformer (Vision Transformer, ViT) 模型。正如 NLP 领域创建了多种模型一样,视觉领域也开发了多种模型,每种模型都为计算机视觉提供了新的视角。通过本节,将学习如何使用 ViT 等模型进行计算机视觉任务,了解基于 Transformer 的预训练计算机视觉模型的工作原理,以及如何针对特定任务进行微调。

盼小辉丶的博客 2813

【WebRTC】【Unity】Unity Web RTC1-Unity中简单实现远程画面

平台:基本常用平台包括安卓,苹果(max和IOS),Windows64,Linux都行。10. 注意,如果从移动设备浏览器连接服务,信令服务器的SSL证书一定要先设好。想要在Unity中实现实时远程桌面,找到了Render Streaming这个手段,本篇介绍相应的使用方法和实例。8. 打开电脑浏览器,地址栏输入http://127.0.0.1,点击Receiver Sample。新建Unity项目,模板选Third Person,Project Name随意。启动App,控制台出现如下信息表示成功。

每日出拳老爷子的博客 2518

SpringCloud微服务小白也能搭(Hoxton.SR8)(三)Feign|服务消费者

简单上手,直接照搬,就可搭建微服务(Hoxton.SR8) 2020.8.28发布,SpringCloud搭建的文章正在整理,干货不要错过哦 SpringCloud微服务小白也能搭(Hoxton.SR8)(一)Eureka|服务的注册与发现 SpringCloud微服务小白也能搭(Hoxton.SR8)(二)Ribbon|服务消费者 摘要 Spring Cloud OpenFeign 是声明式的服务调用工具,它整合了Ribbon和Hystrix,拥有负载均衡和服务容错功能。Fei.

itjavaee的博客 1135

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SpringCloud微服务小白也能搭(Hoxton.SR8)(四)Hystrix|断路器

简单上手,直接照搬,就可搭建微服务(Hoxton.SR8) 2020.8.28发布,SpringCloud搭建的文章正在整理,干货不要错过哦 SpringCloud微服务小白也能搭(Hoxton.SR8)(一)Eureka|服务的注册与发现 SpringCloud微服务小白也能搭(Hoxton.SR8)(二)Ribbon|服务消费者 SpringCloud微服务小白也能搭(Hoxton.SR8)(三)Feign|服务消费者 摘要 Spring Cloud Netflix.

itjavaee的博客 947

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SpringCloud(Hoxton SR6)微服务工具集学习笔记

版本: Hoxton SR6

weixin_43711204的博客 2467

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SpringCloud-Hoxton.SR1学习

SpringCloud-Hoxton.SR1学习(1)1. 微服务架构2. Spring Cloud和boot版本选型2.1. 版本选择2.2. Cloud组件停更3. 搭建父工程4. 支付模块搭建(微服务订单模块,微服务消费者订单模块)4.1. IDEA新建Project工作空间4.2. 开启热部署Devtools4.3. RestTemplate4.4. 工程重构5. 服务注册发现Eureka5.1. 什么是服务治理5.2. 什么是服务注册与发现![请添加图片描述](https://img-blog.c

Hide on bush 1948

SpringCloud版本Hoxton SR5 --- 第一讲:认识

什么是SpringCloud ?我用好理解的方式作比喻: 这里我们拿京东的网站做解释,京东不一定这么搞得,但是思想是一致的。而SpringCloud就是一种微服务架构的思想;首先京东支持14亿人访问,这个架构一定不简单。我们看京东的首页网站:https://www.jd.com/京东的商品列表:https://list.jd.com/京东商品详情:https://item.jd.com/,购物车:https://cart.jd.com/等等。有没有发现一个问题,就是他们的网站地址不一样 ?这就证明...

chuxin_mm的博客 2635

【SpringCloud】【Hoxton】基础环境准备

1 引言 记2020年3月8日 SpringCloud 最新版为Hoxton SR3。 2 创建父工程 (1) spring-cloud (2) pom文件 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.comp...

qq_34125999的博客 2336

SpringCloud版本Hoxton SR5 --- 第三讲:Ribbon 、Ribbon与Feign配合使用

引用我写的:https://blog.csdn.net/chuxin_mm/article/details/106674486先看Ribbon、Fegin可以完成的功能,或者说他在项目中的定位和作用。 之前说的功能和作用都是用大白话,我觉得还是通俗易懂的。 专业术语: ribbon是什么? Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Ne..

chuxin_mm的博客 1133

SpringCloud Hoxton版微服务- Ribbon实现负载均衡

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录Ribbon概念一、Ribbon策略二、配置使用1.编写服务提供者2.编写服务消费者3.测试负载均衡随机策略总结 Ribbon概念 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。 通俗的来说:R

日常分享工作中的一些技术干货。 535

Spring Cloud Hoxton.SR9版本(四)Ribbon

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

haiertadiedie的博客 798
上一篇: SpringCloud微服务小白也能搭(Hoxton.SR8)(一)Eureka|服务的注册与发现
下一篇: SpringCloud微服务小白也能搭(Hoxton.SR8)(三)Feign|服务消费者
97牛肉面
博客等级 码龄9年 54粉丝 75原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值