Spring Cloud+Nacos实现服务注册中心(Hoxton版本)
前提条件
首先下载安装一个nacos server,然后启动nacos server。Nacos的下载和安装流程查看 https://www.cnblogs.com/ying-z/p/14630738.html
注册一个服务到nacos
(1)用SpringBoot新建一个服务,服务名称为nacos-discovery-server。
(2)在pom中加入必要的依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencyManagement> <dependencies> <!-- 声明Spring cloud的版本为Hoxton.SR3--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR3</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 声明Spring cloud alibaba版本为2.1.0.RELEASE --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- 声明nacos依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。
更多版本对应关系参考:版本说明 Wiki
(3)在application.properties中配置服务名称和nacos地址
server.port=9001
spring.application.name=nacos-discovery-server
spring.application.cloud.nacos.discovery.server-addr=127.0.0.1:8848
(4)新建一个Controller,提供一个接口
//SpringBoot主入口 @SpringBootApplication public class NacosDiscoveryServerApplication { public static void main(String[] args) { SpringApplication.run(NacosDiscoveryServerApplication.class, args); } } //接口 @RestController public class NacosDiscoveryController { @GetMapping("/nacos/discovery/hello") public String hello(@RequestParam String name) { return "hello, nacos discovery! " + name; } }
(5)启动服务,控制台打印以下内容,就说明注册成功了。
2020-04-28 14:49:42.749 INFO 9864 --- [main] c.a.c.n.registry.NacosServiceRegistry:nacos registry, DEFAULT_GROUP nacos-discovery-server 192.168.9.114:9001 register finished
(6)打开nacos控制台,我们可以在服务列表中发现我们的服务了。
注意事项:
(1)为什么我们的启动类上没有加@EnableDiscoveryClient注解,但是已经把服务注册到nacos上了?
在SpringCloud E版本的时候,对服务注册进行了优化,在依赖了spring-cloud-starter-alibaba-nacos-discovery之后,默认会将服务注册到注册中心。
(2)在已经依赖spring-cloud-starter-alibaba-nacos-discovery的情况下,如果我们不想让我们的服务注册到nacos应该怎么做?
在配置文件中添加如下依赖即可:
spring.cloud.nacos.discovery.enabled=false
服务的消费(调用)
我们已经搭建一个服务注册中心,同时也向这个服务注册中心注册了服务。接下来我们就可以发现和消费服务了。这其中服务的发现由nacos实现,而服务的消费可以由Ribbon或者Feign等实现,也就是说服务的调用需要nacos和Feign(Ribbon)两者配合起来才能实现。Feign的使用待后续.....