首页 > 编程语言 >Nacos服务注册、调用、发现(附源码)

Nacos服务注册、调用、发现(附源码)

时间:2024-07-03 15:28:14浏览次数:3  
标签:调用 服务 class nacos Nacos 源码 public

在这里插入图片描述

文章目录


更多相关内容可查看

注:本篇在基于已安装好window版Nacos的前提下进行

如需安装Nacos,请移步阿里Nacos下载、安装(保姆篇)

源码地址:https://gitee.com/its-a-little-bad/nacos.git

Nacos悉知

Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款更易于构建云原生应用的动态服务发现、配置和服务管理平台。

以下是Nacos服务注册、调用、发现的基本原理:

  • 服务注册:当一个服务实例启动并向Nacos注册自己的服务信息(如服务名、IP、端口、运行状态等)后,Nacos会将这些信息存储在其内部的注册表中。这样,Nacos就可以跟踪所有注册的服务实例的运行状态。
  • 服务发现:当一个服务需要调用另一个服务时,它会向Nacos查询该服务的信息。Nacos会从其注册表中查找并返回相应服务的当前可用实例列表。服务消费者可以根据这些信息选择一个合适的服务实例进行调用。
  • 服务调用:服务消费者根据Nacos返回的服务实例信息,直接调用服务提供者的API接口,完成服务的调用。
  • 健康检查:Nacos会定期对注册的服务实例进行健康检查,如果发现某个服务实例不可用(如网络故障、服务崩溃等),Nacos会将其从注册表中移除,以确保服务消费者不会获取到不可用的服务实例信息。

通过这种方式,Nacos实现了服务的自动注册、发现和调用,大大简化了微服务架构的复杂性。

Nacos登陆

登陆地址:lcalhost:8848/nacos/ 进去发现是没有任何服务的
在这里插入图片描述

Nacos服务注册与发现

Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

以下是Nacos服务注册和发现的基本步骤:

1. 添加Nacos Server依赖

首先,你需要在你的项目中添加Nacos Server的依赖。如果你使用的是Maven,你可以在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.配置文件application.yml修改

你需要在你的application.properties或者application.yml文件中配置Nacos Server的地址

服务消费yml

server:
  port: 8763
spring:
  application:
    name: nacos-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    sentinel:
      transport:
        port: 8719
        dashboard: localhost:8080

feign.sentinel.enabled: true

服务生产yml

server:
  port: 8762
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    sentinel:
      transport:
        port: 8719
        dashboard: localhost:8080

3. 使用@EnableDiscoveryClient注解:

在你的主类或者配置类上添加@EnableDiscoveryClient注解,这样你的服务就可以注册到Nacos Server了

//服务生产
@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {

	public static void main(String[] args) {
		SpringApplication.run(NacosProviderApplication.class, args);
	}

}
//服务消费
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosConsumerApplication {

	public static void main(String[] args) {
		SpringApplication.run(NacosConsumerApplication.class, args);
	}
}

5.验证服务注册是否成功

启动2个工程,访问localhost:8848,可以发现nacos-provider和nacos-consumer
在这里插入图片描述

服务调用

nacos作为服务注册和发现组件时,在进行服务消费,可以选择RestTemplate和Feign等方式

提供服务

在nacos-provider工程,写一个Controller提供API服务

@RestController
public class ProviderController {

Logger logger= LoggerFactory.getLogger(ProviderController.class);

@GetMapping("/hi")
public String hi(@RequestParam(value = "name",defaultValue = "forezp",required = false)String name){

        return "hi "+name;
    }
}

消费服务(Feign)

在nacos-consumer的pom文件引入以下的依赖:

<dependency>
	<groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

在NacosConsumerApplication启动文件上加上@EnableFeignClients注解开启FeignClient的功能。

@EnableFeignClients
public class NacosConsumerApplication {

	public static void main(String[] args) {
		SpringApplication.run(NacosConsumerApplication.class, args);
	}
}

写一个FeignClient,调用nacos-provider的服务,代码如下:

