5.注册中心的其他实现-Nacos

news2024/11/13 9:31:25

文章目录

  • 1.Nacos简介
  • 2.Nacos的安装
    • 2.1Nacos Windows本地启动不成功?
    • 2.2Linux环境下载并启动
  • 3. Nacos的使用
  • 4.Nacos的负载均衡
  • 5.Nacos 健康检查
  • 6.Nacos 环境隔离
  • 7.Nacos 配置中心
    • 7.1为什么需要配置中心
    • 7.2 Nacos配置中心使用
    • 7.3 Data id
    • 7.4Nacos 上Linux部署服务
    • 7.5 Nacos 和 Eureka的区别

大家好,我是晓星航。今天为大家带来的是 注册中心的其他实现-Nacos 相关的讲解!😀

1.Nacos简介

Nacos 是一个动态服务发现、配置和服务管理平台,提供注册中心、配置中心和动态DNS 服务三大功能。它是阿里巴巴开源的一款集成了动态服务发现、配置管理和服务管理功能的平台,旨在简化分布式系统开发和运维过程中服务发现与配置管理的复杂性。Nacos 是构建以“服务"为中心的现代应用架构的服务基础设施。

Nacos(Dynamic Naming and Configuration Service)

2.Nacos的安装

Nacos安装官网

image-20240531164437264

下载好后,解压

image-20240531164914567

目录介绍

image-20240531164608792

bin目录下脚本介绍

image-20240531164617219

最后将我们压缩包文件拖进虚拟机就可以

2.1Nacos Windows本地启动不成功?

Nacos默认启动模式默认是集群模式

image-20240531223700948

找到启动脚本,使用编辑器打开(可以是记事本也可以是vscode等编辑器)

image-20240531223801584

找到模式选择的地方

image-20240531224023723

更改为单机模式,然后保存关闭

image-20240531224110508

此时再次双击启动脚本会发现,我们的Nacos就启动成功了,并且端口为8848

image-20240531224232196

然后打开浏览器,通过网页访问:

image-20240531224402546

出现上图页面即代表我们启动成功了

如果是端口号占用打不开的话,我们可以选择更改Nacos的端口号

image-20240531225004012

使用记事本打开上图文件

image-20240531225102539

更改23行的端口号并保存,我们Nacos便会更改启动端口号

2.2Linux环境下载并启动

进入src文件夹再进行拖拽上传

cd /usr/local/src

image-20240531225758781

直接将本地的Nacos压缩包拖到Linux虚拟机上即可

image-20240531225554465

上传完毕后执行解压命令

unzip nacos-server-2.2.3.zip

image-20240531225909203

解压完毕后我们通过ls命令查看一下

然后进入bin目录,启动Nacos

cd bin/

sh startup.sh -m standalone

image-20240531230407277

我们先去/nacos/conf/目录中的application.properties文件中查看一下端口号

vim application.properties

使用上面代码即可进入查看,按一下i就能编辑然后可以上下查阅。退出按一下esc并输入:wq保存。

image-20240531232124174

从上面日志可以看到我们这里的端口号为8848,但是我们直接访问是不能成功的,我们要先去云服务器上添加一个放行端口8848才能成功访问。

image-20240531232448548

博主使用的是腾讯云,这里就是拿腾讯云的添加放行端口来举例。

然后我们输入Linux虚拟机ip加端口号的方式访问一下Nacos页面

ip:8848/nacos

image-20240531232542360

出现上图即代表我们Linux上也安装成功了

3. Nacos的使用

1.引入spring-cloud-alibaba的依赖

image-20240601203236114

2.引入Nacos相关的依赖(引入Nacos依赖以及Loadbalance依赖)

image-20240601203428645

image-20240601203519099

3.修改配置

image-20240601203941017

image-20240601204011402

4.远程调用

image-20240601204203226

image-20240601204247239

5.测试

image-20240601211235106

image-20240601213002348

如果服务挂不上去可能是因为alibab版本问题导致的,更改版本为适配的版本就可以了

4.Nacos的负载均衡

开启Nacos的负载均衡策略

#开启nacos的负载均衡策略
spring.cloud.loadbalancer.nacos.enabled=true

spring:
  cloud:
    loadbalancer:
      nacos:
        enabled: true

image-20240601214310720

4.1同级群优先访问

image-20240601231233209

同机房优先访问

image-20240601231420451

例如这里设置机房就为北京机房,我们服务会优先访问北京机房

1.服务上线/下线

2.服务配置权重(非严格)

3.同集群优先访问

上述2,3需要开启Nacos负载均衡才有效果

5.Nacos 健康检查

Nacos 健康检查机制

客户端主动上报机制:

  • 客户端通过心跳上报方式告知服务端(nacos注册中心)健康状态,默认心跳间隔5秒
  • nacos会在超过15秒未收到心跳后将实例设置为不健康状态,超过30秒将实例删除

