微服务入门篇:Nacos注册中心(Nacos安装,快速入门,多级存储,负载均衡,环境隔离,配置管理,热更新,集群搭建,nginx反向代理)

目录

  • 1.Nacos安装
    • 1.官网下载
    • 2.解压到本地
    • 3.启动nacos
  • 2.Nacos快速入门
    • 1.在父工程中导入nacos依赖
    • 2.给子项目添加客户端依赖
    • 3.修改对应服务的配置文件
    • 4.启动服务,查看nacos发现情况
  • 3.Nacos服务多级存储模型
  • 4.NacosRule负载均衡
  • 5. 服务实例的权重设置
  • 6.环境隔离(namespace)
  • 7.Nacos和Eureka的对比
    • 1.临时实例和非临时实例
    • 2.Nacos与eureka的共同点
    • 3.Nacos与Eureka的区别
  • 8.Nacos配置管理
    • 1.统一配置管理
    • 2.配置热更新
    • 3.多环境配置共享
    • 4.搭建Nacos集群
    • 5.nginx反向代理

1.Nacos安装

1.官网下载

网址:https://github.com/alibaba/nacos/releases/tag/1.4.1
这里下载nacos1.4.1的Windows版本为例

在这里插入图片描述

2.解压到本地

注:解压到非中文目录

在这里插入图片描述

nacos默认端口号:8848,可在配置文件properties中修改

在这里插入图片描述

3.启动nacos

G:\SpringCloud\nacos\bin目录下打开命令行:

输入指令(使用单机模式启动):

startup.cmd -m standalone

在这里插入图片描述
访问上述nacos网页端地址:默认账号密码均为nacos
在这里插入图片描述
在这里插入图片描述

2.Nacos快速入门

1.在父工程中导入nacos依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.5.RELEASE</version><type>pom</type><scope>import</scope>
</dependency>

在这里插入图片描述

2.给子项目添加客户端依赖

<!-- nacos客户端依赖包 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

在这里插入图片描述

3.修改对应服务的配置文件

在这里插入图片描述

4.启动服务,查看nacos发现情况

在这里插入图片描述

3.Nacos服务多级存储模型

服务调用尽可能选择本地集群的服务,跨集群调用延迟较高本地集群不可访问时,再去访问其它集群。
Nacos服务多级存储模型是指在Nacos服务注册与发现系统中,数据可以被存储在多个级别的存储介质中。
①一级是服务
②二级是集群
③三级是实例

Nacos服务注册与发现系统主要有三个核心功能,即服务注册、服务发现和配置管理
这些功能所涉及到的数据可以被存储在多级存储介质中,以提高数据的可靠性和可扩展性。

Nacos支持以下多级存储模型:

  1. 内存存储:Nacos将数据存储在内存中,以提高数据的读写性能。这是最快速的数据存储方式,适用于临时数据和高频访问的数据。

  2. 本地文件存储:Nacos可以将数据存储在本地文件系统中,以实现数据的持久化。这样即使Nacos服务重启,数据也能被恢复。本地文件存储适用于小规模数据的场景。

  3. 分布式存储:Nacos还支持将数据存储在分布式存储系统中,如MySQL、Redis、Zookeeper等。这可以提供更高的数据可靠性和可扩展性。分布式存储适用于大规模数据的场景,可以通过分片和副本来实现数据的高可用和负载均衡。

通过多级存储模型,Nacos可以根据数据的特性和需求,选择合适的存储介质来存储数据。
这样可以在提供良好的读写性能的同时,保证数据的可靠性和可扩展性。

如何设置实例的集群属性?

运行时环境配置:在Nacos服务的运行环境中,可以通过修改application.yml文件来进行配置。
找到以下属性并进行修改:

在这里插入图片描述

4.NacosRule负载均衡

在order-service中设置负载均衡的IRule为NacosRule,这个规则优先会寻找与自己同集群的服务:
①优先选择同集群服务实例列表
②本地集群找不到提供者,才去其它集群寻找,并且会报警告
③确定了可用实例列表后,再采用随机负载均衡挑选实例

在这里插入图片描述

5. 服务实例的权重设置

实际部署中会出现这样的场景:
服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求.

Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高.

1.在Nacos控制台可以设置实例的权重值,首先选中实例后面的编辑按钮
在这里插入图片描述

2.将权重设置为0.1,测试可以发现8081被访问到的频率大大降低

在这里插入图片描述

实例的权重控制
①Nacos控制台可以设置实例的权重值,0~1之间
②同集群内的多个实例,权重越高被访问的频率越高
③权重设置为0则完全不会被访问

6.环境隔离(namespace)

Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离.

1.新建命名空间
在这里插入图片描述
2.查看新增的id
在这里插入图片描述
3.修改服务的yml文件后重启服务
在这里插入图片描述
4.查看效果
在这里插入图片描述

①namespace用来做环境隔离
②每个namespace都有唯一id
③不同namespace下的服务不可见

7.Nacos和Eureka的对比

1.临时实例和非临时实例

