首页 > 编程语言 >短视频app源码,实现幂等设计的重要方式

短视频app源码,实现幂等设计的重要方式

时间:2023-12-23 11:33:31浏览次数:42  
标签:视频 version app 源码 消息 物流

短视频app源码,实现幂等设计的重要方式

一、取消重试

取消重试有两种方法,第一是设置重试次数为零,第二是选择不重试的集群容错策略。

<!-- 设置重试次数为零 -->
<dubbo:reference id="helloService" interface="com.java.front.dubbo.demo.provider.HelloService" retries="0" />

<!-- 选择集群容错方案 -->
<dubbo:reference id="helloService" interface="com.java.front.dubbo.demo.provider.HelloService" cluster="failfast" />

二、幂等表

假设短视频app源码中用户支付成功后,支付系统将支付成功消息,发送至消息队列。物流系统订阅到这个消息,准备为这笔订单创建物流单。
但是消息队列可能会重复推送,物流系统有可能接收到多次这条消息。我们希望达到效果是:无论接收到多少条重复消息,只能创建一笔物流单。
解决方案是幂等表方案。新建一张幂等表,该表就是用来做幂等,无其它业务意义,有一个字段名为key建有唯一索引,这个字段是幂等标准。
早短视频app源码的物流系统订阅到消息后,首先尝试插入幂等表,订单编号作为key字段。如果成功则继续创建物流单,如果订单编号已经存在则违反唯一性原则,无法插入成功,说明已经进行过业务处理,丢弃消息。
这张表数据量会比较大,我们可以通过定时任务对数据进行归档,例如只保留7天数据,其它数据存入归档表。
还有一种广义幂等表就是我们可以用Redis替代数据库,在创建物流单之前,我们可以检查Redis是否存在该订单编号数据,同时可以为这类数据设置7天过期时间。

三、状态机

物流单创建成功后会发送消息,短视频app源码的订单系统订阅到消息后更新状态为完成,假设变更是将订单状态0更新至状态1。订单系统也可能收到多条消息,可能在状态已经被更新至状态1之后,依然收到物流单创建成功消息。
解决方案是状态机方案。首先绘制状态机图,分析状态流转形态。例如经过分析状态1已经是最终态,那么即使接收到物流单创建成功消息也不再处理,丢弃消息。

四、数据库锁

数据库锁又可以分为悲观锁和乐观锁两种类型,悲观锁是在获取数据时加锁:

select * from table where col='xxx' for update 

乐观锁是在更新时加锁,第一步首先查出数据,数据包含version字段。第二步进行更新操作,如果此时记录已经被修改则version字段已经发生变化,无法更新成功:

update table set xxx,
version = #{version} + 1 
where id = #{id} 
and version = #{version}

以上就是短视频app源码,实现幂等设计的重要方式, 更多内容欢迎关注之后的文章

标签:视频,version,app,源码,消息,物流
From: https://www.cnblogs.com/yunbaomengnan/p/17922821.html

相关文章

  • 短视频直播系统,前端比较常见的几种动画实现方式
    短视频直播系统,前端比较常见的几种动画实现方式我整理了如下的6种方式,接下来我们以最简单的例子,一个div从左到右移动一定的距离,分别看看这几种方案的具体实现。如有不妥还望指正。 一、CCSanimation这里省略了html部分,我们直接看css:.box{height:100px;......
  • java云HIS源码:云端部署,支持多医院、多门诊、多机构、实现医疗数据共享与交换
    系统概述云HIS是针对中小医疗机构推出的一套基于云端的云HIS服务平台,借助云his,将医院业务流程化,大大提高医院的服务效率和服务质量,为客户提供医院一体化的信息解决方案。云his系统是用计算机网络将医院内各个环节(门诊计价收费、门诊药房、住院信息、临床科室、医技、财务等)全部连......
  • 常见视频文件格式总结
    常见的视频文件格式有很多,它们使用不同的编解码器(Codec)和容器格式(Container)来存储视频和音频数据。以下是一些常见的视频文件格式:AVI(AudioVideoInterleave):编码器:可以使用各种编码器,如DivX、Xvid、MJPEG等。容器:AVI是一种容器格式,可以包含不同编码器生成的视频和音频流。......
  • Spring源码深度解析_源码构建
    源码构建1.下载下载Spring源码,这里以5.0.2.RELEASE为例,下载地址<https://github.com/spring-projects/spring-framework/archive/v5.0.2.RELEASE.zip>Spring源码中有很多module,在这里做出简单说明:spring-jcl:spring封装的日志框架。spring-core:spring核心依赖,包含Spring框......
  • 手把手教你如何下载新东方在线上面已购买的视频课程
    前言:很多同学都想知道新东方在线上的视频课程怎么下载,但是新东方在线上面已购买的视频课程是不提供直接下载方式的,所以下面就教大家如何用学无止下载器下载新东方在线上面已购买的视频课程。一、电脑网页打开新东方在线官网(https://study.koolearn.com/my),进入我的课程二、找到......
  • 新东方在线视频课程资料下载工具,如何在电脑端下载新东方在线视频讲义到本地
    一.安装新东方在线下载器1.获取学无止下载器https://www.xuewuzhi.cn/koolearn_downloader?from=cnblogs2.下载安装后,然后点击桌面快捷方式运行即可。注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。二.使用说明1.学无止......
  • PHP医院手术麻醉系统源码,与HIS系统无缝对接,自动采集相关数据,生成医疗文书
    手术麻醉系统源码包括两大部分,手术管理和麻醉管理。1. 手术管理手术管理主要包括手术申请、手术安排、术中相关工作、手术室相关工作。手术安排:手术室安排、手术护士安排等。术中相关工作:器械清点、术中护理记录等。手术室相关工作:人员排班、工作量统计、手术时间统计等。同时,还可......
  • 视频监控技术经历了哪些发展阶段?视频监控技术未来趋势展望
    随着城市经济的发展和进步,视频监控也已经应用在人们衣食住行的方方面面,成为社会主体的一个重要组成部分。随着视频监控的重要性越来越凸显,大家对视频监控技术的发展也非常关注。今天我们来简单阐述一下,视频监控技术经历的几个发展阶段以及未来发展趋势。一、视频监控的发展阶段1......
  • 大文件、视频分片上传,断点续传
    需求背景再简单的需求,遇到巨大的任务量,也会变得很棘手在项目中,难免会需要一些大的文件、视频上传,通常都会耗费很长的时间上传到服务器然鹅,这其中不能出现任何的差错(网页刷新,关机、断网)之类的故障,一旦发生了,之前的努力都会付之东流,重新开始上传之路,这时候就体现出分片上传、断点续......
  • 视频监控LiteCVR可视化云平台接口支持获取视频帧率与编码格式
    2023年,AI视频监控技术迎来了显著的发展和成果,为安全领域和其他行业带来更智能、高效的解决方案,其中边缘AI发展也十分显著。边缘计算中AI的广泛应用将使设备能够在本地处理数据,而不必依赖云服务器,从而实现更快的响应时间和更强的隐私保护。 LiteCVR可支持设备通过国标GB28181、......