临时实例

服务器端反向探测机制:

  • nacos主动探知客户端健康状态,默认间隔为20秒
  • 健康检查失败后实例会被标记为不健康,不会被立即删除.

非临时实例,永久实例

image-20240601233309603

服务节点,默认为临时实例
临时实例采用客户端主动上报
非临时实例采用的是服务器反向探测

Nacos会记录每一个实例的IP,端口号以及实例类型
不允许 临时实例改为非临时实例,非临时实例也不允许改为临时实例
如果需要修改,需要删除掉nacos 的相关数据信息

1.停止nacos
2.删除数据信息 data\protocol\raft
3.重启nacos

image-20240601233839509

可以看到虽然这里的临时实例和健康状态都为false,但是他没有下线

6.Nacos 环境隔离

1.开发环境

2.测试环境

3.预发布环境

4.发布环境

预发布环境 和 发布环境 都是正式环境,通常情况下,配置,数据库都是一样的。区别就是:预发布环境不对外,发布环境对外,外面的用户可以访问到

image-20240601234710722

在新增完分组空间后,我们去配制管理里面查看一下

image-20240601234800610

发现我们这里确实新增了我们刚添加的分组,之后配置管理的时候分类管理便成功了。

7.Nacos 配置中心

7.1为什么需要配置中心

当前项目的配置都在代码中,会存在以下问题:

  1. 配置文件修改时,服务需要重新部署,微服务架构中,一个服务可能有成百个实例,挨个部署比较麻烦,且容易出错.
  2. 多人开发时,配置文件可能需要经常修改,使用同一个配置文件容易冲突

配置中心就是对这些配置项进行统一管理.通过配置中心,可以集中查看,修改和删除配置,无需再逐个修改配置文件.提高效率的同时,也降低了出错的风险.

image-20240601235745316

7.2 Nacos配置中心使用

1.添加配置

image-20240604173907519

image-20240604173934114

2.引入依赖

image-20240604174049732

3.修改配置文件

image-20240604174359675

编写程序,运行使用

image-20240604190048738

注:这里的@RefreshScope作用是让我们的程序能实时更新

image-20240604190835656

7.3 Data id

image-20240604191300165

优先级排序:

image-20240604192119549

7.4Nacos 上Linux部署服务

1.修改相关配置,并进行本地测试

2.打包,上传到服务器

3.启动Nacos

4.测试

7.5 Nacos 和 Eureka的区别

共同点:

  • 都支持服务注册和服务拉取

区别:

1.功能

Nacos除了服务发现和注册之外,还提供了配置中心,流量管理和DNS服务等功能.

2.CAP理论

Eureka遵循AP原则,Nacos可以切换AP和CP模式,默认AP.

Nacos 根据配置识别CP或者AP模式.如果注册Nacos的Client的节点是临时节点,那么Nacos对这个
Client节点的效果就是AP,反之是CP.AP和CP可以同时混合存在:

3.服务发现

Eureka:基于拉模式.Eureka Client会定期从Server拉取服务信息,有缓存,默认每30秒拉取一次.

Nacos:基于推送模式.服务列表有变化时实时推送给订阅者,服务端和客户端保持心跳连接

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘

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

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

相关文章

鹰眼应急实时三维重建装备,高质量交付中!

在《2024年地方应急管理科技信息化任务书》的指导和应急管理万亿国债支撑下,全国各地正积极推进应急管理现代化建设,全力提升“数据汇聚服务能力、监测预警能力、指挥调度能力、支撑保障能力”四项应急管理能力。 制定标准化流程规范,保障交…

计算机毕业设计选题推荐-茶园茶农文化交流平台-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

分组密码的模式AES-CBC模式流程解析附:应用代码实现

CBC模式:Cipher Block Chaining mode(密码分组链接模式) CBC模式的加解密 CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。密文分组像链条一样相互连接在一起。 CBC模式的加密流程图 CBC模式的解密流程图 将一个分…

使用 `wget` 和 `curl` 命令行工具的全面指南

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

3.3 语法规则

🎓 微机原理考点专栏(通篇免费) 欢迎来到我的微机原理专栏!我将帮助你在最短时间内掌握微机原理的核心内容,为你的考研或期末考试保驾护航。 为什么选择我的视频? 全程考点讲解:每一节视频都…

Oracle RAC关于多节点访问同一个数据的过程

一、说明 Oracle RAC 存在多个计算节点,但是使用的共享存储。那么多个节点共同访问同一个资源,怎么保证一致性。 白文的逻辑理解简述: 用户1访问rac1 ,通过rac1获取AA数据块后,会加上latch锁。用户2通过rac2访问AA数据…

union不能被初始化由于有 non-trivial构造函数

