当前位置: 首页 > news >正文

【云原生】微服务的介绍与使用

前言:
好久没有用到微服务相关的知识了,最近在项目中又遇到了难题,因此又重新学习了一下,以下是根据所看课程做的笔记🎊
如果文章有什么需要改进的地方还请大佬多多指教🥂
小威先感谢大家的支持了😁
在这里插入图片描述

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

🎁如果大佬在准备面试,可以使用我找实习前用的刷题神器哦刷题神器点这里哟
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

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

以下正文开始

文章目录

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

Nacos基本概念

在这里插入图片描述
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. 服务及其元数据管理
    在这里插入图片描述

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的基本概念

在这里插入图片描述

  • 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;
}

在这里插入图片描述

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论🍻
最后再次给大家安利一波牛客,点击刷题神器
注册牛客,快来和博主一起刷题吧嘿嘿嘿👏 再次感谢各位小伙伴儿们的支持🤞

在这里插入图片描述

相关文章:

  • PHP基于Thinkphp的莆田学院图书馆管理系统毕业设计-附源码071418
  • Address already in use JVM_Bind 端口被占用的几个解决办法
  • Java:实现寻找一个开始节点和图中所有其他节点之间的最短路径算法(附完整源码)
  • 面试官:简单说一下使用Kafka的场景吧
  • 【牛客 - 剑指offer】详解 JZ56 数组中只出现一次的两个数字 Java实现(HashMap方案 + 利用异或运算的形式)
  • 华为OD机考0017-0018:第K长的字串-逢7过
  • Typora基本使用
  • 2021-03-26 Linux基础
  • Efficient Elements for presentations – Add-in for PowerPoint
  • R语言ggplot2可视化:ggplot2可视化水平半小提琴图(Horizontal Half Violin Plots)
  • 如何在terminal中使用Joplin并像vim一样移动?
  • 下一个排列问题next_permutation
  • SSM传染病监测防控管理系统毕业设计-附源码061525
  • 开题报告:基于java房产中介预约看房网站系统 毕业设计论文开题报告模板
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • 【css3】浏览器内核及其兼容性
  • Android Volley源码解析
  • Javascript弹出层-初探
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Laravel Telescope:优雅的应用调试工具
  • leetcode388. Longest Absolute File Path
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • MySQL的数据类型
  • MySQL数据库运维之数据恢复
  • nginx 配置多 域名 + 多 https
  • react 代码优化(一) ——事件处理
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 聚簇索引和非聚簇索引
  • 力扣(LeetCode)965
  • 使用agvtool更改app version/build
  • 网络应用优化——时延与带宽
  • 微信小程序:实现悬浮返回和分享按钮
  • 问题之ssh中Host key verification failed的解决
  • 用Canvas画一棵二叉树
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​低代码平台的核心价值与优势
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (javascript)再说document.body.scrollTop的使用问题
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (力扣)1314.矩阵区域和
  • (四)鸿鹄云架构一服务注册中心
  • *Django中的Ajax 纯js的书写样式1
  • .naturalWidth 和naturalHeight属性,
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Micro Framework 4.2 beta 源码探析
  • .net 怎么循环得到数组里的值_关于js数组
  • .Net 中Partitioner static与dynamic的性能对比