redis+定时 模拟滑动窗口实现熔断降级

业务背景

公司业务现用的通道为 A、B,为了降本,引入新的支付通道 Y,但 Y 通道的稳定性要低于 A、B,系统要能在 Y 通道故障时自动切回到 A、B,等 Y 恢复正常后,再切换到 Y。

乍一看很简单,不就是熔断降级、故障恢复吗,有很多成熟的解决方案了。

但有个特殊的业务场景,在支付通道的页面中(也就是输入密码的这一步)可能因为商户原因,无法继续支付。这一步已经脱离了我们自己业务的页面,所以也无法获知这个失败场景。

还有一个场景是到输密码这一步,由于种种原因,用户返回了,终止了 支付流程。这种我们系统也无法获知,更无法区分是商户还是用户的原因,导致这笔支付没有完成。

这个业务场景很重要,虽然发生的概率极低,但必须要解决,否则真有问题等用户反馈过来,其影响是不能接受的。

调研

现成的技术方案,像 Sentinel 等框架,都需要告诉框架一个明确的采样规则及触发点。

比如1分钟内异常的数量、超时的数量、请求失败的数量,或者调用量达到多少后触发。

由于业务场景的特殊性,没找到可以直接满足业务需求的现成方案,只能自己想办法解决。

方案设计

如上所述,需要解决的2个关键点是采样规则和触发点。

采样规则可细分为 采样窗口、采样数量、采样数据。

根据我们业务的支付量,我们确定了采样窗口为最近半小时内,依次向后滑动;

采样数量为走 Y 通道的全量;

采样数据为支付成功数据、总数据。

上面交代了系统无法直接准确获知 Y 通道失败,所以就换了解决思路。

我们可以从系统现有的 A、B 通道的数据分析出用户原因未支付的比例(A、B 通道非常稳定,通道导致的失败率可以忽略不计),这样一来就可以得出支付成功的比例。

如果切换到 Y 通道后,低于这个比例,大概率是商户问题导致支付中断。

这个比例就可以作为我们的触发点。

简单画个草图

db99b611a6f4e93d8bc068dcace7df02.png

通过这个方案就可以尽早发现商户问题导致的支付中断,满足业务诉求。

扯两句

用低成本满足业务诉求;

任何方案都要权衡取舍。

原创不易,多多关注,一键三连,感谢支持!

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

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

相关文章

使用链表和数组输出A~Z的ASCII码

输出结果 26个字母以及其对应的ASCII码 一、使用链表创建,注意: 节点需要有next指针初始化时head需要new一下 cur指针代表当前指针,每次不断的New新的节点,pre指针代表当前指针的前一个指针,每次pre的next指针指向cur…

sql注入攻击 - cookie注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、Cookie 知识介绍 Cookie(HTTP Cookie)是服务器发送到用户浏览器并保存在本地的一小段数据,用于记录用户的相关信息和状态。这些信息通常包括用户的身份标识、网站偏好设置…

3.1日学习打卡----初学FastDFS(一)

3.1日学习打卡 目录: 3.1日学习打卡一. 为什么要使用分布式文件系统二. FastDFS简介核心概念上传机制下载机制FastDFS环境搭建_LinuxFastDFS指令 一. 为什么要使用分布式文件系统 单机时代 初创时期由于时间紧迫,在各种资源有限的情况下,通常就直接在项…

HTML---Ajax

文章目录 目录 文章目录 前言 一.Ajax概述 二.原生创建Ajax 三,使用Jquery处理Ajax 总结 一.Ajax概述 AJAX(Asynchronous Javascript And XML)是一种创建交互式网页应用的网页开发技术。它使用Javascript语言与服务器进行异步交互,可以传…

【计算机网络】五种IO模型与IO多路转接之select

文章目录 一、五种IO模型二、非阻塞IO1.fcntl2.实现函数SetNoBlock3.轮询方式读取标准输入 三、I/O多路转接之select1.初识select2.select函数原型3.socket就绪条件4.select的特点5.select缺点6.select使用案例--只读取数据的server服务器1.err.hpp2.log.hpp3.sock.hpp4.select…

Linux上搭建并使用ffmpeg(Java)

关于MacOs和Windows系统上使用ffmpeg就不多说了,有很多相关文章,今天给大家分享一个在Linux环境下使用Java语言来使用ffmpeg 一、首先去官网下载一个Linux对应的ffmpeg包 1、进入ffmpeg官网:官网 2、点击左侧导航栏Download 3、选择Linux对…

