谷粒学院(十二)Nacos服务 | Fegin | 完善删除课程业务 | Hystrix(一)

简介: 谷粒学院(十二)Nacos服务 | Fegin | 完善删除课程业务 | Hystrix

一、微服务与springcloud


1、什么是微服务


(1)微服务是架构风格

(2)把一个项目拆分成独立的多个服务,多个服务是独立运行,每个服务占用独立进程


我们的项目就是一个微服务项目



9e29b90fc0f639b28e04dc1ae76c525d.png

2、springcloud说明


(1)springcloud并不是一种技术,是很多技术总成,很多框架集合


(2)springcloud里面有很多框架(技术),使用springcloud里面这些框架实现微服务操作


(3)使用springcloud,需要依赖springboot技术


3、Spring Cloud相关基础服务组件


服务发现——Netflix Eureka (Nacos)

服务调用——Netflix Feign

熔断器——Netflix Hystrix

服务网关——Spring Cloud GateWay

分布式配置——Spring Cloud Config (Nacos)

消息总线 —— Spring Cloud Bus (Nacos)


4、Spring Cloud的版本


Spring Cloud并没有熟悉的数字版本号,而是对应一个开发代号。

a924d0c560852e2c66df00531e9502f7.png


5、Spring Cloud 小版本类表


  • SNAPSHOT: 快照版本,随时可能修改
  • M: MileStone,M1表示第1个里程碑版本,一般同时标注PRE,表示预览版版。
  • SR: Service Release,SR1表示第1个正式版本,一般同时标注GA:(GenerallyAvailable),表示稳定版本。


二、服务发现 – 搭建Nacos服务


1、Nacos基本概念


(1)Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。


(2)常见的注册中心:


Eureka(原生,2.0遇到性能瓶颈,停止维护)


Zookeeper(支持,专业的独立产品。例如:dubbo)


Consul(原生,GO语言开发)


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 实现服务的注册与发现。


(3)Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。


Nacos主要提供的大功能:


服务发现和服务健康监测


动态配置服务


动态DNS服务


服务及其元数据管理


(4)Nacos结构图


ba854b3a0c49846b127ebda57b19a421.jpg

2、Nacos下载和安装


(1)下载地址和版本

下载地址:https://github.com/alibaba/nacos/releases

下载版本:nacos-server-1.1.4.tar.gz 或 nacos-server-1.1.4.zip,解压任意目录即可

(2)启动nacos服务


  • Linux/Unix/Mac 启动命令
    启动命令:sh startup.sh -m standalone
  • Windows 启动命令:
    cmd startup.cmd 或者双击startup.cmd运行文件。


访问:http://localhost:8848/nacos 用户名密码:nacos/nacos

d7f6f5eab48cdafc3c1351f7b5921631.png

17fbb2e950d10073310d742ba727d186.png

三、服务注册(service_edu为例)


把service-edu微服务注册到注册中心中,service-vod步骤相同


1、在service模块配置pom

<!--服务注册-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2、添加服务配置信息


配置application.properties,在客户端微服务中添加注册Nacos服务的配置信息


# nacos服务地址
spring.cloud.nacos.discovery.server-addr=192.168.174.128:8848


3、添加Nacos客户端注解


在客户端微服务启动类中添加注解@EnableDiscoveryClient


4、启动客户端微服务


启动已注册的微服务,可以在Nacos服务列表中看到被注册的微服务

df02ecb507245baa4c88d228d4f28dc4.png

四、服务调用 – Fegin


1、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时自行封装服务调用客户端的开发量。


2、实现服务调用


1、需求—删除课时的同时删除云端视频

2、在service模块添加pom依赖

<!--服务调用-->
<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

3、在调用端的启动类添加注解 @EnableFeignClients


4、创建包和接口—创建client包


@FeignClient注解用于指定从哪个服务中调用功能 ,名称与被调用的服务名保持一致。

@GetMapping注解用于对被调用的微服务进行地址映射

@PathVariable注解一定要指定参数名称,否则出错

@Component注解防止,在其他位置注入VodClient时idea报错

