Spring Cloud Alibaba Nacos示例说明

Spring Cloud Alibaba Nacos示例说明

一、Nacos简介

Nacos是采用基于DNS和基于RPC的服务发现(可作为Dubbo、SpringCloud的注册中心)、动态配置服务(配置Config中心)、动态DNS服务。

Nacos可用来进行发现、配置和管理微服务,提供了一些简单易用的特性集,帮助我们实现动态服务发现、服务配置管理、服务及流量管理。

Nacos可以更敏捷和容易的构建、交付和管理微服务平台。Nacos是构建以“服务”为中心的现代应用架构的服务基础设施。

1.1nacos作为注册中心

先在官网上下载nacos中间件,下面教程有启动步骤

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

程序启动默认占用的端口是8848(珠穆朗玛峰的高度),我们可以对端口进行修改,用编辑器打开bin目录下的startup.cmd文件 添加一行代码

set "JAVA_OPT=%JAVA_OPT% --server.port=9090

端口号就改成9090了。

还可以在conf文件下的application.properties中添加

server.port=9090

启动


Spring Cloud Alibaba Nacos示例说明


启动成功之后在浏览器输入:http://127.0.0.1:8848/nacos

查看


Spring Cloud Alibaba Nacos示例说明


表示启动成功。

这个配置管理项便是nacos的注册中心服务端了,下面还有一个服务管理,是nacos注册中心 图形化界面的服务端,以后做介绍。启动成功后我们就可以开始写我们的java代码了。

先新建一个springboot项目,添加如下依赖

<dependency>

<code>  <groupid>org.springframework.cloud/<groupid>  <artifactid>spring-cloud-starter-alibaba-nacos-config/<artifactid>  <version>0.2.0.RELEASE/<version>/<code>

在resource目录下加入 bootstrap.properties文件 并添加配置中心相关信息
bootstrap.properties:

#服务名

spring.application.name=nacos-config-example

# 配置中心url

spring.cloud.nacos.config.server-addr=127.0.0.1:8848

相应的application.properties的内容写到配置中心里面去


Spring Cloud Alibaba Nacos示例说明


配置详情:


Spring Cloud Alibaba Nacos示例说明


在项目启动时就会去配置中心去读取配置信息(本地的配置文件application.properties还能用,但优先级低于配置中心的配置)

1.2基本概念

Nacos中的概念:


Spring Cloud Alibaba Nacos示例说明


这张图很重要。表述了namespace、group和service/dataId的包含关系。

NACOS给的最佳实践表明,最外层的namespace是可以用于区分部署环境的,比如test,uat,product等。同时,也有一个商业利用价值:多租户。以namespace为单位,给用户开辟使用空间。

其它两个领域模型不用多解释了,见名知意。其目的也非常明显,就是为了能够逻辑上区分两个目标对象。

默认情况下,namespace=public,group=DEFAULT_GROUP。

明白了这个数据模型后,可以稍微玩转一下Console了,比如新建若干个namespace:


Spring Cloud Alibaba Nacos示例说明


namespace顺利创建成功后,会在每个一级页面看到由namespace组成的TAB,可以任意切换namespace,对其下的数据进行操作。比如下图的配置列表:


Spring Cloud Alibaba Nacos示例说明


接下来会创建一个Demo工程,用于构建基于NACOS的config server和discovery server。

二、代码示例

2.1构建Nacos服务提供者

代码结构如下:


Spring Cloud Alibaba Nacos示例说明


其nacos-discovery-server的Maven pom.xml配置文件


Spring Cloud Alibaba Nacos示例说明


Spring Cloud Alibaba Nacos示例说明


application.properties配置如下


Spring Cloud Alibaba Nacos示例说明


主实体类


Spring Cloud Alibaba Nacos示例说明


启动成功之后Nacos控制台查看:


Spring Cloud Alibaba Nacos示例说明


2.2构建RestTemplate服务

构建RestTemplate工程


Spring Cloud Alibaba Nacos示例说明


其Maven pom如下:


Spring Cloud Alibaba Nacos示例说明


Spring Cloud Alibaba Nacos示例说明


配置文件application.properties


Spring Cloud Alibaba Nacos示例说明


启动的RestTemplate服务如下:


Spring Cloud Alibaba Nacos示例说明


RestTemplate服务请求url。运行起来查看Nacos控制台:


Spring Cloud Alibaba Nacos示例说明


访问http://localhost:9002/test 查看RestTemplate调用


Spring Cloud Alibaba Nacos示例说明


控制台打印情况


Spring Cloud Alibaba Nacos示例说明


服务提供者日志如下:


Spring Cloud Alibaba Nacos示例说明


Nacos服务RestTemplate调用成功

2.3Nacos Feign调用

构建Feign项目如图:


Spring Cloud Alibaba Nacos示例说明


Maven pom.xml如下:


Spring Cloud Alibaba Nacos示例说明


Spring Cloud Alibaba Nacos示例说明


其配置文件application.properties如下:


Spring Cloud Alibaba Nacos示例说明


Feign客户端指定


Spring Cloud Alibaba Nacos示例说明


Feign调用示例如下:


Spring Cloud Alibaba Nacos示例说明


启动成功之后


Spring Cloud Alibaba Nacos示例说明


调用Feign示例


Spring Cloud Alibaba Nacos示例说明


查看控制台


Spring Cloud Alibaba Nacos示例说明


表示Feign调用成功

2.4 WebClient DIscovery调用

WebClient工程结构如图:


Spring Cloud Alibaba Nacos示例说明


其pom.xml如图:


Spring Cloud Alibaba Nacos示例说明


Spring Cloud Alibaba Nacos示例说明


配置文件application.properties如下:


Spring Cloud Alibaba Nacos示例说明


调用WebClient示例:


Spring Cloud Alibaba Nacos示例说明


启动成功之后关系如图:


Spring Cloud Alibaba Nacos示例说明


然后调用http://localhost:9003/test


Spring Cloud Alibaba Nacos示例说明


WebClient调用成功

查看控制台


Spring Cloud Alibaba Nacos示例说明


三、总结

Nacos只是作为注册中心。并不影响实际业务代码的功能。这就是Spring Cloud的强大之处,注册中心并不仅限于Nacos、Eureka,内部业务代码不变,不影响外层。



分享到:


相關文章: