微服务-Nacos(注册中心)

news2024/11/16 7:52:09

Nacos是SpringCloud的一个功能非常强大的组件,想比eureka的功能更加丰富

官方的nacos简介

Nacos(全称:Naming and Configuration Service)是一个开源的动态服务发现、配置管理和服务管理平台。它由阿里巴巴集团开发并贡献给开源社区,旨在帮助开发者更好地构建和管理微服务架构。

Nacos提供了以下核心功能:

  1. 服务发现和注册:Nacos充当了服务注册中心的角色,允许开发者方便地注册、发现和管理微服务实例。它使用了一致性哈希算法来实现服务的负载均衡,并提供了多种方式来进行服务的发现和调用。

  2. 动态配置管理:Nacos可以集中管理应用程序的配置信息。开发者可以使用Nacos动态地更新和发布配置,而无需重新部署或重启应用程序。这样可以提高配置的灵活性和可维护性,同时减少了配置管理的复杂性。

  3. 服务健康监测:Nacos可以监测和报告微服务的健康状态。它可以定期进行心跳检查,并通过心跳数据来判断服务是否可用。当某个服务不可用时,Nacos可以及时发出警报,并协助进行故障排查和恢复。

  • 动态路由和负载均衡:Nacos提供了动态路由和负载均衡的功能,使开发者可以灵活地管理和调整请求的路由策略。它支持基于权重、一致性哈希和最少活跃数等多种负载均衡算法,同时也可以与其他开源组件(如Nginx和OpenResty)集成。

        总而言之,Nacos提供了一套完整的微服务基础设施,帮助开发者更好地构建、管理和调整微服务架构。它具有开源、易用、高可用和可扩展等特点,在业界得到了广泛的应用和认可。

Nacos安装

Windows安装

  • 下载安装包

在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:

GitHub主页:https://github.com/alibaba/nacos

GitHub的Release下载页:Releases · alibaba/nacos · GitHub

  • 解压(任意的非中文目录)
  • 端口配置
  • Nacos的默认端口是8848,如果你电脑上的其它进程占用了8848端口,进入nacos的conf目录中进行修改
  • 启动(进入bin目录)

打开cmd执行命令:

startup.cmd -m standalone
  •  访问(http://127.0.0.1:8848/nacos )账号密码都是nacos

Linux安装

  • 安装jdk

在java官网可以下载jdk的jar包,将下载好的jar包上传到某个目录(例如/user/local/)

解压后重命名为java

tar -xvf jdk-8u144-linux-x64.tar.gz

配置环境变量:

export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin

设置环境变量:

source /etc/profile
  • 上传安装包

上传到Linux服务器的某个目录(例如:/user/local/src)

  • 解压

命令解压压缩安装包

tar -xvf nacos-server-1.4.1.tar.gz

删除安装包:

rm -rf nacos-server-1.4.1.tar.gz
  • 端口配置
  • 启动
sh startup.sh -m standalone

SpringCloud引入nacos

1.在父工程中引入对应的依赖:

<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.注释掉原来AB服务中的eureka依赖

3.在nacos客户端引入相应的依赖:

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

4.修改A、B服务中的yml文件,注释掉eureka地址,添加nacos地址

spring:
  cloud:
    nacos:
      server-addr: nacos:8848 # nacos服务地址

总结:

1.Nacos服务搭建

  • 下载安装包
  • 解压
  • 在bin目录下运行指令:startup.cmd -m standalone

2.Nacos服务注册或发现

  • 引入nacos.discovery依赖
  • 配置nacos地址spring.cloud.nacos.server-addr

Nacos服务分级存储模型

 服务集群属性

1.修改对应服务的yml文件,添加如下内容

spring:
  cloud:
    nacos:
      server-addr: nacos:8848 # nacos服务地址
      discovery:
         cluster-name:SM #配置集群名称,也就是说机房的位置

总结:

1.Nacos服务分级存储模型

  • 一级是服务
  • 二级是集群
  • 三级是实例

2.如何设置实例的集群属性

  • 修改对应的yml文件,添加spring.cloud.nacos.discovery.cluster-name属性即可

        在我们生产的过程中,负载均衡肯定是优先找离自己最近的服务(相同的集群),那么我们在Spring中该如何配置去优先寻找与自己同集群的服务呢?

根据集群进行负载均衡

1.修改A服务中的yml文件,设置集群为SM

spring:
  cloud:
    nacos:
      server-addr: nacos:8848 # nacos服务地址
      discovery:
        cluster-name: SM

2.在A服务中设置负载均衡的IRule为NacosRule,这个规则会优先找与自己同集群的服务

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRul

根据权重进行负载均衡

       在实际的应用时,我们会遇到这样的情况,有些服务器设备差,我们希望它承担用户请求少一点,有的服务器设备好,我们希望它承担的用户请求多一点

Nacos支持权重配置来控制访问频率,权重越大则访问频率越高[0,1]

环境隔离-namespace

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

 在Nacos控制台可以创建namespace,用来隔离不同的环境(命名空间->新建命名空间)

 cluster-name: SM
      discovery:
        #命名空间ID
        namespace: 4d6ce343-9e1b-44df-a90f-2cf2b6b3d177 # dev环境
        

每个隔离环境都有唯一的id         不同的环境下的服务互相不可见

Nacos注册中心原理

 我们可以设置该服务是否是临时实例:

spring:
  cloud:
    nacos:
      discovery:
        ephemeral: false # 是否是临时实例

临时实例宕机时,会从nacos的服务列表中剔除,而非临时实例则不会


Nacos和eureka的共同担点:

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

Nacos与Eureka的区别:

  • Nacos支持服务端主动检测提供者的状态:临时实例采用心跳模式,非临时实例采用主动检测模式
  • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
  • Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
  • Nacos集群默认采用的是ap模式(一致性较弱,可用性较强),当集群当存在非临时实例时,采用cp模式(一致性较强,可用性较弱),Eureka采用ap模式

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

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

相关文章

【高危】企业微信私有化2.5-2.6.93版本后台API未授权访问漏洞

漏洞描述 企业微信私有化2.5.x版本及2.6.930000版本以下后台中存在接口未授权访问漏洞&#xff0c;攻击者通过访问/cgi-bin/gateway/agentinfo接口可获得Secret&#xff0c;从而利用开放API获取企业通讯录等敏感信息及企业微信内应用权限。 漏洞名称企业微信私有化2.5-2.6.93…

案例20 基于Spring Boot+Redis实现学生信息按学号存储案例

1. 案例需求 基于Spring BootRedis实现学生信息按学号存储和取出功能&#xff0c;数据存储至Redis。 2. 创建Spring Boot项目 创建Spring Boot项目&#xff0c;项目名称为springboot-redis01。 3. 选择依赖 ​pom.xml文件内容如下所示&#xff1a; <?xml version"…

微信网页授权错误提示:redirect_uri 参数错误10003

如图网页授权域名也需要配置下&#xff0c;出现此问题是因为只配置了JS接口安全域名

即拼七人拼团模式:解决传统微商模式中的“人脉少”问题

许多各类企业都在为如何去引流用户、留存用户而烦恼&#xff0c;近期也有一些初创企业以及直销类型的朋友&#xff0c;咨询拼团对大众来说并不陌生&#xff0c;从多多的崛起开始&#xff0c;各种拼团活动就一直在我们的视野中浮现&#xff0c;对于这种算不上新颖&#xff0c;比…

opencv进阶09-视频处理cv2.VideoCapture示例(打开本机电脑摄像头)

视频信号&#xff08;以下简称为视频&#xff09;是非常重要的视觉信息来源&#xff0c;它是视觉处理过程中经常要处理的一类信号。实际上&#xff0c;视频是由一系列图像构成的&#xff0c;这一系列图像被称为帧&#xff0c;帧是以固定的时间间隔从视频中获取的。获取&#xf…

C语言刷题指南(一)

&#x1f4d9;作者简介&#xff1a; 清水加冰&#xff0c;目前大二在读&#xff0c;正在学习C/C、Python、操作系统、数据库等。 &#x1f4d8;相关专栏&#xff1a;C语言初阶、C语言进阶、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &am…

递归算法详解

概述 递归算法&#xff0c;不断调用本身&#xff0c;每调用一次在内存中添加一层&#xff0c;不断地叠加到最底层&#xff0c;直到遇到返回值&#xff0c;然后从最底层一层层的返回到最顶层 举例 public static void main(String[] args) {// System.out.println(fibbonacciF…

一篇文章教会你搭建私人kindle图书馆,并内网穿透实现公网访问

搭建私人kindle图书馆&#xff0c;并内网穿透实现公网访问 在电子书风靡的时期&#xff0c;大部分人都购买了一本电子书&#xff0c;虽然这本电子书更多的时候是被搁置在储物架上吃灰&#xff0c;或者成为盖泡面的神器&#xff0c;但当亚马逊发布消息将放弃电子书在中国的服务…

如何通过本地搭建wamp服务器并实现无公网IP远程访问

文章目录 前言1.Wamp服务器搭建1.1 Wamp下载和安装1.2 Wamp网页测试 2. Cpolar内网穿透的安装和注册2.1 本地网页发布2.2 Cpolar云端设置2.3 Cpolar本地设置 3. 公网访问测试4. 结语 前言 软件技术的发展日新月异&#xff0c;各种能方便我们生活、工作和娱乐的新软件层出不穷&…

《cpolar内网穿透》外网SSH远程连接linux(CentOS)服务器

本次教程我们来实现如何在外公网环境下&#xff0c;SSH远程连接家里/公司的Linux CentOS服务器&#xff0c;无需公网IP&#xff0c;也不需要设置路由器。 视频教程 [video(video-jrpesBrv-1680147672481)(type-csdn)(url-CSDN直播https://live-file.csdnimg.cn/release/live/…

使用netstat查询网络连接状态、端口信息

1、netstat作用 netstat 命令用于显示各种网络相关信息&#xff0c;如网络连接&#xff0c;路由表&#xff0c;接口状态 (Interface Statistics)&#xff0c;masquerade 连接&#xff0c;多播成员 (Multicast Memberships) 等等。 2、常见参数 -a (all)显示所有选项&#xff…

36.8k Star! 一款小而美的自动化运维监控工具——Uptime Kuma

自动化运维是指利用计算机科学和信息技术来实现系统和应用程序的自动化管理、监控、维护以及问题解决的过程。它的目标是减少人工干预、提高效率、降低错误率&#xff0c;并确保系统的稳定性和可靠性。 应用简览 Uptime-Kuma 是一个轻量级的监控工具&#xff0c;其独特之处在于…

一百六十、Kettle——Linux上安装的Kettle9.2.0连接Hive3.1.2

一、目标 Kettle9.2.0在Linux上安装好后&#xff0c;需要与Hive3.1.2数据库建立连接 之前已经在本地上用kettle9.2.0连上Hive3.1.2 二、各工具版本 &#xff08;一&#xff09;kettle9.2.0 kettle9.2.0安装包网盘链接 链接&#xff1a;https://pan.baidu.com/s/15Zq9w…

PHP使用phpmailer及SMTP服务实现邮件发送

博客升级中&#xff0c;把之前没有想到的功能一点点的完善。 这篇日志记录一下&#xff0c;使用phpmailer实现邮件发送的这样一个操作。 博客偶尔会有留言和评论&#xff0c;我也会及时回复&#xff0c;但是有一个问题&#xff0c;我回复了&#xff0c;给我留言的人如果不再次…

基于Java的ssm图书管理系统源码和论文

基于Java的ssm图书管理系统036 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理&#xff0c;计算机被广泛应用于信息管理系统的环境。计算机的最大好…

linux鲁班猫代码初尝试[编译镜像][修改根文件系统重编译][修改设备树改屏幕为MIPI][修改屏幕和TP方向]

编译镜像 官方百度云盘资料:https://doc.embedfire.com/linux/rk356x/quick_start/zh/latest/quick_start/baidu_cloud/baidu_cloud.html 解压虚拟机压缩包:"鲁班猫\8-SDK源码压缩包\开发环境虚拟机镜像\ubuntu20.04.7z"后既可以用VMware打开,打开后可以看到已经有…

python+django+mysql高校校园外卖点餐系统--计算机毕设项目

本文的研究目标是以高校校园外卖点餐为对象&#xff0c;使其高校校园外卖点餐为目标&#xff0c;使得高校校园外卖点餐的信息化体系发展水平提高。论文的研究内容包括对个人中心、美食分类管理、用户管理、商家管理、美食信息管理、工作人员管理、安全检查管理、系统管理、订单…

什么是B+树?

B树 B树是B树的一种变体&#xff0c;也属于平衡多路查找树&#xff0c;大体结构与B树相同&#xff0c;包含根节点、内部节点和叶子节点。多用于数据库和操作系统的文件系统中&#xff0c;由于B树内部节点不保存数据&#xff0c;所以能在内存中存放更多索引&#xff0c;增加缓存…

【学会动态规划】等差数列划分(22)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

基于Kubernetes云原生技术的低代码PaaS平台,快速构建企业级应用程序

低代码PaaS平台 低代码PaaS平台可以在云端开发、部署、运行低代码应用程序。使用独立数据库模型&#xff0c;基于Kubernetes云原生技术&#xff0c;每个租户均可拥有一套独立的存储、数据库、代码和命名空间&#xff0c;实现了100%的租户数据隔离&#xff0c;并可以随时迁移到…