Nacos入门案例

Posted 码酱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nacos入门案例相关的知识,希望对你有一定的参考价值。

最近新项目中使用到了Nacos,在这里做一个简单的入门分享。

一、它是干嘛的?

官方文档介绍:

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

它的两点核心功能就是:动态配置服务,服务发现及管理。

Nacos入门案例

之前我们可能通过springcloud config+git的方式来进行配置的管理,eureka来进行服务的注册与发现。现在可以通过Nacos来进行两者的结合,非常的方便,而且nacos的配置是存储在数据库中的,安全可靠。

二、Nacos搭建

    下载压缩包https://github.com/alibaba/nacos/releases,我这里使用的是1.2.0版本。解压进入bin目录下,双击startup.cmd运行。

Nacos入门案例

浏览器访问127.0.0.1:8848/nacos,默认登录账号密码都是nacos,可以改变或设置权限等,具体参考官方手册。

Nacos入门案例

配置相关概念

Namespace:代表不同环境,如开发、测试、生产环境。

Group:代表某项目,如XX医疗项目、XX电商项目。

DataId:每个项目下往往有若干个工程,每个配置集(DataId)是一个工程的主配置文件。

DataId默认格式为:${spring.application.name }-${spring.profiles.active}.yaml

1.新建一个namespace:

Nacos入门案例

我这里就命名为nacos-test

2.在刚刚创建的namespace下添加配置文件

Nacos入门案例

三、服务的注册发现与配置管理实践

1.创建父工程nacos-test,再创建两个子工程分别是nacos-provider,nacos-consumer,结构如下

Nacos入门案例

2.父项目pom文件

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion> <groupId>com.diku</groupId> <artifactId>nacos-test</artifactId> <version>1.0-SNAPSHOT</version> <modules> <module>nacos-provider</module> <module>nacos-consumer</module> </modules>    <packaging>pom</packaging> <properties> <spring.cloud.version>Greenwich.RELEASE</spring.cloud.version> <spring.cloud.alibaba.version>2.1.0.RELEASE</spring.cloud.alibaba.version> <spring.boot.version>2.1.3.RELEASE</spring.boot.version>    </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring.cloud.alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> <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>${spring.boot.version}</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>

3.nacos-provider子项目pom文件(nacos-consumer与之差不多)

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>nacos-test</artifactId> <groupId>com.diku</groupId> <version>1.0-SNAPSHOT</version> </parent>    <modelVersion>4.0.0</modelVersion>    <artifactId>nacos-provider</artifactId> <dependencies> <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> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>    </dependencies></project>

4.nacos-provider的bootstrap.yml文件(nacos-consumer与之差不多)

Nacos入门案例

5.nacos-provider的ProController

Nacos入门案例

6.启动类

@SpringBootApplication@EnableDiscoveryClient@EnableFeignClientspublic class App { public static void main(String[] args) { SpringApplication.run(App.class,args); }}

7.nacos-consumer的ConClient

@FeignClient(name = "nacos-provider")public interface ConClient{ @GetMapping("/provider") String getConfigName();}

8.nacos-consumer的ConController

@RestController@RefreshScopepublic class ConController { @Value("${common.name}")    private String configName; @Autowired    private ConClient conClient; @GetMapping("/all") public String getAllConfigName(){ return "provider configname : "+conClient.getConfigName()+ "----------->"+"consumer configname : "+ configName; }}

9.nacos-provider-dev.yaml的配置(nacos-consumer-dev.yaml类似)

Nacos入门案例

来看看我们的服务列表

Nacos入门案例

10.使用Postman测试

Nacos入门案例

修改nacos-provider-dev.yaml为

再次发送请求


以上是关于Nacos入门案例的主要内容,如果未能解决你的问题,请参考以下文章

一个简单的案例入门 gRPC

一个简单的案例入门 gRPC

springcloud3 Nacos的服务搭建和生产消费案例

springcloud3 Nacos的服务搭建和生产消费案例

SpringCloud Nacos 注册中心 -- Nacos快速入门Nacos服务分级存储模型(集群)集群负载均衡策略 NacosRule

探花交友day00—探花交友前置Dubbo