服务注册到Nacos时,可以选择注册为临时或非临时实例,通过下面的配置来设置:

在这里插入图片描述

2.Nacos与eureka的共同点

①都支持服务注册和服务拉取
②都支持服务提供者心跳方式做健康检测

3.Nacos与Eureka的区别

①Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
②临时实例心跳不正常会被剔除,非临时实例则不会被剔除
③Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
④Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

8.Nacos配置管理

1.统一配置管理

新建配置:
在这里插入图片描述
填写配置信息:
在这里插入图片描述
1.引入Nacos的配置管理客户端依赖:
在这里插入图片描述

2. 在userservice中的resource目录添加一个bootstrap.yml文件,这个文件是引导文件,优先级高于application.yml:
在这里插入图片描述
配置接口,读取nacos中的配置信息
在这里插入图片描述

访问接口:
在这里插入图片描述

2.配置热更新

Nacos中的配置文件变更后,微服务无需重启就可以感知。
不过需要通过下面两种配置实现:·

方式一:在@Value注入的变量所在类上添加注解@RefreshScope
在这里插入图片描述
在这里插入图片描述
方式二:使用@ConfigurationProperties注解
新建配置类:
在这里插入图片描述
配置接口信息:
在这里插入图片描述

注意事项:
①不是所有的配置都适合放到配置中心,维护起来比较麻烦
②建议将一些关键参数,需要运行时调整的参数放到nacos配置中心,一般都是自定义配置

3.多环境配置共享

新建配置:
在这里插入图片描述
添加新属性:
在这里插入图片描述
添加测试接口:
在这里插入图片描述
修改服务2为测试环境,即只能读到共享环境:
在这里插入图片描述
重启查看访问效果:
在这里插入图片描述
在这里插入图片描述
证明user service.yaml被多个环境所共享

多种配置的优先级:

在这里插入图片描述

4.搭建Nacos集群

进入nacos的conf目录,修改配置文件cluster.conf.example,重命名为cluster.conf:
在这里插入图片描述
添加内容:
在这里插入图片描述
然后修改application.properties文件,添加数据库配置:
在这里插入图片描述
将nacos文件夹复制三份,分别命名为:nacos1、nacos2、nacos3

在这里插入图片描述
然后分别修改三个文件夹中的application.properties中的端口号为8085,8086,8087

分别在各个文件夹的bin目录下打开命令行:

startup.cmd

启动集群:
在这里插入图片描述

5.nginx反向代理

解压nginx安装包到任意非中文目录下:
在这里插入图片描述
修改conf/nginx.conf文件,添加配置如下:
在这里插入图片描述
启动nginx:
在这里插入图片描述
登录到nacos
在这里插入图片描述
修改user服务配置信息:
在这里插入图片描述
启动服务,查看实例:
在这里插入图片描述
新增共享环境配置:
在这里插入图片描述

查看数据库持久化存储:
在这里插入图片描述

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

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

相关文章

PDF控件Spire.PDF for .NET【安全】演示:检测 PDF 文档是否受密码保护

Spire.PDF for .NET 是一款独立 PDF 控件&#xff0c;用于 .NET 程序中创建、编辑和操作 PDF 文档。使用 Spire.PDF 类库&#xff0c;开发人员可以新建一个 PDF 文档或者对现有的 PDF 文档进行处理&#xff0c;且无需安装 Adobe Acrobat。 E-iceblue 功能类库Spire 系列文档处…

