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.pswp.cn/news/712321.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712321.shtml
英文地址,請注明出處:http://en.pswp.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指令 一. 為什么要使用分布式文件系統 單機時代 初創時期由于時間緊迫,在各種資源有限的情況下,通常就直接在項…

二分+質因數分解,LightOJ 1138Trailing Zeroes (III)

一、題目 1、題目描述 You task is to find minimal natural number N, so that N! contains exactly Q zeroes on the trail in decimal notation. As you know N! 1 * 2 * ... * N. For example, 5! 120, 120 contains one zero on the trail. 2、輸入輸出 2.1輸入 Input…

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…

DBGridEh 的排序

DBGridEh 可以點列抬頭使得記錄按該列排序 不需要寫代碼,只需要設置好,它就能排序。 網上的文章一般寫了如何設置。但一般都少說了一條。 先說如何設置: 1. OptionsEh.AutoSortMarking 設置為 True,如果是設計期屬性面板&…

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"…

springboot + nacos + aws secretmanager 做賬號密碼隱私處理

方式一&#xff1a; #nacos配置文件data.yml: spring:cloud:nacos:discovery:ip: ****.comport: 80datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://*********/database?useUnicodetrue&characterEncodingUTF-8&autoReconnecttrue&fail…

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頁-論壇交流…

C# 中的 IReadOnlyDictionary 和 IReadOnlyList

C# 中的 IReadOnlyDictionary 和 IReadOnlyList 是接口&#xff0c;用于表示只讀的字典和只讀的列表。這些接口提供了對集合的只讀訪問權限&#xff0c;即不允許對集合進行修改操作&#xff0c;例如添加、刪除或修改元素。這種只讀特性對于需要保護數據完整性或只需要進行讀取操…

MYSQL--鎖機制*

一.對鎖機制的大概介紹: 1.大概的來說,MYSQL當中的鎖實際上就是合理的管理多個服務器對于同一個共享資源的使用,是計算機協調多個進程或者是線程并發訪問某一資源的機制(避免爭搶資源的現象發生) 2.在數據庫當中,數據是一種可以供許多的用戶進行共享使用的資源,如何保證數據并發…

軟考筆記--軟件開發模型

軟件開發模型給出了軟件開發活動各個階段之間的關系&#xff0c;它是軟件開發過程的概括&#xff0c;是軟件工程的重要內容。軟件開發模型為軟件工程管理提供了里程碑和進度表&#xff0c;為軟件開發過程提供了原則和方法。 一.軟件開發模型概述 軟件開發模型可分為三種類型&…

第十一屆藍橋杯省賽第一場C++ A組 / B組《整數拼接》(c++)

1.題目說明 給定一個長度為 n 的數組 A1,A2,???,An。 你可以從中選出兩個數 Ai 和 Aj(i 不等于 j)&#xff0c;然后將 Ai 和 Aj 一前一后拼成一個新的整數。 例如 12 和 345 可以拼成 12345 或 34512。 注意交換 Ai 和 Aj 的順序總是被視為 2 種拼法&#xff0c;即便是 …

考研倒計時半年:如何高效安排學習計劃?

距離考研還有半年的時間&#xff0c;這是一個既緊張又充滿希望的階段。如何利用好這段時間&#xff0c;制定一個高效的學習計劃&#xff0c;成為了每位考生關注的焦點。下面&#xff0c;我將為大家提供一些關于政治、英語和專業課的學習建議&#xff0c;希望能對大家有所幫助。…