@FeignClient("nacos-provider")
public interface ProviderClient {

    @GetMapping("/hi")
    String hi(@RequestParam(value = "name", defaultValue = "forezp", required = false) String name);
}

写一个消费API,该API使用ProviderClient来调用nacos-provider的API服务,代码如下:

@RestController
public class ConsumerController {

    @Autowired
    ProviderClient providerClient;

    @GetMapping("/hi-feign")
    public String hiFeign(){
       return providerClient.hi("feign");
    }
}

测试

在浏览器上访问http://localhost:8763/hi-feign,出现以下图示时nacos-consumer调用nacos-provider服务成功。
在这里插入图片描述

标签:调用,服务,class,nacos,Nacos,源码,public
From: https://blog.csdn.net/Aaaaaaatwl/article/details/140141888

相关文章

  • electron 启动时调用exe
    在electron主程序,一般未main中//exe地址letservicePath='resources/service/win-unpacked/vue3-ts-music.exe'if(process.env.NODE_ENV==='development'){ servicePath='service/win-unpacked/vue3-ts-music.exe'}app.whenReady()......
  • 最新AI源码-ChatGPT商业运营版系统源码,AI绘画网站系统,TTS & 语音识别对话、文档分析、
    一、前言人工智能语言模型和AI绘画在多个领域都有广泛的应用.....SparkAi创作系统是一款基于ChatGPT和Midjourney开发的智能问答和绘画系统,提供一站式AIB/C端解决方案,涵盖AI大模型提问、AI绘画、文档分析、图像识别和理解、TTS&语音识别、AI换脸等多项功能。支持GPTs应......
  • JAVA妇产科专科电子病历系统源码,前端框架:Vue,ElementUI
    JAVA妇产科专科电子病历系统源码,前端框架:Vue,ElementUI孕产妇健康管理信息管理系统是一种将孕产妇健康管理信息进行集中管理和存储的系统。通过建立该系统,有助于提高孕产妇健康管理的效率和质量,减少医疗事故发生的可能性,管理医疗资源,保证孕产妇得到及时、准确的医疗服务。该系......
  • python+中医病案管理系统设计与实现-计算机毕业设计源码131320
    摘 要随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的中医病案管理系统,会使;中医病案管理系统的管理工作系统化、规范化,也会提高平台形象,提高管理效率。本系统是针对目前中医病案管理系统的实际需求,从实际工作出发,对过......
  • springboot+手机商城网站-计算机毕业设计源码201029
    摘 要在信息飞速发展的今天,网络已成为人们重要的信息交流平台。手机店每天都有大量的手机商品需要通过网络发布,为此,本人开发了一个基于springboot手机商城网站。本系统采用跨平台的JAVA语言开发,利用springboot框架进行逻辑控制,MySQL数据库存储数据,最后Tomcat服务器完成发布......
  • 【文档+源码+调试讲解】jspm宠物论坛设计网站
    摘 要宠物论坛设计网站采用B/S模式,促进了宠物论坛设计网站的安全、高效、快捷的发展。传统的管理模式还处于手工处理阶段,管理效率极低,随着用户的不断增多,传统基于手工管理模式已经无法满足当前用户需求,随着信息化时代的到来,使得宠物论坛设计网站的开发成了必然。本网站系......
  • 【ORB_SLAM的安装报错】—— 使用./build.sh编译ORB_SLAM源码时出现报错:/usr/bin/ld:
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、/usr/bin/ld:找不到-lboost_serialization1.问题描述2.解决(1).下载源码(2).编译安装总结前言Boost库是一组由C++标准库的扩展库组成的集合,旨在为C++开发者提供高质量和功能丰......
  • 1367java jsp SSM留学生交流互动论坛网站系统经验分享计划分享软件推荐网址推荐标签分
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......
  • 287java jsp SSM旅游信息网站系统旅游景点管理(源码+文档+PPT+运行视频+讲解视频)
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......
  • 1187java jsp SSM列车火车高铁票务信息管理系统(源码+文档+PPT+运行视频+讲解视频)
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......