Nacos注册中心

Nacos

安装

https://nacos.io/zh-cn/

源码安装

第一步:利用Gitee获取nacos在github上的代码到自己的gitee仓库中

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

第二步:下载源码到本地。

第三步:使用maven编译代码。

bash 复制代码
# 先切换到master分支
git checkout master
# 使用如下命令编译源码
mvn -Prelease-nacos -Dmaven.test.skip=true -Drat.skip=true clean install -U

第四步:编译好的内容在distribution目录下

第五步:把zip文件放到其他目录中,并解压。

第六步:修改配置conf目录下的配置文件,添加secretkey。

properties 复制代码
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

第七步:启动nacos F:\env\nacos\bin目录下

bash 复制代码
startup.cmd -m standalone

Nacos环境测试

https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html

bash 复制代码
#服务注册
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

#服务发现
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'

#发布配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"

#获取配置
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

Nacos服务的注册与发现

https://nacos.io/zh-cn/

https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

父POM

注意版本号的选取。

xml 复制代码
    <packaging>pom</packaging>

    <properties>
        <spring.cloud-version>Hoxton.SR10</spring.cloud-version>
        <springboot-version>2.2.9.RELEASE</springboot-version>
        <spring.cloudalibaba-version>2.2.9.RELEASE</spring.cloudalibaba-version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${springboot-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloudalibaba-version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

模块 provider

微服务模块中引入nacos依赖

yaml 复制代码
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

yml配置

yaml 复制代码
server:
  port: 8070
spring:
  application:
    name: service-provider  #服务名称
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848  #nacos注册中心的地址

启动类NacosProviderApplication

java 复制代码
@SpringBootApplication
@EnableDiscoveryClient  // 注册到nacos中
public class NacosProviderApplication {



    public static void main(String[] args) {
        SpringApplication.run(NacosProviderApplication.class, args);
    }


}
java 复制代码
    @RestController
    public class EchoController {
        
        @Value("${server.port}")
    	private Integer port;
        
        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string) {
            return "Hello Nacos Discovery: "+port+"--->" + string;
        }
    }

模块 consumer

pom文件与producer一致

yaml 复制代码
server:
  port: 8090
spring:
  application:
    name: service-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

启动类NacosConsumerApplication

java 复制代码
@SpringBootApplication
@EnableDiscoveryClient  // 注册到nacos中  不管是消费者还是提供者,都是这个注册到nacos中
public class NacosConsumerApplication {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(NacosConsumerApplication.class, args);
    }


}
java 复制代码
    @RestController
    public class TestController {

        private final RestTemplate restTemplate;

        @Autowired
        public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}

        @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
        public String echo(@PathVariable String str) {
            return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
        }
    }

Nacos服务配置中心

https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

POM文件

xml 复制代码
<dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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

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

yml配置文件

文件名为:bootstrap.yml

yaml 复制代码
spring:
  application:
    name: config-demo
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      config:
        group: mygroup
        file-extension: yaml
  profiles:
    active: dev

Nacos配置中心添加服务配置

注意需要在bootstrap配置文件中声明nacos中使用的配置文件的扩展名

properties 复制代码
spring.cloud.nacos.config.file-extension=yaml
yml 复制代码
spring:
  application:
    name: config-demo #跟配置的前缀名字
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      config:
        file-extension: yaml
  profiles:
    active: test #跟配置的后缀 设备名匹配

如果需要指定配置文件的分组,如下

properties 复制代码
spring.cloud.nacos.config.group=dev
.cloud.nacos.config.file-extension=yaml
yml 复制代码
spring:
  application:
    name: config-demo #跟配置的前缀名字
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      config:
        file-extension: yaml
  profiles:
    active: test #跟配置的后缀 设备名匹配

如果需要指定配置文件的分组,如下

properties 复制代码
spring.cloud.nacos.config.group=dev
相关推荐
爱琴孩1 天前
nacos实现注册中心原理详解
nacos·注册中心·raft协议
UCoding2 天前
我们来学nacos -- 切换UAT,搭建集群nacos
nacos·nacos集群
全靠bug跑3 天前
Nacos 入门实战:部署、服务注册与发现全指南
java·spring cloud·docker·nacos
梵得儿SHI5 天前
SpringCloud - 核心组件精讲:Nacos 深度解析(服务注册 + 配置中心一站式实现)
java·spring boot·spring cloud·nacos·微服务架构的核心组件·服务注册发现与配置管理·nacos的核心原理与实战应用
刘一说11 天前
Nacos 权限控制详解:从开源版 v2.2+ 到企业级安全实践
spring boot·安全·spring cloud·微服务·nacos·架构·开源
kong790692818 天前
微服务项目开发环境
微服务·nacos·rabbitmq·开发环境
whltaoin20 天前
【 Java微服务 】Spring Cloud Alibaba :Nacos 注册中心与配置中心全攻略(含服务发现、负载均衡与动态配置)
java·微服务·nacos·springcloud·注册中心·配置中心
小坏讲微服务1 个月前
Spring Cloud Alibaba 2025.0.0 与 Nacos 3.1.0 集群整合
分布式·nacos·架构·springcloud·nacos集群·springalibaba
没有bug.的程序员1 个月前
Spring Cloud Gateway 性能优化与限流设计
java·spring boot·spring·nacos·性能优化·gateway·springcloud
小道仙971 个月前
Dubbo如何使用Nacos做注册中心的
java·nacos·dubbo·服务注册