背景 最近遇到一个问题&#xff0c;当定义一个union的时候&#xff0c;发现初始化失败&#xff0c;具体如下&#xff1a; class NonTrivial { public:NonTrivial(const std::string& s) : data(s) {std::cout << "NonTrivial constructed with " <<…

嵌入式OTG硬件电路分析

大家好,今天主要给大家分享一下,如何使用OTG硬件检测电路,和之前的接口有什么区别。 1. OTG接口与转换器 OTG是"On The Go"的英文缩写,字面上可以理解为“安上即可用”。USB传输是主从结构,一切USB传输都有Host发起。比如在开发板上可以插入U盘,这时开发板作为…

计算机毕业设计选题推荐-店铺租赁平台-商铺租赁系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

【简历】25届武汉某二本JAVA简历:项目描述真是难为学生想这么偏

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这是一份 25 届武汉某二本学校的JAVA简历。校招第一要点是上来必须先确定自己的求职层次&#xff0c;大中小厂要求不一样。二本同学主体…

Day 10-11:函数、函数传参

基本用法以及传参 基本用法 调用 1.无返回值函数调用 #include<stdio.h> #pragma warning(disable:4996); void my_helloworld() {printf("hello world!"); } int main() {my_helloworld();return 0; } //输出结果&#xff1a;hello world&#xff01;2.实际…

Leetcode每日刷题之438.找到字符串中所有字符异位词

1.题目解析 本题的题目要求是给定一个长字符串s与一个较短字符串p&#xff0c;判断s中是否有一段与p长度相同的字符串是由p打乱而得来&#xff0c;即为异位词&#xff0c;然后返回其开始位置下标&#xff0c;遍历s字符串中所有满足条件字符串的起始位置下标 2.算法原理 我们将p…

android AccessibilityService合法合规采集大众点评app商店商品详情(2024-09-02)

免责任声明: 任何可操作性的内容与本人无关,文章内容仅供参考学习&#xff0c;如有侵权损害贵公司利益&#xff0c;请联系作者&#xff0c;会立刻马上进行删除。 一、原理介绍 1、打开大众点评app商店 public void open_shop(Context context,String shop_id){String url"…

ARM基础知识---CPU---处理器

目录 一、ARM架构 1.1.RAM---随机存储器 1.2.ROM---只读存储器 1.3.flash---闪存存储器 1.4.时钟&#xff08;振晶&#xff09; 1.5.复位 二、CPU---ARM920T 2.1.R0~R12---通用寄存器 2.2.PC程序计数器 2.3.LR连接寄存器 2.4.SP栈指针寄存器 2.5.CPSR当前程序状态寄存…

【MySQL进阶】索引性能分析

1. 索引语法 创建索引&#xff1a; ​ 语法格式&#xff1a;create [unique|fulltext] index index_name on table_name(index_col_name...); 查看索引&#xff1a; ​ 语法格式&#xff1a;show index from table_name; 删除索引&#xff1a; ​ 语法格式&#xff1a;dr…

Spring Boot实现License生成和校验

1.License应用场景 在我们向客户销售商业软件的时候&#xff0c;常常需要对所发布的软件实行一系列管控措施&#xff0c;诸如验证使用者身份、软件是否到期&#xff0c;以及保存版权信息和开发商详情等。考虑到诸多应用场景可能处于离线环境&#xff0c;无法依赖网络进行实时认…

5.数据结构-c/c++二叉树详解(上篇)(遍历方法,完全二叉树)

目录 一. 二叉树的基本介绍 1.2 满二叉树 1.3 完全二叉树 1.4 搜索二叉树 1.5 平衡二叉搜索树 二. 二叉树的常用操作 2.1 二叉树的定义 2.2 创建一个新的节点 2.3 构建一颗树 2.5 销毁一棵树 三.二叉树的前序&#xff0c;中序&#xff0c;后序&#xff0c;层序遍历方…

day-47 子集

思路 利用深度优先遍历算法&#xff0c;对于每个数有选或不选两种抉择&#xff0c;每次遍历到idslen时将p加入答案中 解题过程 选中当前数字&#xff0c;调用dfs函数之后记得还原 Code class Solution {public int len;public List<List<Integer>> listnew Arra…

51单片机的智能台灯设计【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块DS1302时间模块光敏传感器模块人体红外模块按键等模块构成。适用于智能台灯、自动调节灯光亮度等相似项目。 可实现基本功能: 1、LCD1602实时显示北京时间、环境光照强度、手动/自动模式、台灯亮度等信息&#xff1…

笔记整理—uboot番外(1)命令体系

在uboot启动进行命令行的环境下&#xff0c;当输入命令时&#xff0c;将会对命令进行先解析后执行的操作。 uboot/common/cmd_xxx.c 其中就有多个命令体系&#xff08;mian.c和commann.c&#xff09; uboot每个命令都对应了一个相关的函数&#xff0c;由此实现的命令体系与…