前言:

好久没有用到微服务相关的知识了,最近在项目中又遇到了难题,因此又重新学习了一下,以下是根据所看课程做的笔记🎊

如果文章有什么需要改进的地方还请大佬多多指教🥂

小威先感谢大家的支持了😁

微服务 云原生架构模式 微服务与云原生_云原生

🏠个人主页:小威要向诸佬学习呀 🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:目前大二,在一家满意的公司实习👏👏

牛客部分使用反馈,个人感觉还不错,帮我找到了心仪的公司,希望各位伙伴儿们通过它也能提高不少🥂🥂🥂

以下正文开始


文章目录

  • Nacos基本概念
  • Nacos的使用
  • Feign的基本概念
  • Feign服务调用


Nacos基本概念

微服务 云原生架构模式 微服务与云原生_springcloud_02


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

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

常见的注册中心:

  1. Eureka(原生,2.0遇到性能瓶颈,停止维护)
  2. Zookeeper(支持,专业的独立产品。例如:dubbo)
  3. Consul(原生,GO语言开发)
  4. Nacos相对于 Spring Cloud Eureka 来说,Nacos 更强大。Nacos = Spring Cloud Eureka + Spring Cloud Config
  • Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config
  • 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
  • Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。

Nacos主要提供以下四大功能:

  1. 服务发现和服务健康监测
  2. 动态配置服务
  3. 动态DNS服务
  4. 服务及其元数据管理
  5. 微服务 云原生架构模式 微服务与云原生_微服务_03

Nacos的使用

在service模块配置pom
配置Nacos客户端的pom依赖

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

添加服务配置信息
配置application.properties,在客户端微服务中添加注册Nacos服务的配置信息:spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
添加Nacos客户端注解
在客户端微服务启动类中添加注解:@EnableDiscoveryClient
然后,启动客户端微服务,启动注册中心
启动已注册的微服务,可以在Nacos服务列表中看到被注册的微服务。

Feign的基本概念

微服务 云原生架构模式 微服务与云原生_微服务_04

  • Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。
  • Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。
  • Spring Cloud对Feign进行了增强,使Feign支持了Spring MVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便。
  • Spring Cloud Feign是基于Netflix feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能外,还提供了一种声明式的Web服务客户端定义的方式。
  • Spring Cloud Feign帮助我们定义和实现依赖服务接口的定义。在Spring Cloud feign的实现下,只需要创建一个接口并用注解方式配置它,即可完成服务提供方的接口绑定,简化了在使用Spring Cloud Ribbon时自行封装服务调用客户端的开发量。

Feign服务调用

第一步先在service模块添加pom依赖

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

接着在调用端的启动类添加注解

@EnableFeignClients
创建包和接口
创建client包
@FeignClient注解用于指定从哪个服务中调用功能 ,名称与被调用的服务名保持一致。
@GetMapping注解用于对被调用的微服务进行地址映射。
@PathVariable注解一定要指定参数名称,否则出错
@Component注解防止,在其他位置注入CodClient时idea报错

package com.guli.edu.client;
@FeignClient("service-vod")
@Component
public interface VodClient {
    @DeleteMapping(value = "/eduvod/vod/video/{videoId}")
    public R removeVideo(@PathVariable("videoId") String videoId);
}

然后开始调用微服务
在调用端的VideoServiceImpl中调用client中的方法

@Override
public boolean removeVideoById(String id) {
    //查询id
    Video video = baseMapper.selectById(id);
    String videoSourceId = video.getVideoSourceId();
    //删除视频资源
    if(!StringUtils.isEmpty(videoSourceId)){
        vodClient.removeVideo(videoSourceId);
    }
    Integer result = baseMapper.deleteById(id);
    return null != result && result > 0;
}

微服务 云原生架构模式 微服务与云原生_微服务_05

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论🍻

微服务 云原生架构模式 微服务与云原生_java_06