@FeignClient(value = "service-vod",fallback = VodFileDegradeFeignClient.class)
@Component
public interface VodClient {
    //定义调用方法的路径,一定要写全
    //PathVariable注解一定要指定参数名称,否则出错.
    //根据视频id删除阿里云视频
    @DeleteMapping("/vodService/video/removeAlyVideo/{id}")
    public R removeAlyVideo(@PathVariable("id") String id);
    @DeleteMapping("/vodService/video/removeMoreAlyVideo")
    public R removeMoreAlyVideo(@RequestParam("videoList") List<String> videoIdList);
}

注意:这里的访问路径是全路径


5、调用微服务—在调用端中调用client中的方法


controller

//删除小节(删除小节时候,同时要把里面的视频删除)
@ApiOperation("删除小节")
@DeleteMapping("delVideo/{id}")
public R delVideo(@PathVariable String id){
    videoService.delVideo(id);
    return R.ok();
}

service


//删除小节
@Override
public void delVideo(String id) {
    //先删除视频
    EduVideo video = this.baseMapper.selectById(id);
    String videoSourceId = video.getVideoSourceId();
    if(!StringUtils.isEmpty(videoSourceId)){
        client.removeAlyVideo(videoSourceId);
    }
    //删除小节
    this.baseMapper.deleteById(id);
}

6、测试


五、完善删除课程业务


需求:----删除课程的同时删除云端视频


1、在service-vod模块的Controller中 创建接口,删除多个视频

//删除多个阿里云视频的方法
//参数为多个视频id
@DeleteMapping("removeMoreAlyVideo")
public R removeMoreAlyVideo(@RequestParam("videoList") List<String> videoIdList){
    vodService.removeMoreAlyVideo(videoIdList);
    return R.ok();
}

2、编写service 方法

//删除多个阿里云视频
@Override
public void removeMoreAlyVideo(List videoIdList) {
    try {
        DefaultAcsClient client = InitVodClient.initVodClient(ConstantPropertiesUtil.ACCESS_KEY_ID, ConstantPropertiesUtil.ACCESS_KEY_SECRET);
        DeleteVideoRequest request = new DeleteVideoRequest();
        DeleteVideoResponse response = new DeleteVideoResponse();
        String videoIds = StringUtils.join(videoIdList.toArray(),",");
        //想request中设置视频id
        request.setVideoIds(videoIds);
        response = client.getAcsResponse(request);
    } catch (ClientException e) {
        e.printStackTrace();
        throw new GuLiException(20001, "视频删除失败!");
    }
}


相关文章
|
7月前
服务熔断器-Hystrix
服务熔断器-Hystrix
60 2
|
17天前
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
29 2
|
7月前
|
存储 Nacos 数据安全/隐私保护
【SpringCloud】Nacos的安装、Nacos注册、Nacos服务多级存储模型
【SpringCloud】Nacos的安装、Nacos注册、Nacos服务多级存储模型
84 1
|
6月前
springCloud之服务降级熔断Hystrix、OpenFeign
springCloud之服务降级熔断Hystrix、OpenFeign
360 0
|
1月前
|
数据管理 Nacos 开发者
"Nacos架构深度解析:一篇文章带你掌握业务层四大核心功能,服务注册、配置管理、元数据与健康检查一网打尽!"
【10月更文挑战第23天】Nacos 是一个用于服务注册发现和配置管理的平台,支持动态服务发现、配置管理、元数据管理和健康检查。其业务层包括服务注册与发现、配置管理、元数据管理和健康检查四大核心功能。通过示例代码展示了如何在业务层中使用Nacos,帮助开发者构建高可用、动态扩展的微服务生态系统。
95 0
|
1月前
|
SQL 关系型数据库 数据库连接
"Nacos 2.1.0版本数据库配置写入难题破解攻略:一步步教你排查连接、权限和配置问题,重启服务轻松解决!"
【10月更文挑战第23天】在使用Nacos 2.1.0版本时,可能会遇到无法将配置信息写入数据库的问题。本文将引导你逐步解决这一问题,包括检查数据库连接、用户权限、Nacos配置文件,并提供示例代码和详细步骤。通过这些方法,你可以有效解决配置写入失败的问题。
64 0
|
3月前
|
存储 NoSQL 调度
|
3月前
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
7月前
|
安全 Linux Nacos
如何使用公网地址远程访问内网Nacos UI界面查看注册服务
如何使用公网地址远程访问内网Nacos UI界面查看注册服务
421 0
|
4月前
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控