Nacos服务注册与发现

cnblogs 2024-10-12 08:09:01 阅读 57

1.基本原理概述

在微服务调用过程中主要是两个角色一个是服务的消费者,一个是服务的提供者

服务提供者:提供接口供其它微服务访问

服务消费者:调用其它微服务提供的接口

大型微服务项目中,服务提供者的数量会非常多,为了管理这些服务,就需要注册中心来对这些服务进行一个统一管理,服务消费者,服务提供者,注册中心三者关系:

1.服务消费者先把自己的服务放在注册中心统一进行管理

2.服务消费者在需要服务调用时向注册中心发起申请

3.服务消费者根据负载均衡策略进行服务的挑选调用

2.主流的注册中心管理工具

  • Eureka:Netflix公司出品,目前被集成在SpringCloud当中,一般用于Java应用
  • Nacos:Alibaba公司出品,目前被集成在SpringCloudAlibaba中,一般用于Java应用
  • Consul:HashiCorp公司出品,目前集成在SpringCloud中,不限制微服务语言

3.Nacos注册中心

由于Nacos是国内产品,中文文档比较丰富,而且同时具备配置管理功能,因此在国内使用较多,所以介绍nacos注册中心管理工具

4.Nacos注册发现

1.导入依赖

image

点击查看代码

<code> <dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

</dependency>

2.yaml配置文件

image

点击查看代码

<code>spring:

application:

name: item-service #注册到Nacos的服务名,不写会报错

cloud:

nacos:

discovery: #服务注册

server-addr: localhost:8848

3.测试

image

可以发现已经注册成功

5.服务调用

这里我使用的是openFeign来进行远程服务的调用

1.导入依赖

image

点击查看代码

<code> <!--openFeign-->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-openfeign</artifactId>

</dependency>

<!--负载均衡器-->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-loadbalancer</artifactId>

</dependency>

2.新建模块处理远程调用

image

在这里我新建了一个hm-api的模块

3.建立client接口

image

点击查看代码

<code>package com.hmall.api.client;

import com.hmall.api.config.DefaultFeignConfig;

import org.springframework.cloud.openfeign.FeignClient;

import org.springframework.web.bind.annotation.DeleteMapping;

import org.springframework.web.bind.annotation.RequestParam;

import java.util.Collection;

@FeignClient(value = "cart-service",configuration = DefaultFeignConfig.class)

public interface CartClient {

@DeleteMapping("/carts")

void deleteCartItemByIds(@RequestParam("ids") Collection<Long> ids);

}

日志的配置

点击查看代码

package com.hmall.api.config;

import com.hmall.common.utils.UserContext;

import feign.Logger;

import feign.RequestInterceptor;

import lombok.extern.slf4j.Slf4j;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

@Slf4j

public class DefaultFeignConfig {

@Bean

public Logger.Level feignLogLevel(){

return Logger.Level.FULL;

}

}

4.依赖导入

建立完成api后打jar包然后回到消费者处pom导入内部依赖

image

5.引导类加注解

image

6.调用

image

发现可以直接注入itemClient

image

调用成功功能实现



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。