【微服务】3、NACOS 的使用

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 【微服务】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

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

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
444 81
高效搭建Nacos:实现微服务的服务注册与配置中心
|
3月前
|
监控 网络协议 Nacos
Nacos:构建微服务架构的基石
Nacos:构建微服务架构的基石
174 2
|
6月前
|
Cloud Native Java Nacos
微服务时代的新宠儿!Spring Cloud Nacos实战指南,带你玩转服务发现与配置管理,拥抱云原生潮流!
【8月更文挑战第29天】Spring Cloud Nacos作为微服务架构中的新兴之星,凭借其轻量、高效的特点,迅速成为服务发现、配置管理和治理的首选方案。Nacos(命名和配置服务)由阿里巴巴开源,为云原生应用提供了动态服务发现及配置管理等功能,简化了服务间的调用与依赖管理。本文将指导你通过五个步骤在Spring Boot项目中集成Nacos,实现服务注册、发现及配置动态管理,从而轻松搭建出高效的微服务环境。
347 0
|
3月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
69 5
|
3月前
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
108 2
|
3月前
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
54 4
|
3月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,实际使用中常遇到“客户端不发送心跳检测”的问题。本文深入探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务正常运行。通过检查客户端配置、网络连接、日志、版本兼容性、心跳策略、注册状态、重启应用和环境变量等步骤,系统地排查和解决这一问题。
73 3
|
3月前
|
安全 Nacos 数据库
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改。本文详细探讨了这一问题的原因及解决方案,包括限制公网访问、使用HTTPS、强化数据库安全、启用访问控制、监控和审计等步骤,帮助开发者确保服务的安全运行。
147 3
|
4月前
|
Java Nacos 微服务
微服务中间件之Nacos
Nacos是阿里巴巴开源的动态服务发现、配置管理和服务管理平台,支持服务注册与发现、配置管理及服务健康监测。采用Spring Cloud、Spring Boot、Raft算法等技术,适用于微服务架构和云原生应用,提供简单易用的安装部署方式和丰富的应用场景。
867 2
|
4月前
|
负载均衡 算法 Nacos
SpringCloud 微服务nacos和eureka
SpringCloud 微服务nacos和eureka
96 0

热门文章

最新文章