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

在这里插入图片描述


更多相关内容可查看

注:本篇在基于已安装好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服务成功。
在这里插入图片描述

  • 40
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Nacos服务发现消费的过程主要涉及到以下几个部分。首先,在Spring Cloud应用的配置文件中,需要设置Nacos的相关配置,包括Nacos Server的地址。其次,Nacos服务发现的核心代码是通过NacosDiscoveryClient类实现的。该类通过调用NacosServiceDiscovery的getInstances方法获取服务实例列表,并通过getServices方法获取服务列表。最后,当微服务需要调用其他微服务时,可以利用Nacos服务发现功能,通过NacosDiscoveryClient获取需要调用服务实例列表,并进行负载均衡,实现微服务之间的相互调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Nacos 服务发现](https://blog.csdn.net/SUMMERENT/article/details/123003288)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Nacos服务发现注册中心之服务消费(发现)者(客户端源码)](https://blog.csdn.net/zmjmvp/article/details/126028247)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [SpringCloud:nacos配置中心+nacos服务发现个人总结](https://blog.csdn.net/tiexiaorenyu/article/details/125495946)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来一杯龙舌兰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值