nacos配置中心的搭建和用法

首先介绍下什么是nacos,就长下面那样。

 

这个是nacos的登陆页面,点进去看下官方的文档介绍

 

 

这些官方的文档已经说的非常的明白了,我这就不累赘了。

 

但是这个具体怎么搞下来用呢?我记录了一下大家凑合着看。

 

先通过链接可以下载Nacos的最新发行版,这里我们选择1.1.4版本的Nacos

  •  
https://github.com/alibaba/nacos/releases

 

下载后解压:

我是直接用的1.3的当时在家下载github上的东西太慢了就懒得下直接用1.3的也是没问题滴。

接着双击下面的键就可以运行了。

 

 

但是我们还是配成自己的数据库安全方便一点他也给出了sql文件在conf文件夹下面

 

 

然后我们配置下连接数据的配置打开application.properties

 

 

填上自己的数据库配置信息就行

 

 

接着启动nacos启动好的状态如下图:

 

 

接着输入地址就可以进入到nacos的登陆页面了,初始登陆名和密码都是nacos进去之后的nacos如下图因为我之前导入了很多配置所以是有配置刚进来是没有配置的。

 

 

接着我们使用springcloud整合nacos

 

 

pom.xml的信息<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.5.15.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>lyj</groupId>    <artifactId>nacos-config</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>nacos-config</name>    <description>Demo project for Spring Boot</description>
    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>        <java.version>1.8</java.version>        <spring-cloud.version>Edgware.SR4</spring-cloud.version>    </properties>
    <dependencies>
        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>        </dependency>
        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>
       <!-- <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-eureka</artifactId>        </dependency>-->
        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <version>1.18.2</version>            <optional>true</optional>        </dependency>    </dependencies>
    <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.cloud</groupId>                <artifactId>spring-cloud-alibaba-dependencies</artifactId>                <version>0.2.2.RELEASE</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>
    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build>
</project>

项目结构:

 

boostrap.yml的配置:记住一定要是bootstrap.yml而不是application.yml

 

注意:这里必须使用bootstrap.properties。同时,spring.application.name值必须与上一阶段Nacos中创建的配置Data Id匹配(除了.properties或者.yaml后缀)。

spring:  application:    name: nacos-config  cloud:    nacos:      config:        server-addr: 127.0.0.1:8848        prefix: nacos-config        file-extension: yaml  profiles:    active: devserver:  port: 8081

启动类:

package lyj;
import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.context.config.annotation.RefreshScope;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;
@SpringBootApplicationpublic class NacosConfigApplication {
    public static void main(String[] args) {        SpringApplication.run(NacosConfigApplication.class, args);    }
    @Slf4j    @RestController    @RefreshScope    static class TestController{
        @Value("${didispace.title:}")        private String title;                @GetMapping("/test")        public String hello() {            log.info("title:" + title);            return title;        }    }    }

 

这里应用的程序猿DD大佬博客的一句话:

内容非常简单,@SpringBootApplication定义是个Spring Boot应用;还定义了一个Controller,其中通过@Value注解,注入了key为didispace.title的配置(默认为空字符串),这个配置会通过/test接口返回,后续我们会通过这个接口来验证Nacos中配置的加载。另外,这里还有一个比较重要的注解@RefreshScope,主要用来让这个类下的配置内容支持动态刷新,也就是当我们的应用启动之后,修改了Nacos中的配置内容之后,这里也会马上生效。

 

然后把项目启动。。。。。。

 

接着进入Nacos的控制页面,在配置列表功能页面中,点击右上角的“+”按钮,进入“新建配置”页面,如下图填写内容:

 

 

照着图中填写完发布即可。

Data ID:填入nacos-config.yamlGroup:不修改,使用默认值DEFAULT_GROUP配置格式:选择yaml配置内容:应用要加载的配置内容,这里仅作为示例,做简单配置,比如:didispace: title: iclyj

访问接口:

 

可以看到已经读取到nacos配置信息中的title数据,接着我们不重启项目改动nacos中配置中的didispace: title: 数据为 "lyj" 点击发布 然后 再访问接口:

 

可以看到信心已经动态的更新了。到此nacos搭建和基本的使用就已经完成了。整合项目已经上传到github欢迎大家给个star谢谢各位大佬。

