Ribbon负载均衡+Nacos服务搭建

news2024/11/25 1:23:45

Ribbon负载均衡

流程

首先通过RibbonLoadBalanceerClient获取服务名,并传给DynamicServerListLoadBalancer——>通过EureKa-server获取服务名对应服务列表(也就是被注册到EureKa中的服务,可能包括不同端口的),然后我们会根据IRule中的服务负载均衡->选择某个服务,然后修改url发送请求;

在这里插入图片描述

具体实现

Ribbon的负载均衡是一个叫IRule的接口来定义的,每一个子接口对应一个规则
在这里插入图片描述

负载均衡策略:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
负载均衡配置的两种方式

1.一种是在配置类中注入bean,返回一个IRule规则——>具体是什么样的规则(RandomRule啥的)自己定义;

2.第二种再yaml中进行配置:定义目标服务,以及对应的负载均衡策略

区别:第一个范围是此服务中的所有服务,范围是全局,第二个指定了具体服务;

在这里插入图片描述

饥饿加载:

如果用懒加载:就是它不会像饥饿那种,类一加载,就全创建好了(在类加载的准备阶段就整好了),而是调用方法,也就是需要创建的时候,它才会创建;——>耗时较长

在这里插入图片描述

Nacos服务搭建

在这里插入图片描述
在这里插入图片描述

里面可以对服务进行注册与发现

在这里插入图片描述

对于EureKa的改动,我们需要修改依赖,并且注释原本在order-service以及user-service服务中的原有的EureKa-client依赖,并添加nacos依赖

服务注册到Nacos步骤

1.首先在父工程中导入alibaba的cloud依赖

  <!--nacos管理依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
            </dependency>

2.然后在服务项目中配置Nacos注册依赖(注册发现服务的依赖)

 <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.5.RELEASE</version>
        </dependency>

3.在yaml中进行配置,配置映射,服务名称,以及对应的Nacos服务端口

 application:
    name: orderservice # user的服务名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址

在这里插入图片描述

配置搭建总结

在这里插入图片描述

服务多级存储(给服务的实例配置集群):

引:为了给服务减轻压力,我们可以给服务的实例们(8081、8082…)配置集群->杭州集群,上海集群等等…

给服务实例配置集群

在这里插入图片描述
1.修改yaml文件,给Nacos的配置加上cluster节点名称即可

cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址
        cluster-name: hangzhou # 集群名称

2.然后给对应的实例进行启动即可,(不要启动错了,不然会覆盖之前的集群名称)

在这里插入图片描述
在这里插入图片描述

集群调用问题:

服务调用尽可能选择本地集群的服务,不然延迟会很高

在这里插入图片描述

Nacos负载均衡-实现集群优先

在这里插入图片描述
步骤:

在yaml文件中对需要调用服务采用Nacos负载均衡策略,然后重启即可

userservice: #指定服务
  ribbon: # 配置负载均衡策略
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule

策略:优先本地集群,如果没有的话,就随机;

在这里插入图片描述
在这里插入图片描述

如果没有本地集群,说明只能跨集群调用服务——>(耗时较长,毕竟调用的服务在另一个地方),会出现警告

在这里插入图片描述

服务实例权重的配置

在这里插入图片描述
直接在Nacos页面对服务实例修改权重即可

在这里插入图片描述

场景:服务怎样做到用户不下线,还能升级服务?

在产品更新时,我们可以对一个服务实例的权重降到很低,那么用户请求就很难请求到这个服务上了,那么我们就可以对其进行升级,升级完毕后,再将权重慢慢调大,这样就可以满足用户,也可以满足服务;

nacos环境隔离

没设置命名空间的时候,默认是public;

如果环境设置不一样,那么服务之间就不能进行访问;(实例找不到->也就是userservice服务实例);

每个namespace的id是唯一的;

配置方法:

1.在yaml配置文件加上namespace命名空间即可(先得在Nacos中创建环境)

  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址
        cluster-name: Hangzhou # 实例集群
        namespace:xxxx

在这里插入图片描述
在这里插入图片描述