如何利用graylog进行容器化日志管理?

Docker日志 当一个容器启动的时候,它其实是docker deamon的一个子进程,docker daemon可以拿到容器里面进程的标准输出,然后通过自身的LogDriver模块来处理,LogDriver支持的方式很多,默认写到本地文件,也可…

vue自定义实现icon选择器

<template> <div> <span class"iconStyle" click"selectIcon"> <i :class"value" /> </span> <div class"iconTitle">选择图标</div> <el-dialog title"" :visible.sync"…

java 商机管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 商机管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

LeetCode142. 环形链表 II刷题详解

今天力扣刷到了一个特别有意思的题目&#xff0c;于是就写了下面的题解来加深以下理解。 142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09; 这个可以分为两大步去写&#xff0c;首先要判断链表是否有环&#xff0c;然后如果有环就去找到环的入口&#xff0c;没有环返…

python3.x的在线与离线安装纯净版

由于计划搭建一套使用python自动分析日志的流程&#xff0c;发现我们的测试环境CentOS 7仍然没有安装python3&#xff0c;无法使用这些新的库。Python 3在设计上着重提升了语言的一致性和易用性&#xff0c;它引入了许多关键改进&#xff0c;此外&#xff0c;Python 3环境拥有丰…

基于springboot+html实现的衣物捐赠平台

一、系统架构 前端&#xff1a;html | layui | jquery | css 后端&#xff1a;springboot | thymeleaf | mybatis 环境&#xff1a;jdk1.8 | mysql | maven 二、代码及数据库 三、功能介绍 01. 登录页 02. 注册 03. web页-首页 04. web页-捐赠衣服 05. web页-论坛交流…

MYSQL--锁机制*

一.对锁机制的大概介绍: 1.大概的来说,MYSQL当中的锁实际上就是合理的管理多个服务器对于同一个共享资源的使用,是计算机协调多个进程或者是线程并发访问某一资源的机制(避免争抢资源的现象发生) 2.在数据库当中,数据是一种可以供许多的用户进行共享使用的资源,如何保证数据并发…

曲线的凹凸性与拐点【高数笔记】

1.什么是曲线的凹凸性 2.什么是曲线的拐点 3.拐点的特征 4.拐点与驻点有什么不同 5.拐点的表示方法与驻点有什么不一样 6.拐点与凹凸区间怎么求

Mathtype安装时word启动显示“文件未找到:MathPage.WLL”

背景 由于老板布置的临时工作&#xff0c;需要安装Mathtype&#xff0c;但尝试了3个不同的版本后&#xff08;每次都卸载干净了&#xff09;&#xff0c;均未能成功安装&#xff0c;出现的报错3个版本各不相同&#xff1a; ①解压安装过程中失败&#xff08;这个版本不再尝试…

GoFrame:如何简单地搭建一个简单地微服务

一切资料来源于GoFrame官网, 感兴趣的, 可以直接去官网查阅相关资料。 首先下载框架工具, 下载地址:https://github.com/gogf/gf/releases 然后进入你想要放置的项目文件夹, 执行命令行 gf init {project_name} #project_name为你的项目名 执行完后项目结构如图所示 然…

同等学力申硕专业介绍——教育学硕士

同等学力申硕的专业很多。 目前有十三大门类&#xff0c;分别是医学、法学、管理学、工学、教育学、经济学、艺术学、文学、历史学、理学、哲学、农学、军事学等&#xff0c;每个大门类中都有很多的细分专业。 今天为大家介绍同等学力申硕专业——教育学。 专业介绍 教育学该…

基于java+springboot动物检疫信息管理系统设计和实现

基于java SSM springboot动物检疫信息管理系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文…

【Vue3】自定义 Vue3 插件(全局实现页面加载动画)

// main.ts import { createApp } from vue import App from ./App.vue import Loading from "./components/Loading/index.ts";const app createApp(App) type Lod {show: () > void,hide: () > void } //编写ts loading 声明文件放置报错 和 智能提示 decl…

python实现常见一元随机变量的概率分布

一. 随机变量 随机变量是一个从样本空间 Ω \Omega Ω到实数空间 R R R的函数&#xff0c;比如随机变量 X X X可以表示投骰子的点数。随机变量一般可以分为两类&#xff1a; 离散型随机变量&#xff1a;随机变量的取值为有限个。连续型随机变量&#xff1a;随机变量的取值是连…