Erlo

Spring Cloud 从入门到精通(二)集成 Nacos 构建微服务实现服务注册

2021-07-29 14:00:13 发布   486 浏览  
页面报错/反馈
收藏 点赞

阿里巴巴开源 Nacos 定位是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 支持的功能包括服务发现,集成配置中心,和服务数据管理。本篇文章主要向大家分享关于 Spring Cloud Alibaba 集成 Nacos 框架来实现服务注册。服务注册是指项目启动的时候,生产者将当前服务自身的信息地址注册到Nacos server 注册中心。

创建Maven项目

新建discovery-nacos-provider-demo01命名的项目。Maven项目搭建完成后,整体目录结构如下图所示:

在这里插入图片描述

新建pom.xml文件

在文件中增加依赖jar包配置信息,具体参考如下:



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.5.RELEASE
         
    
    com.lidong
    discovery-nacos-provider-demo01
    1.0.0
    discovery-nacos-provider-demo01
    Demo projectfor Spring Boot
    
        1.8
        2.8.6
        2.2.0.RELEASE
    
    
        
            com.google.code.gson
            gson
            ${gson.version}
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            ${spring-cloud-alibaba.version}
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    
    
        
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    
    
        
            spring-milestones
            Spring Milestones
            https://repo.spring.io/milestone
        
    

注:对于引入依赖的jar包简单说明一下,本案例使用的是Spring Boot 2.2.5.RELEASE版本和Spring Cloud Alibaba 2.2.0.RELEASE版本,注意使用版本的兼容性,否则容易报错。

1)健康检查依赖于此包 spring-boot-starter-actuator

2)Spring Cloud nacos 的服务发现支持 spring-cloud-starter-alibaba-nacos-discovery

配置数据源源

在application.yml文件中添加配置信息如下:

server:
  port: 9001
spring:
  application:
    name: discovery-nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

配置参数说明:

server.port:9001 服务提供者的端口

spring.application.name 指注册到nacos server的名称,在后续发布的“Spring Cloud Alibaba 集成 Nacos 构建微服务实现服务发现”章节【关注素文宅博客网站,Spring Cloud Alibaba框架系列文章持续更新中,微信公众号“Java精选”,切换至聚合->开源项目->包含Spring Boot和Spring Cloud等系列文章】中会根据这个名称来进行服务调用。

spring.application.cloud.nacos.discovery.server-addr: 127.0.0.1:8848 nacos地址和端口号默认是127.0.0.1:8848,若果没有配置hosts参数其默认的地址是localhost,nacos服务会占用8848端口。

新建实体类文件

新建BootUser实体类文件,用于赋值数据并返回给Json串数据给调用方,代码如下:

package com.yoodb.study.nacos.demo01;
public class BootUser {
    private Integer id;
    private String name;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

新建注册服务

新建HelloWorldController类文件,提供provider接口,返回一个json字符串给调用方,具体代码如下:

package com.yoodb.study.nacos.demo01;
import com.google.gson.Gson;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
    @RequestMapping("/provider/{id}")
    public String provider(@PathVariable("id")Integer id) {
        BootUser user =new BootUser();
        user.setId(id);
        user.setName("关注微信公众号“Java精选”,Spring Cloud系列文章持续更新中" +
                ",带你从入门到精通,玩转Spring Cloud框架。");
        String jsons =new Gson().toJson(user);
        return jsons;
    }
}

添加启动类

新建SCNSDemo01Application类文件,具体代码如下:

package com.yoodb.study.nacos.demo01;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
 * 服务注册
 */
@EnableDiscoveryClient
@SpringBootApplication
public class SCNSDemo01Application {
public static void main(String[] args) {
SpringApplication.run(SCNSDemo01Application.class, args);
}
}

@EnableDiscoveryClient注解是指开启服务发现支持,让注册中心能够发现,扫描到该服务。

启动Maven项目

项目启动成功后,输出日志参考如下:

2020-03-26 21:29:55.474  INFO 34272 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLsas dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties availableon classpath.
2020-03-26 21:29:55.707  INFO 34272 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService'applicationTaskExecutor'
2020-03-26 21:29:55.821  INFO 34272 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService'Nacso-Watch-Task-Scheduler'
2020-03-26 21:29:59.313  INFO 34272 --- [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneathbase path'/actuator'
2020-03-26 21:29:59.428  INFO 34272 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat startedon port(s): 9001 (http) with context path''
2020-03-26 21:29:59.573  INFO 34272 --- [           main] c.a.c.n.registry.NacosServiceRegistry    : nacos registry, DEFAULT_GROUP discovery-nacos-provider 10.115.51.132:9001 register finished
2020-03-26 21:30:01.276  INFO 34272 --- [           main] d.SpringCloudNacosStudyDemo01Application : Started SpringCloudNacosStudyDemo01Applicationin 14.489 seconds (JVM runningfor 17.618)
2020-03-26 21:30:02.201  INFO 34272 --- [)-10.115.51.132] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet'dispatcherServlet'
2020-03-26 21:30:02.202  INFO 34272 --- [)-10.115.51.132] o.s.web.servlet.DispatcherServlet        : Initializing Servlet'dispatcherServlet'
2020-03-26 21:30:02.211  INFO 34272 --- [)-10.115.51.132] o.s.web.servlet.DispatcherServlet        : Completed initializationin 9 ms

服务提供者发布成功。

请求接口地址:http://localhost:9001/provider/1,查看接口返回结果:

{"id":1,"name":"关注微信公众号“Java精选”,Spring Cloud系列文章持续更新中,带你从入门到精通,玩转Spring Cloud框架。"}

访问Nacos server地址,该服务在“Spring Cloud 从入门到精通(一)Nacos 服务中心初探”章节已经讲述过,不了解的朋友可以翻看一下,在此处就省略了:

在这里插入图片描述

http://192.168.101.196:8848/nacos/index.html

在控制台会发现服务列表中有一个名为discovery-nacos-provider的服务。

在这里插入图片描述

点击控制台详情按钮,可以查看服务的详细信息,参考如图所示:

在这里插入图片描述

本文篇文章的项目源码(discovery-nacos-provider-demo01)地址:https://github.com/yoodb/springcloud

至此,关于Spring Cloud 集成 Nacos框架实现服务注册配置完毕,后续Spring Cloud系列文章持续更新中。下面朋友们可以试一试搭建项目,有什么疑问欢迎下方留言。

欢迎扫码关注微信公众号:“Java精选”(w_z90110),回复关键字领取资料:如Mysql,Hadoop,Dubbo,CAS源码等等,免费领取视频教程、资料文档和项目源码。

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、ElasticSearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认