Nacos实战之配置中心与注册中心详解

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: Nacos实战之配置中心与注册中心详解

ChatGPT体验地址


注册中心

一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心。

Nacos 就是 注册中心 + 配置中心 的组合 (Eureka + Config + Bus)

中文官网:

home

下载地址:

Spring Cloud Alibaba Reference Documentation

服务注册与发现框架 CAP模型 控制台管理 社区活跃度
Euerka AP 支持
ZK CP 不支持
Consul AP 支持
Nacos AP/CP 支持


CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。


Nacos 与 Eureka 区别

Nacos 支持负载均衡,因为其底层继承了 Ribbon 。

Eureka 是 AP 模型 ,Nacos 可以在 AP 与 CP 切换。

安装与运行

WIN版


  1. 先从官网下载Nacos
  2. 解压安装包,直接运行 bin 目录下的 DOS 窗口运行命令: startup.cmd -m standalone
  3. 命令运行成功后直接访问 http://localhost:8848/nacos


Docker 版

拉取镜像

docker pull nacos/nacos-server:1.4.1


启动

docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 -e JVM_XMS=512m -e JVM_XMX=512m nacos/nacos-server:1.4.1

父工程

pom

使用 nacos 需要隐入其依赖:

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

注册中心-服务提供方

微服务 pom

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

启动类

@EnableDiscoveryClient

yml参考

server:
  port: 9001
spring:
  application:
    name: nacos-payment-provider #服务注册名称(会在nacos页面显示的服务名称)
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
management:
  endpoints:
    web:
      exposure:
        include: '*'

注册中心-服务调用方

微服务pom

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

yml 参考

server:
  port: 83
spring:
  application:
    name: nacos-order-consumer #服务注册名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册地址
service-url:
  nacos-user-service: http://nacos-payment-provider #服务提供方的服务名称

配置类

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ApplicationContextConfig{
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
      return new RestTemplate();
    }
}


启动类

@EnableDiscoveryClient

业务类

@RestController
public class OrderNacosController {
    @Resource
    private RestTemplate restTemplate;
  //  配置早在 yml 文件里的 服务提供者路径
    @Value("${service-url.nacos-user-service}")
    private String serverURL;
    //  服务提供方的接口Api
    @GetMapping(value = "/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id) {
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }
}

项目图

注册中心


测试

项目启动起来后,如下测试

http://localhost:83/consumer/payment/nacos/13009

配置中心实战

前置

概念

namespace 命名空间之间是隔离的。

group 分组把不同的微服务划分到同一个组。

dataId 最小的配置划分。

服务最终配置文件的确认是由 namespace + group + gataId 共同确定的。

本地准备

本地准备两个配置文件,因为 Nacos 在项目初始化时,要保障优先从配置中心进行基础配置拉取,拉取配置后,才能保证项目的正常启动。

在 SpringBoot 项目配置文件的加载顺序是存在优先级的, bootstarp 有限级高于 application.


  1. bootstarp.yml
server:
  port: 3377
spring:
  application:
    name: cloud-nacos-config
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册中心地址
        namespace: e27326a4-37e7-41ac-89ba-4b9804758632 # 命名空间
      config:
        server-addr: localhost:8848 #配置中心地址
        file-extension: yaml #指定yaml格式的配置
        namespace: e27326a4-37e7-41ac-89ba-4b9804758632 # 命名空间
        group: DEV_GROUP # 分组
  1. application.yml
spring:
  profiles:
    active: dev


  1. pom
<!--nacos-config-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>


  1. 业务类

业务类上加注解 @RefreshScope

1.3 配置中心

namespace


group


dataId


dataId 命名规则

s p r i n g . a p p l i c a t i o n . n a m e − {spring.application.name}-spring.application.name−{spring.profile.active}.${spring.cloud.nacos.config.file-extension}

上图配置的dataId 为:nacos-config-client-dev.yaml

测试

完成上面的配置后 启动项目 访问 http://localhost:3377/config/info

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
4天前
|
负载均衡 应用服务中间件 Nacos
Nacos配置中心
Nacos配置中心
21 1
Nacos配置中心
|
4天前
|
存储 缓存 负载均衡
Nacos注册中心
Nacos注册中心
17 1
Nacos注册中心
|
4天前
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
14 4
|
4天前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,实际使用中常遇到“客户端不发送心跳检测”的问题。本文深入探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务正常运行。通过检查客户端配置、网络连接、日志、版本兼容性、心跳策略、注册状态、重启应用和环境变量等步骤,系统地排查和解决这一问题。
16 3
|
4天前
|
安全 Nacos 数据库
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改。本文详细探讨了这一问题的原因及解决方案,包括限制公网访问、使用HTTPS、强化数据库安全、启用访问控制、监控和审计等步骤,帮助开发者确保服务的安全运行。
14 3
|
12天前
|
SQL 关系型数据库 数据库连接
"Nacos 2.1.0版本数据库配置写入难题破解攻略:一步步教你排查连接、权限和配置问题,重启服务轻松解决!"
【10月更文挑战第23天】在使用Nacos 2.1.0版本时,可能会遇到无法将配置信息写入数据库的问题。本文将引导你逐步解决这一问题,包括检查数据库连接、用户权限、Nacos配置文件,并提供示例代码和详细步骤。通过这些方法,你可以有效解决配置写入失败的问题。
36 0
|
2月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
3月前
|
安全 Nacos 数据安全/隐私保护
升级指南:从Nacos 1.3.0 到 2.3.0,并兼容 Seata 的鉴权配置
本文详细介绍了如何在微服务环境下从 Nacos 1.3.0 升级到 2.3.0,并确保 Seata 各版本的兼容性。作者小米分享了升级过程中的关键步骤,包括备份配置、更新鉴权信息及验证测试等,并解答了常见问题。通过这些步骤,可以帮助读者顺利完成升级并提高系统的安全性与一致性。
115 8
升级指南:从Nacos 1.3.0 到 2.3.0,并兼容 Seata 的鉴权配置
|
2月前
|
Kubernetes Nacos 容器
nacos注册不上
我正在使用开源的Nacos,并已在Kubernetes中部署了Nacos服务,通过端口映射可在集群外访问Nacos控制台。Kubernetes使用NodePort类型暴露了8848、9848、9849、7848和9555端口,但在尝试注册时遇到问题,出现“Client not connected, current status: STARTING”的错误,导致启动失败。
|
2月前
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
下一篇
无影云桌面