一:背景介绍
现象
由于dev和localhost使用的同一个命名空间,我们多个服务相互调用的时候,由于开发人员本地启动把本地服务注册到和dev同一个命令空间下,导致dev环境部分功能不能使用(在线人员列表无法加载出数据)
原因
在创建命名空间名字和填写命名空间id的时候,两者不一致,但是出现该问题
二:SpringBoot项目与Nacos配置
1、Nacos服务端配置命名空间和yml文件
2、创建SpringBoot项目
在IDEA中左上角选择File-New-Project
因为我们要建立的是SpringBoot项目,所以需要选择Spring Initializr,填写项目的名称,配置jdk版本
在父pom.xml中添加spring boot、spring cloud、spring cloud alibaba三个依赖
<dependencyManagement> <dependencies> <!--spring boot,spring cloud,spring cloud alibaba--> <!--选用官网稳定的版本--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.3.12.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR12</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
修改父pom.xml中配置的Spring Boot版本(可能会出现版本不兼容的问题)
3、创建子服务
点击项目名NacosInstance-New-Module
要创建一个子服务都是普通的Maven项目,所以这里我们选择Maven-Next
输入新创建服务的名称和地址
这时项目中就多了一个名字叫order-Service-nacos的服务,需要添加其pom.xml文件中配置nacos依赖
<dependencies> <!-- nacos服务注册/发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--nacos配置中心来做配置管理--> <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> </dependencies>
在order-Service-nacos子服务的src文件夹中,选择【resources】右击新建一个yml配置文件,并进行nacos的配置
server: port: 9001 servlet: context-path: /order-Service-nacos spring: cloud: nacos: discovery: server-addr: 81.70.2.8:8848 namespace: arpro-dev config: server-addr: 81.70.2.8:8848 namespace: arpro-dev prefix: arpro file-extension: yml application: name: order-nacos
4、Controller编写
在order-Service服务中按照下图的格式新建两个文件,分别为启动类和请求类(注意路径)
OrderController类中编写请求的逻辑代码
@RestController @RequestMapping("/placeOrder") @Controller public class OrderController { @GetMapping("/order") public String placeOrder(){ return "已下单"; } }
OrderServiceApplication类中编写程序启动逻辑
@SpringBootApplication @EnableDiscoveryClient public class OrderServiceApplication { public static void main(String[] args) { SpringApplication.run(OrderServiceApplication.class, args); } }
5、Tomcat启动程序
6、配置成功结果
三、总结
由此案例我们可以从中思考到:
- 修改的时候,两个不一致节省了多少时间?
- 两个一致会多花多少时间?
- 两个不一致会给我们带来哪些后期维护上的困扰
- 两个一致会给我们培养什么样的习惯?
- 计算如果不一致,每一位开发人员每次开发需要思考一下,计算不一致给我们带来时间上的消耗值