SpringCloud 注册中心(Nacos)快速入门

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: SpringCloud 注册中心(Nacos)快速入门

前言

  Nacos一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,目前来看还是大多数公司使用Nacos多于Eureka。

  Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

  Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

1、Nacos 介绍

  阿里巴巴的技术一般在国内公司都推崇,注册中心也不例外,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。

官网: https://nacos.io/zh-cn/docs/what-is-nacos.html

image-20220826082807371.png

2、Nacos 特性

  • 服务发现和服务健康监测
    Nacos使服务更容易注册,并通过DNS或者http接口发现其他服务,Nacos还提供服务的实时健康检查,防止向不健康的主机或者服务实例发送请求。
  • 动态配置服务
    动态配置服务允许在所有的环境中以集中和动态的方式管理所有的服务配置。Nacos消除了在更新配置使重新部署应用程序,使配置的更改更加高效和灵活。Nacos 以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
  • 动态 DNS 服务
    Nacos 提供基于DNS协议的服务发现能力,支持将注册在Nacos服务以域名的方式暴露端点,让第三方应用方便查阅和发现。Nacos 更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。
  • 服务及其元数据管理
    Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。

3、服务注册

1、引入依赖

在父工程的pom文件中引入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>

然后在服务的pom文件中引入nacos-discovery依赖

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

2、配置Nacos地址

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

spring:
cloud:
nacos:
server-addr: localhost:8848#Nacos的地址

3、启动Nacos和项目

1、cmd进入Nacos文件夹的bin目录,输入下面命令,启动Nacos。

startup.cmd-mstandalone

image-20220826083832538.png

2、启动项目的user-service、order-service服务

image-20220826084016042.png

3、登录nacos管理页面,即可以看到微服务信息。

image-20220826084607759.png

4、配置集群

一个服务可以有多个实例,例如:

  • 127.0.0.1:8081
  • 127.0.0.1:8082
  • 127.0.0.1:8083

假如这些实例分布于全国各地的不同位置,Nacos就将同一位置内的实例 划分为一个集群

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

image-20220826085334200.png

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

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

2、复制一个user-service启动配置,添加属性。

-Dserver.port=8082-Dspring.cloud.nacos.discovery.cluster-name=ZhengZhou

3、右键选择Copy,复制命令输入。

image-20220826091147758.png

image-20220826091224166.png

4、 再次查看nacos控制台,集群数目,实例数目都变成了2。

image-20220826091322379.png

5、点击详情,可以编辑服务配置信息,配置服务权重等等。

image-20220826091619756.png

5、环境隔离

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

  • nacos中可以有多个namespace。
  • namespace下可以有group、service等。
  • 不同namespace之间相互隔离。

1、创建namespace,默认情况下,所有服务都在同一个namespace,名为public。

image-20220826091946860.png

2、我们可以点击页面新增按钮,添加一个namespace,然后填写表单。

image-20220826092029683.png

3、微服务配置namespace

新建的namespace,会生成一个命名空间ID,用来配置微服务。

例如,修改order-service的application.yml文件,如图所示。

namespace: 58025a25-2cd9-43d8-a8a3-db24c4f63429#命名空间,填ID,自己生成的

image-20220826092658666.png

6、Nacos与Eureka的区别

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

  • 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。
  • 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。
  • Nacos与eureka的共同点
  • 都支持服务注册和服务拉取
  • 都支持服务提供者心跳方式做健康检测
  • Nacos与Eureka的区别
  • Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
  • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
  • Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
  • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

总结

以上就是Nacos的简单使用,最后送大家一句话:“靜若癱瘓,動若癲癇“。


相关文章
|
22天前
|
Cloud Native Java Nacos
微服务时代的新宠儿!Spring Cloud Nacos实战指南,带你玩转服务发现与配置管理,拥抱云原生潮流!
【8月更文挑战第29天】Spring Cloud Nacos作为微服务架构中的新兴之星,凭借其轻量、高效的特点,迅速成为服务发现、配置管理和治理的首选方案。Nacos(命名和配置服务)由阿里巴巴开源,为云原生应用提供了动态服务发现及配置管理等功能,简化了服务间的调用与依赖管理。本文将指导你通过五个步骤在Spring Boot项目中集成Nacos,实现服务注册、发现及配置动态管理,从而轻松搭建出高效的微服务环境。
93 0
|
7天前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
24天前
|
Cloud Native Java Nacos
Spring Cloud Config、Apollo、Nacos和Archaius对比
这篇文章对比了Spring Cloud Config、Apollo、Nacos和Archaius这四种配置中心的适应场景、优缺点。文中讨论了它们的功能特点,例如Spring Cloud Config的集中化配置管理和动态刷新能力,Apollo的实时配置推送和权限治理,Nacos的服务发现和管理功能,以及Archaius的动态配置更新能力。文章指出选择配置中心应根据项目需求和架构来决定,并提供了一个对比图来帮助读者更直观地理解这些工具的差异。
34 1
Spring Cloud Config、Apollo、Nacos和Archaius对比
|
7天前
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
|
26天前
|
Java Spring
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
|
26天前
|
Java Spring 容器
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
|
26天前
|
存储 Java Spring
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
|
26天前
|
SQL Java 数据库连接
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
|
26天前
|
Java 开发工具 Spring
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
|
27天前
|
NoSQL Java Redis
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常