git@github.com:CXLYJ/nacos-config.git

 

                                                            

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我可以为您介绍一下如何在Spring Boot中使用Dubbo和Nacos搭建RPC框架。 Dubbo是一个高性能、轻量级的开源Java RPC框架,可以提供远程方法调用和服务发现功能。Nacos是阿里巴巴开源的一个服务发现和配置管理平台,也是Dubbo官方推荐的服务注册中心和配置中心。 下面是具体的步骤: 1. 在pom.xml中添加Dubbo和Nacos的依赖: ```xml <!-- Dubbo依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.3</version> </dependency> <!-- Nacos依赖 --> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.2.1</version> </dependency> ``` 2. 在application.properties中配置Dubbo和Nacos: ```properties # Dubbo配置 dubbo.application.name=consumer dubbo.registry.address=nacos://localhost:8848 dubbo.registry.username=nacos dubbo.registry.password=nacos # Nacos配置 spring.cloud.nacos.discovery.server-addr=localhost:8848 spring.cloud.nacos.discovery.username=nacos spring.cloud.nacos.discovery.password=nacos ``` 3. 创建Dubbo服务提供者: ```java @Service public class UserServiceImpl implements UserService { @Override public User getById(Long id) { // 实现自己的业务逻辑 return new User(id, "张三"); } } ``` 4. 在Dubbo服务提供者中配置Dubbo: ```java @Configuration public class DubboProviderConfig { @Value("${dubbo.application.name}") private String appName; @Value("${dubbo.registry.address}") private String registryAddress; @Value("${dubbo.registry.username}") private String registryUsername; @Value("${dubbo.registry.password}") private String registryPassword; @Bean public ApplicationConfig applicationConfig() { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName(appName); return applicationConfig; } @Bean public RegistryConfig registryConfig() { RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress(registryAddress); registryConfig.setUsername(registryUsername); registryConfig.setPassword(registryPassword); return registryConfig; } @Bean public ProtocolConfig protocolConfig() { ProtocolConfig protocolConfig = new ProtocolConfig(); protocolConfig.setName("dubbo"); protocolConfig.setPort(20880); return protocolConfig; } @Bean public ProviderConfig providerConfig() { ProviderConfig providerConfig = new ProviderConfig(); providerConfig.setTimeout(5000); return providerConfig; } } ``` 5. 创建Dubbo服务消费者: ```java @RestController public class UserController { @Reference(version = "1.0.0") private UserService userService; @GetMapping("/user/{id}") public User getUserById(@PathVariable Long id) { return userService.getById(id); } } ``` 6. 在Dubbo服务消费者中配置Dubbo和Nacos: ```java @Configuration public class DubboConsumerConfig { @Value("${dubbo.application.name}") private String appName; @Value("${dubbo.registry.address}") private String registryAddress; @Value("${dubbo.registry.username}") private String registryUsername; @Value("${dubbo.registry.password}") private String registryPassword; @Bean public ApplicationConfig applicationConfig() { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName(appName); return applicationConfig; } @Bean public RegistryConfig registryConfig() { RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress(registryAddress); registryConfig.setUsername(registryUsername); registryConfig.setPassword(registryPassword); return registryConfig; } @Bean public ProtocolConfig protocolConfig() { ProtocolConfig protocolConfig = new ProtocolConfig(); protocolConfig.setName("dubbo"); protocolConfig.setPort(20880); return protocolConfig; } @Bean public ConsumerConfig consumerConfig() { ConsumerConfig consumerConfig = new ConsumerConfig(); consumerConfig.setTimeout(5000); return consumerConfig; } @Bean public NacosDiscoveryProperties nacosDiscoveryProperties() { NacosDiscoveryProperties nacosDiscoveryProperties = new NacosDiscoveryProperties(); nacosDiscoveryProperties.setServerAddr("localhost:8848"); nacosDiscoveryProperties.setUsername("nacos"); nacosDiscoveryProperties.setPassword("nacos"); return nacosDiscoveryProperties; } @Bean public NacosServiceDiscovery nacosServiceDiscovery() { return new NacosServiceDiscovery(); } @Bean public ReferenceConfig<UserService> userServiceReferenceConfig() { ReferenceConfig<UserService> referenceConfig = new ReferenceConfig<>(); referenceConfig.setInterface(UserService.class); referenceConfig.setVersion("1.0.0"); referenceConfig.setCluster("failfast"); return referenceConfig; } @Bean public DubboBootstrap dubboBootstrap() { return DubboBootstrap.getInstance(); } } ``` 这样,我们就成功地在Spring Boot中使用Dubbo和Nacos搭建了RPC框架。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值