Nacos服务注册和配置中心

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: Nacos服务注册和配置中心

Nacos简介


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

Nacos=Eureka+config+bus

Naco是服务注册中心和服务配置中心


Nacos安装(单机&集群)


前提


JDK1.8+(包括1.8)

下面的项目是 SpringBoot2.2.2 + springcloud-alibaba 2.1.0


window安装Nacos


在  https://github.com/alibaba/nacos/tags   (https://github.com/alibaba/nacos/releases/tag/1.1.4)上选择版本然后下载 nacos-server-1.1.4.zip  


解压后进入nacos-server-1.1.4\nacos\bin 目录下 启动nacos-server


1.png


启动成功后访问  http://localhost:8848/nacos    如下图所示,账号密码都为 nacos


2.png


Linux安装单机版Nacos


步骤


在  https://github.com/alibaba/nacos/tags   (https://github.com/alibaba/nacos/releases/tag/1.1.4)上选择版本然后下载 nacos-server-1.1.4.tar.gz  


解压压缩包


tar -zxvf nacos-server-1.1.4.tar.gz


在解压后的bin 目录下运作 startup.sh ,并且添加单机版参数


./startup.sh -m standalone


3.png


遇到的问题


如果不添加参数 -m standalone,如下面代码所示


./startup.sh


系统会启动会遇到异常,所以运行成功后你可以查看一下 日志 /logs/start.out


Linux安装Nacos集群(伪集群)


此标题下 修改 startup.sh脚本 亲测可用, 后面的启动集群测试没有通过,勿看


通过修改startup.sh脚本,使其能配置端口,从而在一台服务器上开多个Nacos节点,然后在通过nginx进行代理转发。


左图是修改前,右图是修改后


4.png


5.png


下面中上图是修改前,下图是修改后


6.jpg


7.jpg


测试nacos启动脚本是否正确,指定端口为3344的单机版nacos


./startup.sh -p 3344 -m standalone


后面的启动集群测试没有通过,勿看,勿看,勿看


在startup.sh无误的情况下

在解压后的conf目录下的cluster.conf.example 复制一份并且重命名 为cluster.conf

修改cluster.conf,添加3台机器的IP和Nacos端口


7.png


启动三个节点进行测试


./startup.sh -p 3333
./startup.sh -p 4444
./startup.sh -p 5555


Nacos持久化


如果启动多个默认的Nacos节点,那么节点可能存在不一致的情况,因为每一个Nacos节点是使用内嵌的derby数据库。为了解决这个问题,Nacos采用集中式存储的方式来支持集群化部署,目前只支持MySQL(原来自己存自己的,现在大家用一个数据库保持一致性)


持久化配置


在解压后的 conf下有一个nacos-mysql.sql 数据库文件


8.png


在MySQL创建名称为nacos_config的数据库并执行此文件


9.png


修改conf下的application.properties,添加下面的配置


spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root


在解压后的bin 目录下运作 startup.sh ,(如果是单机版添加单机版参数)


服务提供者案例


代码下载 https://github.com/cbeann/share/tree/master/springcloud-Nacos-demo

在springboot+web的基础之上进行如下操作

添加依赖


<!--  SpringCloud alibaba nacos    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>


修改yml文件


server:
  port: 8001
spring:
  application:
    name: provider
  cloud:
    ###nocos注册中心
    nacos: 
      discovery:
        server-addr: localhost:8848   
management:
  endpoints:
    web:
      exposure:
        include: "*"


修改主启动类


@EnableDiscoveryClient


添加一个controller


@RestController
public class HelloController {
    @Value("${server.port}")
    private String serverPort;
    @GetMapping(value = "/provider/get/{id}")
    public String getPayment(@PathVariable("id") Integer id) {
        return "nacos registry, serverPort: " + serverPort + "\t id" + id;
    }
}


测试本服务


http://localhost:8001/provider/get/1  


可以正常请求并且Nacos注册中心有此服务


10.png


服务消费者案例


代码下载 https://github.com/cbeann/share/tree/master/springcloud-Nacos-demo


在springboot+web的基础之上进行如下操作


添加依赖


<!--  SpringCloud alibaba nacos    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>


修改yml文件


server:
  port: 80
spring:
  application:
    name: consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848


修改主启动类


@EnableDiscoveryClient


添加一个controller


@RestController
public class HelloController {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
    @Autowired
    private RestTemplate restTemplate;
    //请求的服务名称
    private String serverURL = "http://provider";
    @GetMapping("/consumer/get/{id}")
    public String paymentInfo(@PathVariable("id") Long id) {
        return restTemplate.getForObject(serverURL + "/provider/get/" + id, String.class);
    }
}


测试本服务


http://localhost/consumer/get/1


可以正常请求并且Nacos注册中心有此服务


11.png


Nacos服务配置中心案例(注意文中yml和yaml)


在springboot+web的基础之上进行如下操作


添加依赖


<!--   nacos config     -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
        <!--  SpringCloud alibaba nacos    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>


修改bootstrap.yml文件(☆☆☆☆☆)

注意:下面的配置中 file-extension的值yaml  


server:
  port: 3377
spring:
  application:
    name: config-nacos-client
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848   #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848   #Nacos服务配置中心地址
        file-extension: yaml  #指定yml格式的配置
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# config-nacos-clientt-dev.yaml


修改启动类


@EnableDiscoveryClient


添加业务逻辑controller


其中注解@RefreshScope很重要3


@RestController
@RefreshScope//支持Nacos的动态刷新
public class ConfigClientController {
    @Value("${config.info}")
    private String configInfo;
    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
}


在Nacos可视化界面中添加配置

其中命名规则为bootstrap.yml中值得拼接


# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# config-nacos-clientt-dev.yaml


12.png


13.png


14.png


参考


nacos github:


https://github.com/alibaba/Nacos


nacos官网


home


nacos下载地址


https://github.com/alibaba/nacos/tags


Spring Cloud Alibaba Reference Documentation


https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
3月前
|
人工智能 Java API
Nacos 3.1.0 正式发布,支持 A2A 注册中心与 MCP 注册协议增强
3.1.0 发布核心全新功能-Agent 注册中心,助力构建基于 A2A 协议的多 Agent 协作的AI应用,同时 MCP 注册中心适配最新 MCP 官方注册中心协议及升级优化多项核心功能。
952 34
|
9月前
|
存储 Kubernetes 安全
Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置
无论是使用 Nacos-Controller 实现配置的双向同步,还是直接在应用中接入 Nacos SDK 以获得更高级的配置管理特性,都能显著提升配置管理的灵活性、安全性和可维护性。使用 Nacos,您能够更好地管理和优化您的应用配置,从而提高系统的稳定性和可靠性。
821 49
|
存储 网络协议 Nacos
高效搭建Nacos:实现微服务的服务注册与配置中心
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。
2030 81
高效搭建Nacos:实现微服务的服务注册与配置中心
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
1403 138
|
监控 Java 测试技术
Nacos 配置中心变更利器:自定义标签灰度
本文是对 MSE Nacos 应用自定义标签灰度的功能介绍,欢迎大家升级版本进行试用。
1149 206
|
9月前
|
存储 人工智能 测试技术
Nacos托管LangChain应用Prompts和配置,助力你的AI助手快速进化
AI 应用开发中,总有一些让人头疼的问题:敏感信息(比如 API-KEY)怎么安全存储?模型参数需要频繁调整怎么办?Prompt 模板改来改去,每次都得重启服务,太麻烦了!别急,今天我们就来聊聊如何用 Nacos 解决这些问题。
|
11月前
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
4483 14
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
233 5
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
463 2
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
306 4