【微服务】3、NACOS 的使用

简介: 【微服务】3、NACOS 的使用

🔖 Eureka 可以做注册中心【https://github.com/Netflix/eureka

🔖 但它的功能比较少,仅仅注册中心

🔖 nacos 也可做注册中心,且功能更加丰富【https://nacos.io/

一、了解 Nacos

✏️ Nacos 是阿里巴巴的产品,也是 SpringCloud 中的一个组件

✏️ 相比 Eureka 而言,它的功能更加丰富,在国内受欢迎程度较高

✏️ Nacos 一个更易于构建云原生应用的动态服务发现配置管理服务管理平台

📝 Nacos 文档:https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html

二、安装 Nacos

(1) 下载和安装

✏️ 在 Nacos 官方网站下载好 Nacos 的安装包(Windows 版本和 Linux 版本)【下载地址:https://github.com/alibaba/nacos/tags

✏️ 解压


解压后的目录结构:

双击startup.cmd会报错(进入该文件夹的 dos 窗口)

(2) 启动

🔖 windows 单击启动命令:startup.cmd -m standalone【-m 是 mode(模式)的意思】

🔖 默认账号和密码是 nacos

三、Nacos 注册中心

(1) 父工程添加管理依赖

🔖 父工程添加 spring-cloud-alibaba 的管理依赖

<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) nacos 客户端依赖和配置

🔖 nacos 和 eureka 不一起使用

🔖 微服务添加 nacos 客户端依赖

🔖 微服务添加 nacos 配置(在 yaml 文件中)

<!-- nacos 客户端依赖 -->
  <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>
spring:
  cloud:
    nacos:
      server-addr: localhost:8848 # 配置 nacos 服务地址

🔋 之前使用 eureka 的时候还要手动创建一个 eureka 服务

🔋 所以存在 eureka 的服务端

🎄 nacos 本身就是一个服务,默认端口 8848

🎄 不用像 eureka 一样手动创建一个服务

四、Nacos 服务分级存储模型

🖼️ 服务调用尽可能选择本地集群的服务,跨集群调用延迟较高

🖼️ 本地集群不可访问时,再去访问其它集群

Nacos 服务分级存储模型

⌚ 一级是服务(如 userservice)

⌚ 二级是集群(如把 userservice 的不同实例部署在杭州和上海集群)

⌚ 三级是实例(如杭州机房的某台服务器部署了 userservice 服务)


Nacos 服务的集群属性是什么?

Nacos 设置服务实例的集群属性?

spring:
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos 的客户端依赖
      discovery:
        cluster-name: RiBen # 设置集群属性

五、NacosRule 负载均衡

🖼️ 应尽可能调用本地集群的服务,当本地集群不能访问的时候再去访问其他集群的服务(跨集群调用延迟较高)

# 该微服务向 userservice 发送请求的时候优先访问同一集群的, 当同一集群没有的时候才访问其他集群的
userservice: 
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
spring:
  application:
    name: orderservice
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos 服务地址
      discovery:
        cluster-name: GuiZhou

跨集群调用的警告:

03-07 23:04:15:004  WARN 10108 --- [nio-8080-exec-7] c.alibaba.cloud.nacos.ribbon.NacosRule   : A cross-cluster call occurs,name = userservice, clusterName = GuiZhou, instance = [Instance{instanceId='192.168.80.1#8082#RiBen#DEFAULT_GROUP@@userservice', ip='192.168.80.1', port=8082, weight=1.0, healthy=true, enabled=true, ephemeral=true, clusterName='RiBen', serviceName='DEFAULT_GROUP@@userservice', metadata={preserved.register.source=SPRING_CLOUD}}]
03-07 23:04:16:388  WARN 10108 --- [nio-8080-exec-8] c.alibaba.cloud.nacos.ribbon.NacosRule   : A cross-cluster call occurs,name = userservice, clusterName = GuiZhou, instance = [Instance{instanceId='192.168.80.1#8082#RiBen#DEFAULT_GROUP@@userservice', ip='192.168.80.1', port=8082, weight=1.0, healthy=true, enabled=true, ephemeral=true, clusterName='RiBen', serviceName='DEFAULT_GROUP@@userservice', metadata={preserved.register.source=SPRING_CLOUD}}]