2024数学建模美赛F题Reducing Illegal Wildlife Trade原创论文讲解(含完整python代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了数学建模美赛本次F题目非法野生动物贸易完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 F题论文共42页&…

Qt|实现时间选择小功能

在软件开发过程中&#xff0c;QtDesigner系统给出的控件很多时候都无法满足炫酷的效果&#xff0c;前一段时间需要用Qt实现选择时间的小功能&#xff0c;今天为大家分享一下&#xff01; 首先看一下时间效果吧&#xff01; 如果有需要继续往下看下去哟~ 功能 1&#xff1a;开…

‘javax.sql.DataSource‘ that could not be found的问题

报错信息如下&#xff1a; 2024-02-04 16:31:14.832 WARN 952 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDepen…

Leetcode—38. 外观数列【中等】

2024每日刷题&#xff08;111&#xff09; Leetcode—38. 外观数列 实现代码 class Solution { public:string countAndSay(int n) {string ans "1";while(--n) {string next;for(int i 0; i < ans.size(); i) {int cnt 1;char c ans[i];while(i 1 < an…

【算法与数据结构】647、516、LeetCode回文子串+最长回文子序列

文章目录 一、647、回文子串二、516、最长回文子序列三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、647、回文子串 思路分析&#xff1a;判断一个字符串是否为回文串那么必须确定回文串的所在区间&#xff0c;而一维…

【RK3288 Android6 T8, 突然无声音问题排查】

文章目录 【RK3288 Android6 T8, 突然无声音问题排查】问题描述问题调查patch【RK3288 Android6 T8, 突然无声音问题排查】 问题描述 页面上方突然出现音量进度条,小铃铛图标显示静音状态,不再播报语音 手动去安卓设置内查看,小铃铛音量为0,手动恢复到有声音后继续执行…

Redis -- set集合

挑战自己&#xff0c;每天进步一点点&#xff0c;成就将属于不停止脚步的你。 目录 Redis集合&#xff1f; 集合基本命令 sadd smembers sismember scard spop srandmember smove srem 集合间操作 sinter sinterstore sunion sdiff sdiifstore Redis集合&#…

【Linux】EXT2文件系统 | 磁盘分区块组 | inode

文章目录 一、前言二、EXT2文件系统 - 逻辑存储结构&#x1f4be;分区&#xff08;Partition&#xff09;分区的概念每个分区的内容Linux下查询磁盘分区 &#x1f4be;块组&#xff08;Block Group&#xff09;磁盘格式化每个块组的内容1. Superblock&#xff08;超级块&#x…

【Delphi 基础知识 28】ListView控件的详细使用

文章目录 控件设置增加数据删除选中的行按标题删除读取某行某列内容修改某行某列内容清空内容设置焦点上下移动条目读出选中行信息点击正反排序每行item显示不一样的颜色 控件设置 ViewStyle 设为vsReportReadOnly 设为TrueGridLines 设为TrueRowSelect 设为True 增加数据 …

《Redis核心技术与实战》学习笔记0——开篇词 | 这样学Redis,才能技高一筹

开篇词 | 这样学Redis&#xff0c;才能技高一筹 文章目录 开篇词 | 这样学Redis&#xff0c;才能技高一筹为什么懂得了一个个技术点&#xff0c;却依然用不好 Redis&#xff1f; 作为键值数据库&#xff0c;Redis 的应用非常广泛&#xff0c;如果你是后端工程师&#xff0c;我猜…

RCS-YOLO复现

复现结果–Precision&#xff1a;0.941&#xff0c;Recall&#xff1a;0.945&#xff0c;AP 50 _{50} 50​&#xff1a;0.941&#xff0c;AP 50 : 95 _{50:95} 50:95​&#xff1a;0.693&#xff0c;误差在5个点内&#xff0c;可以接受 感想 第5篇完全复现的论文

Palworld幻兽帕鲁自建服务器32人联机开黑!

玩转幻兽帕鲁服务器&#xff0c;阿里云推出新手0基础一键部署幻兽帕鲁服务器教程&#xff0c;傻瓜式一键部署&#xff0c;3分钟即可成功创建一台Palworld专属服务器&#xff0c;成本仅需26元&#xff0c;阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

「Kafka」消费者篇

「Kafka」消费者篇 Kafka 消费方式 Kafka 消费者工作流程 消费者总体工作流程 新版本&#xff08;0.9之后&#xff09;的 offset 保存在 kafka 的 Topic 里&#xff0c;持久化到磁盘&#xff0c;可靠性有保障。 老版本&#xff08;0.9之前&#xff09;的 offset 保存在 Zook…

uniapp中配置开发环境和生产环境

uniapp在开发的时候&#xff0c;可以配置多种环境&#xff0c;用于自动切换IP地址&#xff0c;用HBuilder X直接运行的就是开发环境&#xff0c;用HBuilder X发布出来的&#xff0c;就是生产环境。 1.使用HBuilder X创建原生的uniapp程序 选择vue3 2.什么都不改&#xff0c;就…

机器学习复习(8)——基本概念

目录 "benchmark"和"baseline"的定义和区别 R1 score概念 LoRA微调概念 "benchmark"和"baseline"的定义和区别 在计算机视觉领域的论文中&#xff0c;"benchmark"和"baseline"这两个术语经常被使用&#xff0…

一文讲透ast.literal_eval() eval() json.loads()

文章目录 一文讲透ast.literal_eval() eval() json.loads()1. ast.literal_eval()2. eval()3. json.loads()4. 总结 一文讲透ast.literal_eval() eval() json.loads() 在Python库中&#xff0c;我们经常会遇到需要将字符串转换为相应对象或数据结构的情况。在这种情况下&#…

ShardingSphere 5.x 系列【5】Spring Boot 3 集成并实现读写分离

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 使用限制3. 案例演示3.…

ReactNative实现文本渐变

我们直接上图&#xff0c;可以看到上面文本的效果&#xff0c;使用SVG实现 1.首先还是要引入react-native-svg库 2.使用该库下面的LinearGradient和Text 好&#xff0c;话不多说&#xff0c;我们看具体代码 <Svg width{422} height{30} viewBox{0 0 422 30}><Defs&…

linux i2c驱动实例之ISL29035

目录 概述 1 认识ISL29035 1.1 ISL29035特征 1.2 ISL29035工作电路 1.3 ISL29035工作时序分析 1.4 ISL29035相关的寄存器 1.4.1 COMMAND-1( 0x00 ) 1.4.2 COMMAND-11&#xff08;0x01&#xff09; 1.4.3 DATA寄存器&#xff08;0x02和0x03&#xff09; 1.4.4 中断报警…