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的使用待后续.....
posted @ 2021-04-08 09:39  悬铃木pp  阅读(696)  评论(0编辑  收藏  举报