微服务轮子项目(12) - nacos注册中心(上)

简介: 微服务轮子项目(12) - nacos注册中心

1. 概述

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

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

关键特性包括:

  • 服务发现和服务健康监测
  • 动态配置服务
  • 动态 DNS 服务
  • 服务及其元数据管理

相关资料:

2. 设计模型

2.1 ER模型

2.2 资源模型

3. 部署

3.1 依赖环境

  • 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac
  • 64 bit JDK 1.8+
  • Maven 3.2.x+

3.2 编译

进入nacos的目录执行以下maven指令

mvn -Prelease-nacos clean install -U

3.3 运行

#进入nacos/distribution目录下,找到对应版本的编译后的文件夹
cd distribution/target/nacos-server-$version/nacos/bin
#Linux/Unix/Mac
sh startup.sh -m standalone
#Windows
cmd startup.cmd

3.4 访问

http://127.0.0.1:8848/nacos

4. 配置中心

4.1 集成项目

引入jar:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

bootstrap.yml增加以下配置:

spring:
  cloud:
    nacos:
      config:
        server-addr: ip:prot  #nacos的地址
        file-extension: yml   #配置文件格式
        shared-dataids: common.yml #公共配置文件

4.2 核心功能介绍

4.2.1 全局共用配置

可通过以下方式配置所有项目共享的配置项:

spring:
  cloud:
    nacos:
      config:
        shared-dataids: common.yml
        refreshable-dataids: common.yml

shared-dataids: 配置全局的配置名称

refreshable-dataids: 配置需要自动刷新的全局配置(默认不支持自动刷新)

4.2.2 自动刷新
//配置类上添加RefreshScope注解
@RefreshScope
4.2.3 不同环境的配置文件隔离

1.Nacos本身的地址

  • 直接通过运行参数设置
  • 例如开发环境的nacos地址为127.0.0.1:8848,而生产环境的nacos地址为192.168.28.130,部署生产环境时只需要在项目的启动参数添加以下内容
//以下参数是本项目个性化的,能同时影响配置中心和注册中心的地址
-Dzlt.nacos.server-addr=192.168.28.130:8848

2.业务配置项,总共有3种方法实现(选择一种即可)

1.通过spring.profiles.active

//通过运行参数设置
-Dspring.profiles.active=dev

2.通过Nacos 的 Group

//通过运行参数设置
-Dspring.cloud.nacos.config.group=DEVELOP_GROUP

3.通过Nacos 的 Namespace

//通过运行参数设置,值是namespace对应的id,id值可以在Nacos的控制台获取
-Dspring.cloud.nacos.config.namespace=b3404bc0-d7dc-4855-b519-570ed34b62d7
4.2.3.1 多环境总结

第一种:通过DataID与profile实现

  • 优点:这种方式与Spring Cloud Config的实现非常像,用过Spring Cloud Config的用户,可以毫无违和感的过渡过来,由于命名规则类似,所以要从Spring Cloud Config中做迁移也非常简单。
  • 缺点:这种方式在项目与环境多的时候,配置内容就会显得非常混乱。配置列表中会看到各种不同应用,不同环境的配置交织在一起,非常不利于管理。
  • 建议:项目不多时使用,或者可以结合 Group对项目根据业务或者组织架构做一些拆分规划。

第二种:通过Group实现

  • 优点:通过 Group按环境讲各个应用的配置隔离开。可以非常方便的利用 DataID和 Group的搜索功能,分别从应用纬度和环境纬度来查看配置。
  • 缺点:由于会占用 Group纬度,所以需要对 Group的使用做好规划,毕竟与业务上的一些配置分组起冲突等问题。
  • 建议:这种方式虽然结构上比上一种更好一些,但是依然可能会有一些混乱,主要是在 Group的管理上要做好规划和控制。

第三种:通过Namespace实现

  • 优点:官方建议的方式,通过 Namespace来区分不同的环境,释放了 Group的自由度,这样可以让 Group的使用专注于做业务层面的分组管理。同时,Nacos控制页面上对于 Namespace也做了分组展示,不需要搜索,就可以隔离开不同的环境配置,非常易用。
  • 缺点:没有啥缺点,可能就是多引入一个概念,需要用户去理解吧。
  • 建议:直接用这种方式长远上来说会比较省心。虽然可能对小团队而言,项目不多,第一第二方式也够了,但是万一后面做大了呢?

多环境注意:不论用哪一种方式实现。对于指定环境的配置(spring.profiles.active=DEV、spring.cloud.nacos.config.group=DEV_GROUP、spring.cloud.nacos.config.namespace=83eed625-d166-4619-b923-93df2088883a),都不要配置在应用的bootstrap.properties中。而是在发布脚本的启动命令中,用-Dspring.profiles.active=DEV的方式来动态指定,会更加灵活!

Nacos使用注意:Nacos本身的相关配置必须都放在bootstrap.yml文件中,如果在Nacos添加了应用的配置文件:

  1. 应用读取配置后只会覆盖本地相同key的配置
  2. 应用读取配置后会缓存起来,就算停掉Nacos也会生效
目录
相关文章
|
12月前
|
人工智能 安全 Nacos
Nacos 3.0:微服务与AI融合的技术新纪元
Nacos 3.0:微服务与AI融合的技术新纪元
508 83
|
9月前
|
人工智能 Java API
Nacos 3.1.0 正式发布,支持 A2A 注册中心与 MCP 注册协议增强
3.1.0 发布核心全新功能-Agent 注册中心,助力构建基于 A2A 协议的多 Agent 协作的AI应用,同时 MCP 注册中心适配最新 MCP 官方注册中心协议及升级优化多项核心功能。
2312 81
|
12月前
|
人工智能 安全 Java
Nacos 3.0:从微服务治理到AI服务治理的跃迁
Nacos 3.0:从微服务治理到AI服务治理的跃迁
567 5
|
12月前
|
人工智能 自然语言处理 安全
Nacos 3.0:微服务与AI融合的新一代动态治理平台
Nacos 3.0:微服务与AI融合的新一代动态治理平台
662 2
|
Java Maven Android开发
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
本文介绍了Spring Boot开发环境的搭建和项目启动流程。主要内容包括:jdk的配置(IDEA、STS/eclipse设置方法)、Spring Boot工程的构建方式(IDEA快速构建、官方构建工具start.spring.io使用)、maven配置(本地maven路径与阿里云镜像设置)以及编码配置(IDEA和eclipse中的编码设置)。通过这些步骤,帮助开发者顺利完成Spring Boot项目的初始化和运行准备。
1323 0
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
415 0
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——使用Logger在项目中打印日志
本文介绍了如何在项目中使用Logger打印日志。通过SLF4J和Logback,可设置不同日志级别(如DEBUG、INFO、WARN、ERROR)并支持占位符输出动态信息。示例代码展示了日志在控制器中的应用,说明了日志配置对问题排查的重要性。附课程源码下载链接供实践参考。
1485 0
|
12月前
|
人工智能 自然语言处理 Nacos
Nacos 3.0:微服务与AI融合的全新治理平台
Nacos 3.0:微服务与AI融合的全新治理平台
415 46