网站首页 > 技术文章 正文
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
启动
启动成功之后在浏览器输入:http://127.0.0.1:8848/nacos
查看
表示启动成功。
这个配置管理项便是nacos的注册中心服务端了,下面还有一个服务管理,是nacos注册中心 图形化界面的服务端,以后做介绍。启动成功后我们就可以开始写我们的java代码了。
先新建一个springboot项目,添加如下依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.0.RELEASE</version>
</dependency>
在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的内容写到配置中心里面去
配置详情:
在项目启动时就会去配置中心去读取配置信息(本地的配置文件application.properties还能用,但优先级低于配置中心的配置)
1.2基本概念
Nacos中的概念:
这张图很重要。表述了namespace、group和service/dataId的包含关系。
NACOS给的最佳实践表明,最外层的namespace是可以用于区分部署环境的,比如test,uat,product等。同时,也有一个商业利用价值:多租户。以namespace为单位,给用户开辟使用空间。
其它两个领域模型不用多解释了,见名知意。其目的也非常明显,就是为了能够逻辑上区分两个目标对象。
默认情况下,namespace=public,group=DEFAULT_GROUP。
明白了这个数据模型后,可以稍微玩转一下Console了,比如新建若干个namespace:
namespace顺利创建成功后,会在每个一级页面看到由namespace组成的TAB,可以任意切换namespace,对其下的数据进行操作。比如下图的配置列表:
接下来会创建一个Demo工程,用于构建基于NACOS的config server和discovery server。
二、代码示例
2.1构建Nacos服务提供者
代码结构如下:
其nacos-discovery-server的Maven pom.xml配置文件
application.properties配置如下
主实体类
启动成功之后Nacos控制台查看:
2.2构建RestTemplate服务
构建RestTemplate工程
其Maven pom如下:
配置文件application.properties
启动的RestTemplate服务如下:
RestTemplate服务请求url。运行起来查看Nacos控制台:
访问http://localhost:9002/test 查看RestTemplate调用
控制台打印情况
服务提供者日志如下:
Nacos服务RestTemplate调用成功
2.3Nacos Feign调用
构建Feign项目如图:
Maven pom.xml如下:
其配置文件application.properties如下:
Feign客户端指定
Feign调用示例如下:
启动成功之后
调用Feign示例
查看控制台
表示Feign调用成功
2.4 WebClient DIscovery调用
WebClient工程结构如图:
其pom.xml如图:
配置文件application.properties如下:
调用WebClient示例:
启动成功之后关系如图:
然后调用http://localhost:9003/test
WebClient调用成功
查看控制台
三、总结
Nacos只是作为注册中心。并不影响实际业务代码的功能。这就是Spring Cloud的强大之处,注册中心并不仅限于Nacos、Eureka,内部业务代码不变,不影响外层。
猜你喜欢
- 2024-11-24 使用Knative部署基于Spring Native的微服务
- 2024-11-24 阿里p7大佬首次分享Spring Cloud学习笔记,带你从0搭建微服务
- 2024-11-24 ElasticSearch进阶篇之搞定在SpringBoot项目中的实战应用
- 2024-11-24 SpringCloud微服务架构实战:类目管理微服务开发
- 2024-11-24 SpringBoot+SpringCloud题目整理
- 2024-11-24 《github精选系列》——SpringBoot 全家桶
- 2024-11-24 Springboot2.0学习2 超详细创建restful服务步骤
- 2024-11-24 SpringCloud系列:多模块聚合工程基本环境搭建「1」
- 2024-11-24 Spring Cloud Consul快速入门Demo
- 2024-11-24 Spring Cloud Contract快速入门Demo
- 最近发表
-
- 使用Knative部署基于Spring Native的微服务
- 阿里p7大佬首次分享Spring Cloud学习笔记,带你从0搭建微服务
- ElasticSearch进阶篇之搞定在SpringBoot项目中的实战应用
- SpringCloud微服务架构实战:类目管理微服务开发
- SpringBoot+SpringCloud题目整理
- 《github精选系列》——SpringBoot 全家桶
- Springboot2.0学习2 超详细创建restful服务步骤
- SpringCloud系列:多模块聚合工程基本环境搭建「1」
- Spring Cloud Consul快速入门Demo
- Spring Cloud Contract快速入门Demo
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)