SpringCloud --- Nacos注册中心

news2024/12/28 18:18:00

一、认识和安装Nacos

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。

 

 

二、服务注册到nacos

Nacos是SpringCloudAlibaba的组件,而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。因此使用Nacos和使用Eureka对于微服务来说,并没有太大区别。

主要差异在于:

  • 依赖不同

  • 服务地址不同

1)引入依赖


在cloud-demo父工程的pom文件中的<dependencyManagement>中引入SpringCloudAlibaba的依赖:

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

然后在user-service和order-service中的pom文件中引入nacos-discovery依赖:

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

注意:不要忘了注释掉eureka的依赖。


2)配置nacos地址


在user-service和order-service的application.yml中添加nacos地址:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848

注意:不要忘了注释掉eureka的地址


3)重启


重启微服务后,登录nacos管理页面,可以看到微服务信息:

 

 

三、服务分级存储模型

一个服务可以有多个实例,例如我们的user-service,可以有:

  • 127.0.0.1:8081

  • 127.0.0.1:8082

  • 127.0.0.1:8083

假如这些实例分布于全国各地的不同机房,例如:

  • 127.0.0.1:8081,在上海机房

  • 127.0.0.1:8082,在上海机房

  • 127.0.0.1:8083,在杭州机房

Nacos就将同一机房内的实例 划分为一个集群

也就是说,user-service是服务,一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型,如图:

微服务互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群。例如:  

杭州机房内的order-service应该优先访问同机房的user-service。  

 

3.1、给user-service配置集群

修改user-service的application.yml文件,添加集群配置:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称

重启两个user-service实例后,我们可以在nacos控制台看到下面结果:

我们再次复制一个user-service启动配置,添加属性:  

-Dserver.port=8083 -Dspring.cloud.nacos.discovery.cluster-name=SH

配置如图所示:

启动UserApplication3后再次查看nacos控制台:

 

3.2、同集群优先的负载均衡

默认的ZoneAvoidanceRule并不能实现根据同集群优先来实现负载均衡。

因此Nacos中提供了一个NacosRule的实现,可以优先从同集群中挑选实例。

1)给order-service配置集群信息

修改order-service的application.yml文件,添加集群配置:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称

  

2)修改负载均衡规则

修改order-service的application.yml文件,修改负载均衡规则:

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 

 

 

四、权重配置

实际部署中会出现这样的场景:

服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求。

但默认情况下NacosRule是同集群内随机挑选,不会考虑机器的性能问题。

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

在nacos控制台,找到user-service的实例列表,点击编辑,即可修改权重:

在弹出的编辑窗口,修改权重:

 

注意:如果权重修改为0,则该实例永远不会被访问

 

 

五、环境隔离

Nacos提供了namespace来实现环境隔离功能。

  • nacos中可以有多个namespace

  • namespace下可以有group、service等

  • 不同namespace之间相互隔离,例如不同namespace的服务互相不可见

 

5.1、创建namespace

默认情况下,所有service、data、group都在同一个namespace,名为public:

我们可以点击页面新增按钮,添加一个namespace:

 

然后,填写表单:

 

就能在页面看到一个新的namespace:

 

 

5.2、给微服务配置namespace

给微服务配置namespace只能通过修改配置来实现。

例如,修改order-service的application.yml文件:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ
        namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID

 重启order-service后,访问控制台,可以看到下面的结果:

此时访问order-service,因为namespace不同,会导致找不到userservice,控制台会报错:

 

 

 

六、Nacos与Eureka的区别

Nacos的服务实例分为两种l类型:

  • 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。

  • 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。

配置一个服务实例为永久实例:

spring:
  cloud:
    nacos:
      discovery:
        ephemeral: false # 设置为非临时实例

Nacos和Eureka整体结构类似,服务注册、服务拉取、心跳等待,但是也存在一些差异:

Nacos与eureka的共同点

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

  • 都支持服务提供者心跳方式做健康检测

Nacos与Eureka的区别

  • Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式

  • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除

  • Nacos支持服务列表变更的消息推送模式,服务列表更新更及时

  • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

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

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

相关文章

Stable Diffusion公司发布首个大语言模型StableLM,已开源公测!

