微服务-Nacos(注册中心)

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模式

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用PostgreSQL构建强大的Web应用程序:最佳实践和建议

PostgreSQL是一个功能强大的开源关系型数据库,它拥有广泛的用户群和活跃的开发社区。越来越多的Web应用选择PostgreSQL作为数据库 backend。如何充分利用PostgreSQL的特性来构建健壮、高性能的Web应用?本文将给出一些最佳实践和建议。 一、选择合适的PostgreSQL数据类型 Pos…

SAP ABAP 直接把内表转换成PDF格式(smartform的打印函数输出OTF格式数据)

直接上代码&#xff1a; REPORT zcycle055.DATA: lt_tab TYPE TABLE OF zpps001. DATA: ls_tab TYPE zpps001.ls_tab-werks 1001. ls_tab-gamng 150.00. ls_tab-gstrp 20201202. ls_tab-aufnr 000010000246. ls_tab-auart 标准生产. ls_tab-gltrp 20201205. ls_tab-matn…

idea中Maven报错Unable to import maven project: See logs for details问题的解决方法

idea中Maven报错Unable to import maven project: See logs for details问题的解决方法。 在查看maven的环境配置和idea的maven配置后&#xff0c;发现是idea 2020版本和maven 3.9.3版本的兼容性问题。在更改为Idea自带的maven 3.6.1版本后问题解决&#xff0c;能成功下载jar包…

【MATLAB基础绘图第16棒】绘制热图(Heatmap)

热图&#xff08;Heatmap&#xff09; 热图的主要作用是直观展示重点研究对象的差异情况&#xff0c;多用于经济学与工学差异性分析之中。 heatmap函数创建热图 语法 hheatmap(tbl,xvar,yvar) hheatmap(tbl,xvar,yvar,ColorVariable,cvar) hheatmap(cdata) hheatmap(xvalue…

产品经理必知必会0.2

Q1:产品经理需要具备的能力&#xff1f; A:硬实力&#xff1a;产品设计、需求分析、竞品分析、数据分析、撰写文档 软实力&#xff1a;沟通能力、学习能力、用户思维、主动性、好奇心、同理心、责任心、抗压能力、目标导向.... 扩展能力&#xff1a;商业思维、市场敏感度... Q…

【C++】STL---list

STL---list 一、list 的介绍二、list 的模拟实现1. list 节点类2. list 迭代器类&#xff08;1&#xff09;前置&#xff08;2&#xff09;后置&#xff08;3&#xff09;前置- -、后置- -&#xff08;4&#xff09;! 和 运算符重载&#xff08;5&#xff09;* 解引用重载 和 …

RocketMQ 消息消费 轮询机制 PullRequestHoldService

1. 概述 先来看看 RocketMQ 消费过程中的轮询机制是啥。首先需要补充一点消费相关的前置知识。 1.1 消息消费方式 RocketMQ 支持多种消费方式&#xff0c;包括 Push 模式和 Pull 模式 Pull 模式&#xff1a;用户自己进行消息的拉取和消费进度的更新Push 模式&#xff1a;Broker…

LLM应用的例子LLM use cases and tasks

您可能会认为LLMs和生成性AI主要关注聊天任务。毕竟&#xff0c;聊天机器人非常受到关注并且备受瞩目。下一个词的预测是许多不同功能背后的基本概念&#xff0c;从基本的聊天机器人开始。 但是&#xff0c;您可以使用这种概念上简单的技术执行文本生成中的其他各种任务。例如…

于vue3+vite+element pro + pnpm开源项目

河码桌面是一个基于vue3viteelement pro pnpm 创建的monorepo项目&#xff0c;项目采用的是类操作系统的web界面&#xff0c;操作起来简单又方便&#xff0c;符合用户习惯&#xff0c;又没有操作系统的复杂&#xff01; 有两个两个分支&#xff0c;一个是web版本&#xff0c;…

DevOps系列文章 之 Gitlab+Docker自动部署SpringBoot