Nacos和EureKa的总结区别:

共同:它们都是向注册中心拉取服务信息,但是第一次会将服务信息放到服务的列表缓存中,下次拉取就直接从服务列表缓存中拿就行了,速度较快;

在这里插入图片描述
Nacos:

临时实例:采用心跳检测,服务实例主动向注册中心汇报自己饿的情况(这里Nacos和EureKa都差不多,但是Nacos速度较快);
(个人认为 不管是临时实例还是非临时实例挂了 Nacos都会将健康状态发送给消费者 ,,,个人猜测 也没找到资料 有大佬知道的话可以指出来 谢谢)

非临时实例:*Nacos会主动询问实例是否还存在(如果不存在)——>Nacos注册中心会立即主动推送变更消息:效率非常高;——>坏处:服务器压力会大,因为总是对服务进行访问

在这里插入图片描述
区别:
Nacos支持服务端主动检测服务提供者状态:临时实例采用心跳模式,非临时实例采用服务器主动访问模式;
临时实例心跳不正常会被踢出,非临时实例则不会被剔除;
Nacos支持服务列表消息推送模式,即时更新;

**补充(6/1)nacos、EureKa涉及ap、cp模式**

cp和ap 是什么 有什么区别

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

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

相关文章

学习pytorch9 神经网络-卷积层

神经网络-卷积层 官网卷积数据公式参数说明卷积运算演示输入输出channel代码**注意点&#xff1a;**code 执行结果 官网 https://pytorch.org/docs/stable/nn.html#convolution-layers 图像识别常用conv2d 二维卷积 nn.Conv2d https://pytorch.org/docs/stable/generated/torch…

文件包含漏洞学习小结

目录 一、介绍 二、常见文件包含函数 三、文件包含漏洞代码举例分析 四、文件包含漏洞利用方式 4.1 本地文件包含 1、读取敏感文件 2、文件包含可运行的php代码 ①包含图片码 ②包含日志文件 ③包含环境变量getshell ④临时文件包含 ⑤伪协议 4.2 远程文件包含 4.…

【学习笔记】C++ 中 static 关键字的作用

目录 前言static 作用在变量上static 作用在全局变量上static 作用在局部变量上static 作用在成员变量上 static 作用在函数上static 作用在函数上static 作用在成员函数上 前言 在 C/C 中&#xff0c;关键字 static 在不同的应用场景下&#xff0c;有不同的作用&#xff0c;这…

指针进阶(一)

指针进阶 1. 字符指针面试题 2. 指针数组3. 数组指针3.1 数组指针的定义3.2 &数组名VS数组名 3.3 数组指针的使用4. 数组传参和指针传参4.1 一维数组传参4.2 二维数组传参4.3 一级指针传参4.4 二级指针传参 前言 指针的主题&#xff0c;我们在初级阶段的《指针》章节已经接…

腾讯音乐基于 Apache Doris + 大模型构建全新智能数据服务平台

当前&#xff0c;大语言模型的应用正在全球范围内引发新一轮的技术革命与商业浪潮。腾讯音乐作为中国领先在线音乐娱乐平台&#xff0c;利用庞大用户群与多元场景的优势&#xff0c;持续探索大模型赛道的多元应用。本文将详细介绍腾讯音乐如何基于 Apache Doris 构建查询高效、…