文 | 智商掉了一地 20号凌晨&#xff0c;Stability AI 发布了一个新的开源语言模型—— StableLM&#xff0c;该公司曾开发了 Stable Diffusion 图像生成工具。这则新闻意味着它不再局限于图像与视频生成领域&#xff0c;将正式加入文本生成 AI 赛道。 StableLM 模型可以生成文…

企业号运营全攻略,让你的品牌更具竞争力

实体企业抖音矩阵运营主要包含以下五个方面&#xff1a;多平台帐号绑定、短视频制作、短视频发布、私信评论维护以及提供数据分析报表。   一、多平台帐号绑定   多平台帐号绑定是实体企业进行抖音矩阵运营的第一步。通过将企业的各种社交账号与抖音账号进行绑定&#xff0…

CoreMark 测试指南

1、coremark 简介 coremark 是由EEMBC提出的一个评价CPU性能指标的跑分软件。其主要目标是测试处理器核心性能。CoreMark程序使用C语言写成&#xff0c;包含如下四类运算法则&#xff1a;数学矩阵操作&#xff08;普通矩阵运算&#xff09;、列举&#xff08;寻找并排序&#…

[2019.01.25]Android NDK Crash错误定位

Android NDK开发Crash错误定位: D:\Users\Android\Sdk ndk-stack.exe: D:\Users\Android\Sdk\ndk-bundle\prebuilt\windows-x86_64\bin aarch64-linux-android-addr2line.exe: D:\Users\Android\Sdk\ndk-bundle\toolchains\ aarch64-linux-android-4.9\prebuilt\windows-x86_64…

六、Golang的并发

Go语言的并发指的是能让某个函数独立于其他函数运行的能力。当一个函数创建为goroutine时&#xff0c;Go会将其视为一个独立的工作单元。这个单元会被调度到可用的逻辑处理器上执行。 Go语言运行时的调度器是一个复杂的软件&#xff0c;能管理被创建的所有goroutine并为其分配执…

对考研考公的过分执念,正在悄悄束缚你的职场选择!

随着近年来就业形势的严峻&#xff0c;越来越多的同学在找工作时碰壁&#xff0c;尤其是对于大部分应届生&#xff0c;这种现象尤为明显。 每年数百万的大学生进入到社会&#xff0c;却发现能选择的机会并不多。高等教育规模不断扩大的背景下&#xff0c;职场晋升的门槛越来越…

Hudi最流行数据湖框架介绍

目录 1. 第一章Hudi 框架概述1.1 数据湖Data Lake1.1.1 仓库和湖泊1.1.2 什么是数据湖1.1.3 数据湖的优点1.1.4 Data Lake vs Data warehouse1.1.5 数据湖框架1.1.5.1 Delta Lake1.1.5.2 Apache Iceberg1.1.5.3 Apache Hudi 1.1.6 湖仓一体&#xff08;Data Lakehouse&#xff…

【1】从零开始学习目标检测:YOLO算法详解

从零开始学习目标检测&#xff1a;YOLO算法详解 文章目录 从零开始学习目标检测&#xff1a;YOLO算法详解1. &#x1f31f;什么是目标检测?2.&#x1f31f;传统的目标检测与基于深度学习的目标检测3.&#x1f31f;目标检测算法的工作流程4.&#x1f31f;目标检测可以干什么&am…

拿到新的服务器必做的五件事(详细流程,开发必看)

目录 1. 配置免密登录 基本用法 远程登录服务器&#xff1a; 第一次登录时会提示&#xff1a; 配置文件 创建文件 然后在文件中输入&#xff1a; 密钥登录 创建密钥&#xff1a; 2.部署nginx 一、前提条件 二、安装 Nginx 3.配置python虚拟环境 1.安装虚拟环境 …

自习室管理系统的设计与实现(论文+源码)_kaic

摘要 近年来&#xff0c;随着高校规模的逐步扩大&#xff0c;学生对高校自习室座位的需求也在不断增加。然而&#xff0c;一些高校仍然采用人工管理学院自习室座位&#xff0c;这大大降低了管理效率。显然&#xff0c;开发一个成本低、占用资源少、能提高高校自习室座位管理效率…

WindowsHash简介及windows认证

