谷粒学苑_第十天

news/2024/4/28 7:45:55/文章来源:https://blog.csdn.net/m0_52070517/article/details/128050624

第十天

视频删除

后端

相关sdk在阿里云视频点播文档的服务端SDK–>Java SDK–>媒资管理–>删除视频

复制前面的InitObject到utils里

删除的方法

@DeleteMapping("{id}")public R removeAliyunVideo(@PathVariable String id){try{DefaultAcsClient defaultAcsClient = InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET);//创建一个删除视频request对象DeleteVideoRequest deleteVideoRequest = new DeleteVideoRequest();//设置iddeleteVideoRequest.setVideoIds(id);//获取结果DeleteVideoResponse acsResponse = defaultAcsClient.getAcsResponse(deleteVideoRequest);return R.ok();//初始化对象}catch (Exception e){throw new GuliException(20001,"删除视频失败");}}

前端

video.js添加

, //删除视频deleteAliyunVideo(id){return request({url: 'http://localhost:8003/eduvod/video/'+id,method:'delete'})}
//视频操作//上传成功的方法ListhandleVodUploadSuccess(response,file,fileList){console.log(response.data.videoId)this.video.videoSourceId=response.data.videoIdthis.video.videoOriginalName=file.name},//上传前handleUploadExceed(files, fileList){this.$message.warning('如果要重新上传,请先删除已有视频')},//删除上传beforeVodRemove(file,fileList){return this.$confirm(`确认删除 ${file.name}?`);},//点击确认调用的方法handleVodRemove(){console.log("删除api")videoapi.deleteAliyunVideo(this.video.videoSourceId).then(response=>{//提示信息this.message({type: 'success',message: '视频删除成功'});//文件列表清空this.fileList= []this.video.videoSourceId=''this.video.videoOriginalName=''})},

微服务

是一种架构风格

有多个服务,每个服务独立运行,不会相互影响,多个服务独立运行,服务占用独立进程

springcloud

是微服务的一种,本身并不是技术/框架,是很多技术/框架的集合

需要基于springboot来实现

基础服务组件

服务发现 Netfix Eureka( Nacos )
服务调用 Netfix Feign
熔断器 Netfix Hystrix
服务网关 Spring Cloud GateWay
分布式配置 Spring Cloud Config ( Nacos )
消息总线 Spring Cloud Bus ( Nacos )

springcloud的版本与springboot版本要一一对应

需要在官网查询

https://spring.io/projects/spring-cloud#overview

前面的名字是按照伦敦地铁站的名字,后面没写的了就直接用的年份时间版本

GA:稳定版

SNAPSHOT:快照版,随时更新

M:里程碑版

SR:正式版

CURRENT:当前推荐版

最好别选SNAPSHOT

点击后面的详细文档

这里就是对应的两个版本:

在这里插入图片描述

Nacos

类似于中介,将所有服务注册到注册中心,有服务需要某些功能可以调用其他服务来实现

常见的注册中心

Eureka:早期服务注册是用的Eureka,但是遇到性能瓶颈,不再维护

Zookeeper:可以配合dubbo

Consul:是用go开发的(禁止(中国)使用?)

Nacos实现原理

(有调用动作的是消费者,被调用的是生产者)

(生产者消费者身份是相对的,看谁调用谁)

主要功能的原理

在这里插入图片描述

还有心跳机制(连接确认)

自我保护机制(确保不出现雪崩)

动态dns(灵活优化网络)

Docker安装Nacos

官网文档

//或者看我这个

快速上手Nacos(Docker)

拉取镜像:

docker pull nacos/nacos-server

创建映射文件:

mkdir -p /root/nacos/init.d /root/nacos/logs
touch /root/nacos/init.d/custom.properties

写入一些内容

vim /root/nacos/init.d/custom.properties

management.endpoints.web.exposure.include=*

然后 保存并退出vim

生成容器:

docker run -d -p 8848:8848 -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /root/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties -v /root/nacos/logs:/home/nacos/logs --restart always --name nacos nacos/nacos-server

运行容器:

docker start nacos

访问地址:

http://服务器ip:8848/nacos/#/login

用户名: nacos

密码: nacos

在这里插入图片描述

注册服务

引入nacos依赖:

service_edu与service的pom.xml里

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

service_edu配置

application

spring:cloud:nacos:discovery:server-addr: 192.168.199.100:8848 #服务地址

启动类注解

@EnableDiscoveryClient

启动成功并发现
在这里插入图片描述

同理把vod也加上依赖注解配置

在这里插入图片描述

Feign

服务调用用的

依赖:

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

调用端(service_edu)注解:

开启feign客户端

@EnableFeignClients

调用端接口:

service_edu创建一个client.VodClient

package com.lkw.eduservice.client;import com.lkw.commonutils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;@FeignClient("service-vod")//被调用的服务的名字
@Component
public interface VodClient {//定义方法路径//把service_vod的方法完完全全的复制来,路径改成完全路径@DeleteMapping("eduvod/video/{id}")public R removeAliyunVideo(@PathVariable("id") String id);
}

实现调用

在EduVideoController的deleteVideo调用注入vodClient

@Autowired
private VodClient vodClient;

出现错误:

no server available

是因为有nacos依赖的模块都要配置与添加服务注册

可能刚刚的oss还没加nacos配置或注解

批量删除

传输多个id可以用List

先写好vodservice的Controller

//删除多个视频的方法
@DeleteMapping("delete-batch")
public R deleteBatch(@RequestParam("videoIdList") List videoIdList) {vodService.removeMoreAlyVideo(videoIdList);return R.ok();
}

然后实现service接口的实现类

@Override
public void removeMoreAlyVideo(List videoIdList) {try {DefaultAcsClient defaultAcsClient = InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET);//创建一个删除视频request对象DeleteVideoRequest deleteVideoRequest = new DeleteVideoRequest();//遍历用逗号拼接String videoIds = StringUtils.join(videoIdList.toArray(), ",");//数组加分隔符拼接成字符串//或者听说String.join(",",list)也行//设置iddeleteVideoRequest.setVideoIds(videoIds);//获取结果DeleteVideoResponse acsResponse = defaultAcsClient.getAcsResponse(deleteVideoRequest);}catch(ClientException e){throw new GuliException(20001,"视频删除失败");}
}

在VodClient添加接口方法:

//删除多个视频的方法
@DeleteMapping("eduvod/video/delete-batch")
public R deleteBatch(@RequestParam("videoIdList") List videoIdList);

在 EduVideoServiceImpl写好调用方法

//先注入

    //注入@AutowiredVodClient vodClient;

改成:

@Override
public void removeVideoByCourseId(String courseId) {//根据课程id查询课程所有视频idQueryWrapper<EduVideo> wrapperVod=new QueryWrapper<>();wrapperVod.eq("course_id",courseId);wrapperVod.select("video_source_id");List<EduVideo> eduVideoList = baseMapper.selectList(wrapperVod);List<String> videoIds = eduVideoList.stream().map(EduVideo::getVideoSourceId).collect(Collectors.toList());vodClient.deleteBatch(videoIds);QueryWrapper<EduVideo> wrapper=new QueryWrapper<>();wrapper.eq("course_id",courseId);baseMapper.delete(wrapper);//TODO 删除对应视频的文件
}

丝袜哥测试

略,前端有bug先不修了,学完再看

Hystrix

是熔断器

熔断器是一定时间呢请求无回复,然后

熔断器前置知识

springcloud在接口调用上的经历:

接口化请求调用

Feign----按照服务名进行调用---->Hystrix----调不到断开连接---->Ribbon----负载均衡—>Http Client

Hystrix提供延迟容错功能

使用

在service_edu

依赖:

Nacos自动引入了ribbon openfeign自动引入hystrix

配置:

feign:hystrix:enabled: true

yml里好像不能配置超时时间

创建熔断器实现类:

package com.lkw.eduservice.client.impl;import com.lkw.commonutils.R;
import com.lkw.eduservice.client.VodClient;
import org.springframework.stereotype.Component;import java.util.List;@Component
public class VodClientImpl implements VodClient {@Overridepublic R removeAliyunVideo(String id) {return R.error().message("删除视频错误");}@Overridepublic R deleteBatch(List videoIdList) {return R.error().message("删除多个视频错误");}
}

修改注解

@FeignClient(name="service-vod",fallback = VodClientImpl.class)//被调用的服务的名字,熔断器的实现类

补充eduvideoController

//刪除小节
//删除小节同时把小节中的视频删除
@DeleteMapping("{id}")
public R deleteVideo(@PathVariable String id) {System.out.println(id);//根据小节id查询出视频id,进行删除EduVideo eduVideobyId = eduVideoService.getById(id);String videoSourceId = eduVideobyId.getVideoSourceId();//判断是否有视频,有就删除if (!StringUtils.isEmpty(videoSourceId)) {//远程调用vod删除视频R r = vodClient.removeVideo(videoSourceId);if(r.getCode()==20001)throw new GuliException(20001,"删除视频失败");}//删除小节eduVideoService.removeById(id);return R.ok();
}

断点调试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_37232.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1000套web前端期末大作业 HTML+CSS+JavaScript网页设计实例 企业网站制作【建议收藏】

一、1000套HTML期末学生结课大作业作品(HTMLCSSJS) 这8年来做了1000多套(HTMLCSSJS)网页设计的学生期末大作业&#xff0c;都是给学生定制的都符合学校或者学生考试期末作业的水平&#xff0c;都是divcss框架原创代码写的&#xff0c;有的有js&#xff0c;有的视频音乐flash的…

Mongodb操作基础 分片

Mongodb分片 MongoDB分片是MongoDB支持的另一种集群形式&#xff0c;它可以满足MongoDB数据量呈爆发式增长的需求。当MongoDB存储海量的数据时&#xff0c;一台机器可能无法满足数据存储的需求&#xff0c;也可能无法提供可接受的读写吞吐量&#xff0c;这时&#xff0c;我们就…

【算法】2022第五届“传智杯”全国大学生计算机大赛(练习赛)

【参考&#xff1a;第五届“传智杯”全国大学生计算机大赛&#xff08;练习赛&#xff09; - 洛谷 | 计算机科学教育新生态】 练习赛满分程序&#xff08;多语言&#xff09;&#xff1a;https://www.luogu.com.cn/paste/fi60s4yu CPU一秒大概运行 10810^8108 次&#xff0c;…

ASEMI肖特基二极管MBR40200PT参数,MBR40200PT规格

编辑-Z ASEMI肖特基二极管MBR40200PT参数&#xff1a; 型号&#xff1a;MBR40200PT 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;200V 最大平均正向整流输出电流&#xff08;IF&#xff09;&#xff1a;40A 峰值正向浪涌电流&#xff08;IFSM&#xff0…

imx6ull pro BSP 工具链

BSP&#xff0c;Board Support Package&#xff0c;指板级支持包&#xff0c;是构建嵌入式操作系统所 需的引导程序(Bootload)、内核(Kernel)、根文件系统(Rootfs)和工具链 (Toolchain)。 每种开发板的 BSP 都不一样&#xff0c;并且这些源码都非常庞大。我们把这些源码都 放在…

自动化运维CICD

目录 概述 为什么持续集成和发布可以提高效率 如何实现 1、在linux服务器安装部署代码仓库 2、安装jenkins 使用shell脚本实现CICD 使用pipeline实现CICD 使用Blue Ocean实现CICD 概述 持续集成&#xff08;Continuous Integration&#xff0c;CI)和持续发布&#xff0…

二、进程管理(四)经典同步互斥问题

目录 4.1生产者-消费者问题 4.1.1单类生产者-单类消费者问题 4.1.2多类生产者-多类消费者问题 4.1.3吸烟者问题 4.2读者-写者问题 4.3哲学家进餐问题 分析进程同步和互斥问题的三步&#xff1a; 关系分析&#xff1a;分析问题中的同步&#xff08;前驱关系&#xff09;、…

【网络】tcpdump、Wireshark 案例超详细介绍

文章目录网络分层应用层找到服务器的 IP查接口、对象的耗时删除指定网站的Cookie表示层、会话层tcpdump、wireshard传输层telnet: 路径可达性测试nc: 路径可达性测试netstat&#xff1a;查看当前连接状态iftop&#xff1a;查看当前连接的传输速率netstat -s: 查看丢包和乱序的统…

数据结构(5)树形结构——二叉搜索树(JAVA代码实现)

5.1.概述 二叉搜索树&#xff0c;也叫二叉查找树、二叉排序树&#xff0c;顾名思义&#xff0c;这种二叉树是专门用来进行数据查找的二叉树。二叉搜索树的查找其实就是二分查找。 二叉搜索树的定义&#xff1a; 二叉搜索树可以为空如果二叉搜索树不为空&#xff0c;那么每个…

Visual C++ 2010开发的程序在其它电脑上运行提示“找不到MSVCR100D.dll”原因及解决

Visual C 2010开发的程序在其它电脑上运行提示“找不到MSVCR100D.dll”原因及解决 Microsoft Visual C&#xff08;简称Visual C、MSVC、VS或VC&#xff09;2010是微软公司的免费C开发工具&#xff0c;具有集成开发环境&#xff0c;可提供编辑C语言&#xff0c;C以及C/CLI等编程…

Java项目:JSP手机商城管理系统包含前台

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台&#xff0c;分为管理员与普通用户两种角色&#xff0c;管理员登录后台&#xff0c;普通用户登录前台&#xff1b; 管理员角色…

大数据_什么是数据中台?

目录 一、数据中台的定义 二、数据中台必备的是个核心能力 三、数据中台VS业务中台 四、数据中台VS数据仓库 五、数据中台VS现有信息架构 六、数据中台的业务价值与技术价值 一、数据中台的定义 数据中台是一套可持续“让企业的数据用起来”的机制&#xff0c;是一种战略…

[附源码]计算机毕业设计JAVA人力资源管理系统论文2022

[附源码]计算机毕业设计JAVA人力资源管理系统论文2022 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM…

第8章 综合案例—构建DVD租赁商店数据仓库

目录 章节概要 案例背景介绍 数据仓库的架构模型 数据仓库的架构模型 数据库sakila的下载和安装 数据库sakila简介 数据库sakila中 数据表之间的关系 数据表简介 用于储存电影基本信息及相关介绍的数据&#xff0c;该数据表各个字段的含义如表。 用于储存定义电影id所…

Kafka生产者之分区

一、分区好处 &#xff08;1&#xff09;便于合理使用存储资源&#xff0c;每个Partition在一个Broker上存储&#xff0c;可以把海量的数据按照分区切割成一块一块数据存储在多台Broker上。合理控制分区的任务&#xff0c;可以实现负载均衡的效果&#xff1b; &#xff08;2&…

惊喜:2023前瞻版Java面试指南,不止八股文

前言&#xff1a; 2022年马上就要过去了&#xff0c;即将要到来的就是2023年的金三银四面试季&#xff0c;随着政策的放宽&#xff0c;经济的逐步复苏&#xff0c;岗位的需求也会越来越大&#xff0c;所以趁这段时间进行知识储备将会是最好的时间段&#xff0c;永远要做快人一…

智能疾病查询接口

一、接口介绍 最全的疾病大全&#xff0c;收集了数万种常见疾病&#xff0c;任何常见疾病都可查询。 二、功能体验 三、API文档 3.1 查询疾病科目 3.1.1接入点说明 查询疾病的类别。 3.1.2接口地址 http[s]&#x1f615;/www.idmayi.com/546-1?idmayi_appid替换自己的值&…

APP逆向案例之(二)对加固APP进行分析和破解

说明&#xff1a;对加固APP进行分析和破解&#xff0c;对发现新版本提示关掉 1、先对APP窗口类行进HOOK&#xff0c;确定窗口提示用的是那个类。 android hooking watch class android.app.AlertDialog 2、发现一个非常明显的函数 setCancelable objection -g com.hello.qq…

【ML特征工程】第 4 章 :特征缩放的影响:从词袋到 Tf-Idf

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

工作中常用的设计模式--策略模式

一般做业务开发&#xff0c;不太容易有大量使用设计模式的场景。这里总结一下在业务开发中使用较为频繁的设计模式。当然语言为Java&#xff0c;基于Spring框架。 1 策略模式(Strategy Pattern) 一个类的行为或方法&#xff0c;在运行时可以根据条件的不同&#xff0c;有不同的…