Python之调用shell两种写法(二十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

如何优雅的关闭流

https://blog.csdn.net/zy345293721/article/details/103654745 JDK1.7 开始使用 关闭流使用try-catch-finally 是jdk1.7 之前的语法 try (FileInputStream fis new FileInputStream(srcFile)){fis.read(fileContent);fis.close();} catch (IOException e) {e.printStackTr…

大模型参数高效微调技术原理综述(二)-BitFit、Prefix Tuning、Prompt Tuning

随着&#xff0c;ChatGPT 迅速爆火&#xff0c;引发了大模型的时代变革。然而对于普通大众来说&#xff0c;进行大模型的预训练或者全量微调遥不可及。由此&#xff0c;催生了各种参数高效微调技术&#xff0c;让科研人员或者普通开发者有机会尝试微调大模型。 因此&#xff0c…

【Unity3D】UI Toolkit样式选择器

1 前言 UI Toolkit简介 中介绍了样式属性&#xff0c;UI Toolkit容器 和 UI Toolkit元素 中介绍了容器和元素&#xff0c;本文将介绍样式选择器&#xff08;Selector&#xff09;&#xff0c;主要包含样式类选择器&#xff08;Class Selector&#xff09;、C# 类选择器&#xf…

STM32f103入门(11)DMA直接存储器读取

DMA DMA简介数据转运ADC扫描模式DMADMA ADC 连续单词扫描初始化如下连续循环扫描 DMA简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节省了CPU的资源…

Vue + Element UI 前端篇(三):工具模块封装

Vue Element UI 实现权限管理系统 前端篇&#xff08;三&#xff09;&#xff1a;工具模块封装 封装 axios 模块 封装背景 使用axios发起一个请求是比较简单的事情&#xff0c;但是axios没有进行封装复用&#xff0c;项目越来越大&#xff0c;会引起越来越多的代码冗余&am…

Vue + Element UI 前端篇(七):功能组件封装

组件封装 为了避免组件代码的臃肿&#xff0c;这里对主要的功能部件进行封装&#xff0c;保证代码的模块化和简洁度。 组件结构 组件封装重构后&#xff0c;试图组件结构如下图所示 代码一览 Home组件被简化&#xff0c;包含导航、头部和主内容三个组件。 Home.vue <te…

mysql表操作-约束删除、用户填加、授权和撤权

目录 一、表的约束删除 1.查看所有表的约束条件 2.删除主键 3.删除唯一键 4.删除check键值 5.删除check键值 6.删除not null键值并删除check键值 7.删除键外值 8.检查表的约束条件是否存在 二、设置数据库密码策略 1.查看数据库密码的策略 2.修改数据库密码的长度 …

视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查的相关问题及解决方法2.0

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多…

Leetcode 1572.矩阵对角线元素之和

给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&#xff1a; 输入&#xff1a;mat [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;25 解释&#xff1a;对角线的和为&#xff…

C#使用proto

写多了go代码&#xff0c;被go mod tidy惯坏了&#xff0c;还以为全天下的都很好用呢&#xff0c;结果发现并不是这样。尤其是项目组的proto还是又封了个工具直接就能跑得&#xff0c;导致以为没那么复杂的事情变得复杂了起来。是有两套生成的规则&#xff0c;时间有点晚&#…

【漏洞复现】网御ACM上网行为管理系统bottomframe.cgi接口存在SQL注入漏洞

漏洞描述 网御上网行为管理系统(简称Leadsec ACM)是网御为互联网接入用户在信息内容安全、网络应用管理、组织运营效率、网络资源利用、法律风险规避及网络投资回报等方面提供的全方位解决方案。网御上网行为管理系统存在SQL注入漏洞。 网御 ACM上网行为管理系统 bottomfram…

docker快速安装-docker一键安装脚本

1.下载/配置安装脚本 touch install-docker.sh #!/bin/bash #mail:ratelcloudqq.com #system:centos7 #integration: docker-latestclear echo "######################################################" echo "# Auto Install Docker …

【ABAP】 如何实现点击不同按钮动态显示不同的选择屏幕?(附完整示例代码)

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;阿里云社区专家博主&#xff0c;华为云云享专家&#xff0c;腾讯云社区认证作者&#xff0c;CSDN SAP应用技术领域优质创作者。在学习工作中&#xff0c;我通常使用偏后端的开发语言ABAP&#xff0c;SQL进行任务的完成…

Docker实战:docker compose 搭建Rocketmq

1、配置文件准备 1.1、 新建目录&#xff1a;/home/docker/data/rocketmq/conf mkdir /home/docker/data/rocketmq/conf1.2、 在上面目录下新建文件broker.conf文件&#xff0c;内容如下 brokerClusterName DefaultCluster brokerName broker-a brokerId 0 deleteWhen 0…