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

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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
6月前
|
存储 Kubernetes 安全
Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置
无论是使用 Nacos-Controller 实现配置的双向同步,还是直接在应用中接入 Nacos SDK 以获得更高级的配置管理特性,都能显著提升配置管理的灵活性、安全性和可维护性。使用 Nacos,您能够更好地管理和优化您的应用配置,从而提高系统的稳定性和可靠性。
516 49
|
10月前
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
1706 83
高效搭建Nacos:实现微服务的服务注册与配置中心
|
9月前
|
负载均衡 Kubernetes 网络协议
注册中心如何选型?Eureka、Zookeeper、Nacos怎么选
这是小卷对分布式系统架构学习的第9篇文章,继续探讨注册中心的原理及选型。文章详细介绍了Eureka、Nacos的工作机制与特点,并对比了Eureka、Nacos、Consul和Zookeeper在一致性协议、健康检查、负载均衡等方面的差异。最后根据不同的应用场景给出了注册中心的选型建议,帮助读者理解如何选择最适合的注册中心。
698 100
|
10月前
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
924 150
|
6月前
|
存储 人工智能 测试技术
Nacos托管LangChain应用Prompts和配置,助力你的AI助手快速进化
AI 应用开发中,总有一些让人头疼的问题:敏感信息(比如 API-KEY)怎么安全存储?模型参数需要频繁调整怎么办?Prompt 模板改来改去,每次都得重启服务,太麻烦了!别急,今天我们就来聊聊如何用 Nacos 解决这些问题。
|
11月前
|
监控 Java 测试技术
Nacos 配置中心变更利器:自定义标签灰度
本文是对 MSE Nacos 应用自定义标签灰度的功能介绍,欢迎大家升级版本进行试用。
1031 218
|
8月前
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
3111 14
|
11月前
|
负载均衡 应用服务中间件 Nacos
Nacos配置中心
Nacos配置中心
580 1
Nacos配置中心
|
11月前
|
存储 缓存 负载均衡
Nacos注册中心
Nacos注册中心
241 1
Nacos注册中心
|
11月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
186 5