SpringCloud微服务:Ribbon负载均衡

目录

负载均衡策略:

负载均衡的两种方式:

饥饿加载

1. Ribbon负载均衡规则
规则接口是IRule
默认实现是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询
2.负载均衡自定义方式
代码方式:配置灵活,但修改时需要重新打包发布
配置方式:直观,方便,无需重新打包发布,但是无法做全局配置
3.饥饿加载
开启饥饿加载
指定饥饿加载的微服务名称
 

负载均衡策略:

通过定义IRule实现可以修改负载均衡规则,有两种方式:
1.代码方式:在order-service中的OrderApplication类中,定义一个新的IRule:

@Bean
    public IRule randomRule(){
        return new RandomRule();//将负载均衡设置为随机,范围为:整个order服务
    }
@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}//创建RestTemplate并注入Spring容器@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}@Beanpublic IRule randomRule(){return new RandomRule();//将负载均衡设置为随机,范围为整个order}
}

2. 配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则:

userservice:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则:随机。范围:userservice服务
server:port: 8080
spring:datasource:url: jdbc:mysql://localhost:3306/cloud_order?useSSL=falseusername: rootpassword: 1234driver-class-name: com.mysql.jdbc.Driverapplication:name: orderservice #order的微服务名称
mybatis:type-aliases-package: cn.itcast.user.pojoconfiguration:map-underscore-to-camel-case: true
logging:level:cn.itcast: debugpattern:dateformat: MM-dd HH:mm:ss:SSS
eureka:client:service-url: #eureka地址信息defaultZone: http://127.0.0.1:10086/eureka
userservice:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则:随机。范围:userservice服务
ribbon:eager-load:enabled: true #开启饥饿加载clients:  #指定饥饿加载的服务- userservice

负载均衡的两种方式:

1、轮循:每个userservice循环执行

 当我们执行四次请求时:可以看到user1执行1和3,user2执行2和4

2、随机:每个userservice随机执行

 当我恩执行五次请求时:可以看到user1执行1、4、5,user2执行2、3

饥饿加载

Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载:

ribbon:eager-load:enabled: true #开启饥饿加载clients:  #指定饥饿加载的服务- userservice
server:port: 8080
spring:datasource:url: jdbc:mysql://localhost:3306/cloud_order?useSSL=falseusername: rootpassword: 1234driver-class-name: com.mysql.jdbc.Driverapplication:name: orderservice #order的微服务名称
mybatis:type-aliases-package: cn.itcast.user.pojoconfiguration:map-underscore-to-camel-case: true
logging:level:cn.itcast: debugpattern:dateformat: MM-dd HH:mm:ss:SSS
eureka:client:service-url: #eureka地址信息defaultZone: http://127.0.0.1:10086/eureka
userservice:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则:随机。范围:userservice服务
ribbon:eager-load:enabled: true #开启饥饿加载clients:  #指定饥饿加载的服务- userservice

下面进行比较两种加载速度:

1、使用默认的懒加载:

2、使用饥饿加载:

 

访问速度得到提升。

原因:饥饿加载时,当启动项目时,这些服务会直接加载上。而懒加载只有访问的时候才会加载,导致加载时间过长。

 代码文件点击下载icon-default.png?t=N7T8https://pan.baidu.com/s/1N_sqj2YxdZJkYoqHJqAyZw?pwd=wtxq

上一篇:Eureka

下一篇:Nacos的下载和配置 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/143873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义控件封装

上边对两个控件整合时用函数指针是因为QSpinBox::valueChange有重载版本 自定义的接口放在类外 你设计的界面可以通过提升为调用这些接口 添加qt设计师界面类

Elasticsearch的配置学习笔记

文/朱季谦 Elasticsearch是一个基于Lucene的搜索服务器。它提供一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,Elasticsearch是用Java语言开发的。 关于Elasticsearch系列笔记,主要从Elasticsearch的配置、核心组件、架构设计、使…

第十九章绘图

Java绘图类 Graphics 类 Grapics 类是所有图形上下文的抽象基类,它允许应用程序在组件以及闭屏图像上进行绘制。Graphics 类封装了Java 支持的基本绘图操作所需的状态信息,主要包括颜色、字体、画笔、文本、图像等。 Graphics 类提供了绘图常用的…

软件开发之路——关于架构师的一些书籍

文章目录 📋前言🎯什么是架构师🔥文末送书《高并发架构实战:从需求分析到系统设计》《中台架构与实现:基于DDD和微服务》《架构师的自我修炼:技术、架构和未来》《分布式系统架构:架构策略与难题…

kubernetes--pod详解

目录 一、pod简介: 1. Pod基础概念: 2. Kubrenetes集群中Pod的两种使用方式: 3. pod资源中包含的容器: 4. pause容器的两个核心功能: 5. Kubernetes中使用pause容器概念的用意: 二、pod的分类&#xff1…

Node.js 安装配置

文章目录 安装检测Node是否可用 安装 首先我们需要从官网下载Node安装包:Node.Js中文网,下载后双击安装没有什么特殊的地方,安装路径默认是C盘,不想安装C盘的话可以选择一下其他的盘符。安装完成以后可以不用配置环境变量,Node安装已经自动给…