1.环境要求 以下服务器的操作系统均为Centos7 服务器A&#xff1a;Gitlab服务器B&#xff1a;GitlabRunner、Docker、docker-compose、Java1.8、maven3.6.3、git ps&#xff1a;这里可以把服务器B的GitlabRunner、Java1.8、maven3.6.3、git单独提出来&#xff0c;独立部署&a…

Elasticsearch:如何在 Ubuntu 上安装多个节点的 Elasticsearch 集群 - 8.x

Elasticsearch 是一个强大且可扩展的搜索和分析引擎&#xff0c;可用于索引和搜索大量数据。 Elasticsearch 通常用于集群环境中&#xff0c;以提高性能、提供高可用性并实现数据冗余。 在本文中&#xff0c;我们将讨论如何在 Ubuntu 20.04 上安装和配置具有多节点集群的 Elast…

java语言B/S架构云HIS医院信息系统源码【springboot】

医院云HIS全称为基于云计算的医疗卫生信息系统( Cloud- Based Healthcare Information System)&#xff0c;是运用云计算、大数据、物联网等新兴信息技术&#xff0c;按照现代医疗卫生管理要求&#xff0c;在一定区域范围内以数字化形式提供医疗卫生行业数据收集、存储、传递、…

Ubuntu20.04安装Nvidia显卡驱动教程

1、禁用nouveau 1、创建文件&#xff0c;如果没有下载vim编辑器&#xff0c;将vim换成gedit即可 $ sudo vim /etc/modprobe.d/blacklist-nouveau.conf 2、在文件中插入以下内容&#xff0c;将nouveau加入黑名单&#xff0c;默认不开启 blacklist nouveau options nouveau m…

C++ 面向对象三大特性——继承

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C 继承 ☂️<3>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<4>前言&#xff1a;面向对象三大特性的&#xff0c;封装&#xff0c;继承&#xff0c;多态&#xff…

多功能数据采集主机——数据集中采集

无论是机房监控系统还是仓库监控系统&#xff0c;又或者是其他大型场所的监控系统都会用的一个设备——多功能数据采集主机。 在环境监控系统中会用到温湿度、水浸、烟感等多种传感器&#xff0c;时时监测周围环境&#xff0c;这些传感器都可以通过多功能数据采集主机&#xff…

Python学习之操作XML文件详解

概要 我们经常需要解析用不同语言编写的数据&#xff0c;Python 提供了许多第三方库来解析或拆分用其他语言编写的数据&#xff0c;今天我们来学习下 Python XML 解析器的相关功能。 什么是 XML&#xff1f; XML 是可扩展标记语言&#xff0c;它在外观上类似于 HTML&#xff…

基于IDE Eval Resetter延长IntelliJ IDEA等软件试用期的方法(包含新版本软件的操作方法)

本文介绍基于IDE Eval Resetter插件&#xff0c;对集成开发环境IntelliJ IDEA等JetBrains公司下属的多个开发软件&#xff0c;加以试用期延长的方法。 我们这里就以IntelliJ IDEA为例&#xff0c;来介绍这一插件发挥作用的具体方式。不过&#xff0c;需要说明使用IDE Eval Rese…

CentOS系统环境搭建(五)——Centos7安装maven

centos系统环境搭建专栏&#x1f517;点击跳转 Centos7安装maven 下载压缩包 maven下载官网 解压 压缩包放置到/usr/local tar -xvf apache-maven-3.9.2-bin.tar.gz配置环境变量 vim /etc/profile在最下面追加 MAVEN_HOME/usr/local/apache-maven-3.9.2 export PATH${MAV…

vscode ssh 远程 gdb 调试

一、点运行与调试&#xff0c;生成launch.json 文件 二、点添加配置&#xff0c;选择GDB 三、修改启动程序路径

迈向通用听觉人工智能!清华电子系、火山语音携手推出认知导向的听觉大语言模型SALMONN

日前&#xff0c;清华大学电子工程系与火山语音团队携手合作&#xff0c;推出认知导向的开源听觉大语言模型SALMONN (Speech Audio Language Music Open Neural Network)。 大语言模型 SALMONN LOGO 相较于仅仅支持语音输入或非语音音频输入的其他大模型&#xff0c;SALMONN对…