Windows系统使用两种方法对用户的密码进行哈希处理&#xff0c;他们分别是LAN Manager(LM)哈希和NT LAN Manager(NTML)哈希。 现在已经有了更新的NTLMv2以及Kerberos验证体系。 Windows的系统密码hash默认情况下一般由两个部分组成&#xff1a;第一部分是LM-hash&#xff0c;…

Nginx中间件漏洞复现

Nginx 解析漏洞 该漏洞与nginx、php版本无关&#xff0c;属于用户配置不当造成的解析漏洞。 漏洞原理&#xff1a; 该解析漏洞是PHP fastcgi 的漏洞&#xff0c;在PHP的配置文件 php.ini 中有一个关键的选项 cgi.fix_pathinfo 默认值为1&#xff0c;表示开启。同时在 php-fp…

ASO优化之如何回复Google Play评论

应用的平均评分会影响 Google Play 商店优化 和应用的 Google Play 排名。应用的评分越高&#xff0c;我们在搜索结果中的排名就越靠前。因此&#xff0c;当应用处于 4 星评级范围内时&#xff0c;它会被更多 Google Play 商店的访问者看到和发现。我们可以使用应用雷达中的评级…

Linux进程通信:有名管道

有名管道&#xff1a; 无名管道只能用于有亲缘关系的进程间通信。 因此提出有名管道&#xff08;也叫FIFO文件&#xff09;&#xff0c;以实现无亲缘关系进程间的通信。 不同于无名管道&#xff0c;有名管道FIFO文件的形式存在于文件系统&#xff0c;与一个路径名关联&#xff…

【复杂网络建模】——Python可视化重要节点识别(PageRank算法)

目录 一、复杂网络建模 二、建模的算法 三、使用PageRank算法进行网络重要节点识别 1、PageRank算法 2、基于PageRank算法的ER网络重要节点识别 3、基于PageRank算法的小世界网络重要节点识别 4、基于PageRank算法的无标度网络的重要节点识别 四、ER网络、小世界网络、…

春秋云境:CVE-2022-24663(远程代码执行漏洞exp)

目录 一、题目 二、构造exp执行php 三、蚁剑连接 一、题目 介绍&#xff1a; 远程代码执行漏洞&#xff0c;任何订阅者都可以利用该漏洞发送带有“短代码”参数设置为 PHP Everywhere 的请求&#xff0c;并在站点上执行任意 PHP 代码。P.S. 存在常见用户名低权限用户弱口令 …

华为OD机试真题(Java),开元音统计(100%通过+复盘思路)

一、题目描述 相对开音节构成的结构为辅音元音(aeiou)辅音(r除外)e&#xff0c;常见的单词有bike cake&#xff0c;给定一个字符串&#xff0c;以空格为分隔符。 反转每个单词的字母&#xff0c;若单词中包含如数字等其他非字母时不进行反转&#xff0c;反转后计算其中含有相对…

苹果手机屏幕上的圆点怎么设置?(开启悬浮按钮)

案例&#xff1a;苹果手机屏幕上的圆点怎么设置&#xff1f; 【求助&#xff01;苹果手机的小圆点怎么调出来&#xff1f;就是悬浮按钮那个。】 如果您是苹果手机的用户&#xff0c;您可能会在手机屏幕上看到一个小圆点&#xff0c;它可以让您方便地进行操作。这个圆点是 Assi…

TortoiseSVN使用-合并深度介绍

文章目录 3.6 合并深度介绍 本人其他相关文章链接 3.6 合并深度介绍 Working copy(工作副本)&#xff1a;即你当前的工作目录&#xff0c;一般默认为这个选项&#xff1b;Recursively(递归)&#xff1a;即你选择的目录的版本库&#xff0c;包括了其下面的子文件&#xff0c;子文…

叶黄素的17种功效与副作用(5点使用禁忌请小心)

叶黄素&#xff08;Lutein&#xff09;及其同分异构体玉米黄质&#xff08;zeaxanthin&#xff09;和内消旋玉米黄质&#xff08;meso-zeaxanthin&#xff09;是一种聚集在人类视网膜中的黄斑色素。 它们不能在哺乳动物体内合成&#xff0c;必须从饮食中获得&#xff0c;然后分…