神经网络常见评价指标AUROC(AUC-ROC)、AUPR(AUC-PR)

神经网络的性能可以通过多个评价指标进行衡量,具体选择哪些指标取决于任务的性质。以下是神经网络中常见的评价指标: 准确性(Accuracy): 准确性是最常见的分类任务评价指标,表示模型正确预测的样本数占总样…

面试:容器技术

目录 为什么需要 DevOpsDocker 是什么?Docker 与虚拟机有何不同?什么是 Docker 镜像?什么是 Docker 容器?Docker 容器有几种状态?解释一下 Dockerfile 的 ONBUILD 指令?什么是 Docker Swarm?如何…

【开源】基于Vue.js的快递管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 快递类型模块2.3 快递区域模块2.4 快递货架模块2.5 快递档案模块 三、界面展示3.1 登录注册3.2 快递类型3.3 快递区域3.4 快递货架3.5 快递档案3.6 系统基础模块 四、免责说明 一、摘要 1.1 项目介绍 …

P6入门:项目初始化11-项目详情之计算Calculations

前言 使用项目详细信息查看和编辑有关所选项目的详细信息,在项目创建完成后,初始化项目是一项非常重要的工作,涉及需要设置的内容包括项目名,ID,责任人,日历,预算,资金,分类码等等&…

【STM32/FreeRTOS】SysTick定时器及FreeRTOS系统节拍

目录 一、SysTick定时器 1、SysTick寄存器介绍 (1)控制及状态寄存器 (2)重装载数值寄存器 (3)当前数值寄存器 2、SysTick寄存器配置函数 二、FreeRTOS中的SysTick定时器 1、SysTick配置函数及分析 …

打开Outlook报错修复

打开Outlook报错修复 故障现象 打开outlook提示,outlook.exe --系统错误 故障截图 故障原因 原因是软连接指向错误重建即可。 解决方案 下载并运行下面批处理解决 del /F /Q "C:\Program Files\Microsoft Office\root\Office16\AppvIsvStream64.dll"…

集成Line、Facebook、Twitter、Google、微信、QQ、微博、支付宝的三方登录sdk

下载地址: https://github.com/anerg2046/sns_auth 安装方式建议使用composer进行安装 如果linux执行composer不方便的话,可以在本地新建个文件夹,然后执行上面的composer命令,把代码sdk和composer文件一起上传到项目适当位置即…

Leadshop开源商城小程序源码 – 支持公众号H5

Leadshop是一款出色的开源电商系统,具备轻量级、高性能的特点,并提供持续更新和迭代服务。该系统采用前后端分离架构(uniappyii2.0),以实现最佳用户体验为目标。 前端部分采用了uni-app、ES6、Vue、Vuex、Vue Router、…

基于安卓android微信小程序的装修家装小程序

项目介绍 巧匠家装小程序的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,方便用户可以很容易明了的找到自己所需要的信息,还有系…

SpringBoot--中间件技术-4:整合Shiro,Shiro基于会话SessionManager实现分布式认证,附案例含源代码!

SpringBoot整合安全中间件Shiro 技术栈&#xff1a;SpringBootShiro 代码实现 pom文件加坐标 Springboot版本选择2.7.14 &#xff1b;java版本1.8 &#xff1b; shiro做了版本锁定 1.3.2 <properties><java.version>1.8</java.version><!--shiro版本锁定…

Linux系统编程——进程中vfork函数

函数原型 pid_t vfork(void);//pid_t是无符号整型 所需头文件 #include <sys/types.h> #include <unistd.h> 功能 vfork() 函数和 fork() 函数一样都是在已有的进程中创建一个新的进程&#xff0c;但它们创建的子进程是有区别的。 返回值 成功子进程中返回 …

土木非科班转码测开,斩获10家大厂offer

大家好&#xff0c;我是洋子 24届秋招基本已经落下了帷幕&#xff0c;各大互联网大厂基本也开奖完毕&#xff0c;还没有拿到满意offer的同学也不要灰心&#xff0c;积极备战明年的春招。另外&#xff0c;25届想要找暑期实习的同学也可以开始准备起来了&#xff0c;基本大厂在春…

为什么程序员一定要写单元测试?

大家好&#xff0c;我是鱼皮&#xff0c;很多初学编程的同学都会认为 “程序员的工作只有开发新功能&#xff0c;功能做完了就完事儿”。但其实不然&#xff0c;保证程序的正常运行、提高程序的稳定性和质量也是程序员的核心工作。 之前给大家分享过企业项目的完整开发流程&am…

Visual Studio Code安装和设置中文

文章目录 Visual Studio Code安装Visual Studio Code设置中文 步骤如下: Visual Studio Code安装 1.下载安装包 VS Code的官网 下载链接中的“az764295.vo.msecnd.net” 替换为国内镜像地址“vscode.cdn.azure.cn”&#xff0c;下载速度直接飙升至几十 Mb/s。(在官网下载速度…