Nacos:如何注册服务(上)
SpringCloud-Alibaba-Nacos 是阿里出品的一个服务发现与注册的组件,微服务需要调用其他微服务模块的服务或者微服务模块需要被其他模块调用,都需要到 Nacos 注册中心中注册该微服务模块
如何微服务模块注册到注册中心,主要是以下几个步骤
- 在微服务模块引入 Nacos 的依赖
- 启动 Nacos 服务器
- 微服务模块设置好注册中心的接口以及该微服务模块需要注册到服务中心的名称
- 在启动类加入 @EnableDiscoveryClient 注解表示该服务注册到 Nacos 中
一、引入 Nacos 依赖
首先需要引入 SpringCloud-Alibaba 组件包,其中就有 Nacos,由于我们每个微服务都需要将自身注册到注册中心以及发现要调用的服务地址,因此我们首先将 SpringCloud-Alibaba 组件包放置在 Common 通用模块下,然后 Common 模块引入 Nacos 依赖,然后下个每个微模块通过引用 common 模块来实现引入 Common 模块的 Nacos 依赖以及公共工具类、Bean 等
Common 模块–对应的 Module 为 Maven
<?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>doermail</artifactId>
<groupId>com.lookstarry.doermail</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>doermail-common</artifactId>
<!--所有微服务共同的依赖,注意这里的dependency不能有scope标签,这样其他微服务模块好像无法引入该依赖,要去掉</scope>标签-->
<dependencies>
<!--Nacos微服务发现与注册-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
<!--dependencyManagement含义表示依赖管理,
以后再dependencies中引入spring-cloud-alibaba依赖不需要指定版本号-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
其他微服务模块如何引用 Common 模块下的依赖以及工具类呢?
通过在其他模块的 pom.xml 中 dependencies 中引入 Common 模块的信息
<dependency>
<groupId>com.lookstarry.doermail</groupId>
<artifactId>doermail-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
这样其他微服务模块都能引入 Common 模块下 nacos
二、下载并启动 Nacos Server
- 首先需要获取 Nacos Server,支持直接下载和源码构建两种方式。
- 直接下载:Nacos Server 下载页
- 源码构建:进入 Nacos Github 项目页面,将代码 git clone 到本地自行编译打包,参考此文档。推荐使用源码构建方式以获取最新版本
- 启动 Server,进入解压后文件夹或编译打包好的文件夹,找到如下相对文件夹 nacos/bin,并对照操作系统实际情况之下如下命令。
- Linux/Unix/Mac 操作系统,执行命令
sh startup.sh -m standalone
- Windows 操作系统,执行命令
cmd startup.cmd
- Linux/Unix/Mac 操作系统,执行命令
![image.png](https://cdn.nlark.com/yuque/0/2021/png/2648023/1615625705374-a7db4ed1-7021-4e98-9eee-058ae34afd4d.png#align=left&display=inline&height=189&margin=%5Bobject%20Object%5D&name=image.png&originHeight=378&originWidth=2038&size=121650&status=done&style=none&width=1019)
三、微服务模块引入 Nacos 依赖
- 首先,在 Common 模块修改 pom.xml 文件,引入 Nacos Discovery Starter,在第一步在 Common 模块已经引入,所以微服务模块不需要重复引入
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
四、微服务模块配置注册中心 Nacos 地址以及该微服务注册到注册中心的地址
- 在微服务应用的 /src/main/resources/application.properties 配置文件中配置 Nacos Server 地址,
此外还需要配置注册服务的名称,否则无法注册服务
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: doermail-member
- 使用 @EnableDiscoveryClient 注解在微服务的启动类上开启服务注册与发现功能
@SpringBootApplication
@EnableDiscoveryClient //本微服务开启服务注册与发现
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
- 启动该微服务,控制台就会出现如下,表示该微服务注册到了 nacos 中
- 浏览器访问 nacos 提供的可视化页面http://127.0.0.1:8848/nacos/,用户名和密码均为 nacos
就可以看到刚刚注册的微服务 doermail-coupon,名称为我们指定的 application-name
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。