🎁 NacosRule【com.alibaba.cloud.nacos.ribbon.NacosRule】负载均衡策略:

🍍 ① 优先选择同集群的服务实例访问

🍍 ② 当本地集群找不到服务提供者的时候才会去其他集群找服务提供者(当跨集群访问的时候会报警告)

🍍 ③ 确定了可用实例列表后,再采用随机负载均衡策略挑选实例进行访问

六、Nacos 服务实例的权重设置

🍎 实际部署中会出现下面的场景:

🍎 服务器设备性能有差异。一些实例所在机器性能较好,一些实例所在机器性能较差。可通过设置实例权重让性能好的机器所在的服务实例承担更多的用户请求,性能差的机器所在实例承担的用户请求少一些

🍎 Nacos 提供了实例权重配置来控制访问频率,权重越大则访问频率越高

🍒 Nacos 控制台可以设置实例的权重值(0 ~ 1之间)

🍒 同集群内的多个实例,权重越高被访问的频率越高

🍒 权重设置为0时完全不会被访问

七、环境隔离 namespace

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

🍓 每个 namespace 都有唯一 id

🍓 服务设置 namespace 时要写 id 而不是名称

🍓 不同 namespace 下的服务互相不可见

🍓 可在 Nacos 控制台创建 namespace,用来隔离不同环境


spring:
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos 服务地址
      discovery:
        cluster-name: GuiZhou
        namespace: b37ab417-efc2-49e5-b47b-7b9171cd800d # 命名空间的 id

不同命名空间之间的服务互相不可见

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
Java Nacos Maven
从零搭建微服务架构:Spring Boot与Nacos完美整合
从零搭建微服务架构:Spring Boot与Nacos完美整合
169 0
|
3月前
|
网络协议 Nacos 数据安全/隐私保护
MSE微服务引擎注册问题之nacos注册失败如何解决
MSE(MicroService Engine)微服务引擎是阿里云提供的一种微服务治理平台,它通过提供服务注册、发现、配置管理等功能来支撑微服务架构的稳定运行;本合集旨在梳理MSE微服务引擎的核心特性、部署流程,以及实践中可能遇到的问题和相应的解决方案,以助力用户优化微服务架构的实施和管理。
|
5月前
|
Java Unix Nacos
微服务轮子项目(12) - nacos注册中心(上)
微服务轮子项目(12) - nacos注册中心
80 0
|
6月前
|
Java Nacos
在MSE微服务引擎中,可以使用Java代码进行Nacos下线操作
在MSE微服务引擎中,可以使用Java代码进行Nacos下线操作
113 3
|
7月前
|
开发框架 负载均衡 数据管理
Nacos:现代化微服务架构的注册与配置中心
在当今快节奏的软件开发世界中,微服务架构已经成为了构建可伸缩、高可用性应用程序的首选方式之一。然而,随着微服务数量的增加,有效地管理服务注册和配置变得愈发复杂。这时,Nacos(发音为“nac-os”)作为一个开源的服务注册和配置中心解决方案应运而生。
|
20天前
|
SpringCloudAlibaba Java Nacos
SpringCloud Alibaba微服务 -- Nacos使用以及注册中心和配置中心的应用(保姆级)
SpringCloud Alibaba微服务 -- Nacos使用以及注册中心和配置中心的应用(保姆级)
|
1月前
|
Kubernetes Nacos 微服务
nacos常见问题之v2.2.3 k8s 微服务注册nacos强制删除 pod不消失如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
24 1
nacos常见问题之v2.2.3 k8s 微服务注册nacos强制删除 pod不消失如何解决
|
1月前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
208 0
|
6月前
|
缓存 Nacos 微服务
Nacos2.2.3版本,微服务注册上去了,然后关闭,注册实例还是显示健康,一直在那,要等大概一小时以后才消失
Nacos2.2.3版本,微服务注册上去了,然后关闭,注册实例还是显示健康,一直在那,要等大概一小时以后才消失,怎么解决?
150 1
|
1月前
|
应用服务中间件 Nacos 数据库
【微服务】4、NACOS 配置管理
【微服务】4、NACOS 配置管理
41 0