note 41:賬務系統開發規范

目錄

系統設計

防重控制

流量控制

并發控制

異常處理

備份機制

系統開發???????

前端隊列操作

外系統交互
??????????????

系統設計

防重控制

對于進入到系統中的數據(文件導入、手工錄入、系統直連等)以及本系統發往外系統的數據都需要進行防重控制處理,主要是采用數據庫表的主鍵或者唯一索引機制來進行防重。

防重表的主鍵應該選取能夠唯一標識該筆交易的字段,例如對于文件導入的數據,可以先計算文件內容的MD5,然后將MD5的值作為防重主鍵

防重表的數據也需要備份,僅保留一段時期(參數化設置)的數據,其余的可以備份到歷史表。

對于實時聯機交易,引入冪等流水做好控制

流量控制

為了避免系統被前端流量壓垮,以及系統自身的流量把后端系統壓垮,因此需要在數據接收和數據發送時引入流量控制機制。

具體實現可以考慮令牌桶、漏桶、計數器等算法,對于微服務架構的項目直接使用熔斷器即可。

并發控制

并發控制是為了應對同一條記錄被多人同時操作的情況,常見于前端界面隊列操作以及后端定時任務,并發控制常用的方式也是數據庫表,利用表的主鍵來防止并發。

異常處理

目前主要是自動流程、外系統交互、定時任務等場景異常情況比較常見,對應的處理機制基本如下:

需要分析出可能的異常點,每一種異常可以先嘗試系統自動重試,重試一定次數(參數化設置)仍然不成功的,需要提醒(短信或其他方式)到相應的處理人員,另外還需要展示在前端異常隊列,處理人員可以在該隊列觸發重試或者其他操作(視具體業務而定)。

備份機制

數據庫的數據、日志文件、交易文件都需要考慮備份,數據庫一般是建立歷史表,采用分區的方式,當前表保留一段時間后轉到歷史表;日志文件和交易文件一般是保留一段時間(參數化設置)后刪除。

??????????????系統開發???????

前端隊列操作

1、前端按鈕點擊過后要禁用,防止用戶連續點擊,造成重復發送請求到后臺

2、前端請求發送到后臺后,后端邏輯需要先判斷該筆交易的狀態是否已經發生改變,如果已經改變的話直接返回提示前端;沒有改變的話,先加并發控制鎖,加鎖成功后然后再次判斷該筆交易的狀態是否已經發生改變,沒有改變則進行后續業務邏輯,最后在finally中釋放并發控制鎖

外系統交互

  1. 需要跟對接系統確定好通訊的字符集編碼
  2. 如果通訊數據中包含金額欄位,需要確定好傳輸過程中金額是否包含小數點,需要處理好精度問題
  3. 在發請求給外系統之前,需要先關閉數據庫連接,通訊完成后,再重新開啟數據庫連接
  1. 需要設置連接超時以及讀超時參數,對于串行連接的多個后端系統,則需要遵循越后端的系統超時時間越小
  2. 數據接入和數據轉出都需要有防重控制
  3. 發送請求給后端系統時,需要先更新發報流水的狀態為發送中,對于長期處于發送中狀態的流水需要進行異常預警,技術人員視具體情況進行手工干預處理或者提供前端界面供業務人員處理
  4. 發送請求給后端系統時,需要考慮幾種異常情況:組包異常、連接超時、讀超時、解包異常、交易重復、交易未明(不一定有),并針對每一種異常都有對應的處理機制,每一種異常都需要預警

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64401.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Circular Spanning Tree(樹的性質)

Circular Spanning Tree 本道題目加深理解樹的性質: 思路: 首先考慮什么情況是NO,那么不難想當字符串全是0的時候一定是不行的,因為這樣就構成環了,還有一種情況是1的個數為奇數的時候是不行的,一棵樹中為…

linux安裝nginxs報錯:openssl not found

系統: linux 版本:centOS7 nginx版本:nginx-1.20.2 linux安裝nginx時 執行下面命令時報錯: ./configure --with-http_stub_status_module --with-http_ssl_module --prefix/usr/local/nginxchecking for OpenSSL library ... not …

【論文筆記】Contrastive Learning for Sign Language Recognition and Translation

🍎個人主頁:小嗷犬的個人主頁 🍊個人網站:小嗷犬的技術小站 🥭個人信條:為天地立心,為生民立命,為往圣繼絕學,為萬世開太平。 基本信息 標題: Contrastive Learning for…

docker redis安裝

一.鏡像拉取 docker pull redis:5.0新建文件 touch /home/redis/redis.conf touch /home/redis/redis_6379.pid # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 ::1 #bind 127.0.0.1protected-mode noport 6379tcp-backlog 511requirepass roottimeout 0tcp-keepali…

【CSS in Depth 2 精譯_096】16.4:CSS 中的三維變換 + 16.5:本章小結

當前內容所在位置(可進入專欄查看其他譯好的章節內容) 第五部分 添加動效 ??【第 16 章 變換】 ?? 16.1 旋轉、平移、縮放與傾斜 16.1.1 變換原點的更改16.1.2 多重變換的設置16.1.3 單個變換屬性的設置 16.2 變換在動效中的應用 16.2.1 放大圖標&am…

小程序租賃系統開發的優勢與實踐探索

內容概要 小程序租賃系統開發正在引起廣泛關注,特別是在數字化快速發展的今天。很多企業開始意識到,小程序不僅能為他們帶來更多的客戶,還能極大地提高管理效率。借助小程序,用戶在租賃時可以更加方便地瀏覽和選擇產品&#xff0…

機器人C++開源庫The Robotics Library (RL)使用手冊(二)

由于RL庫采用跨平臺CMake源碼,可以輕松在win、ubantu等平臺部署、編譯,win通常用VS編譯器,為了便于使用、閱讀,需要將CMake編譯成VS工程。 1、準備三個工具:CMake、VS、QT 為了在Windows上編譯RL和依賴項,您需要安裝一個編譯器(例如。,Visual Studio 2017)和跨平臺構…

如何在LabVIEW中更好地使用ActiveX控件?

在LabVIEW中,ActiveX控件可以幫助實現與其他應用程序或第三方組件的集成(例如Microsoft Excel、Word、Internet Explorer等)。以下是一些建議,幫助您更好地在LabVIEW中使用ActiveX控件: ? 1. 理解ActiveX控件的基本原…

如何使用Python從SACS結構數據文件中提取節點數據信息并導出到EXCEL

在現代工程設計中,結構分析和數據處理是不可或缺的一部分。特別是在海洋工程、橋梁建設等領域,SACS文件被廣泛應用。這種文件格式包含了結構模型的各種重要信息,包括節點(JOINT)、構件(ELEMENT)…

如何判斷一個學術論文是否具有真正的科研價值?ChatGPT如何提供幫助?

目錄 1.創新性與學術貢獻的超級加分? 2.科研過程中的各個環節—從0到1? 3.創新性與理論深度的完美結合? 4.論證與寫作的清晰性? 5.數據整理和文獻回顧——效率與精準并存? 6.創新性要求輔助? 總結 寶子們,學術論文寫作的旅程是不是感覺像是走進了迷霧森…

學習threejs,THREE.CircleGeometry 二維平面圓形幾何體

👨??? 主頁: gis分享者 👨??? 感謝各位大佬 點贊👍 收藏? 留言📝 加關注?! 👨??? 收錄于專欄:threejs gis工程師 文章目錄 一、🍀前言1.1 ??THREE.CircleGeometry 圓形…

【微服務】SpringBoot 自定義消息轉換器使用詳解

目錄 一、前言 二、SpringBoot 內容協商介紹 2.1 什么是內容協商 2.2 內容協商機制深入理解 2.2.1 內容協商產生的場景 2.3 內容協商實現的常用方式 2.3.1 前置準備 2.3.2 通過HTTP請求頭 2.3.2.1 操作示例 2.3.3 通過請求參數 三、SpringBoot 消息轉換器介紹 3.1 H…

深入理解Composer自動加載機制

Composer是PHP生態系統中最常用的依賴管理工具之一,它不僅能夠幫助開發者管理項目的依賴關系,還能夠自動加載這些依賴項。自動加載機制是Composer的核心功能之一,通過自動加載,開發者可以在運行時按需加載所需的類和文件&#xff…

【游戲設計原理】35 - 委員會設計

一、 分析并總結 核心內容 定義:委員會設計(Design by Committee)是指游戲開發團隊通過集體協作完成設計,這種模式結合了多樣化的創意和個體專長,但也可能因缺乏一致性而導致設計的混亂。優勢:多樣性帶來…

【Java】IO流練習

IO流練習 題干: 根據指定要求,完成電話記錄、 注冊、登錄 注冊 題干: 完成【注冊】功能: 要求: 用戶輸入用戶名、密碼存入users.txt文件中 若users.txt文件不存在,創建該文件若users.txt文件存在 輸入…

內網學習:工作組用戶與權限

目錄 一、本地用戶組介紹本地工作組介紹用戶與組的關系 二、四種用戶類型及權限比較本地系統最高權限(System賬戶)特性Administrator與System賬戶的區別 本地最高管理員(Administrator用戶)特性 本地普通管理員特性 本地普通用戶特…

SpringMVC核心、兩種視圖解析方法、過濾器攔截器 “ / “ 的意義

SpringMVC的執行流程 1. Spring MVC 的視圖解析機制 Spring MVC 的核心職責之一是將數據綁定到視圖并呈現給用戶。它通過 視圖解析器(View Resolver) 來將邏輯視圖名稱解析為具體的視圖文件(如 HTML、JSP)。 核心流程 Controlle…

抽象類和接口的區別是什么?

抽象類和接口在編程中都是用來定義對象的公共行為的重要概念,但兩者之間存在顯著的區別。以下是對抽象類和接口的詳細比較: 一、定義與關鍵字 抽象類:使用abstract關鍵字定義,表示該類是抽象的,不能被實例化。抽象類…

html+css+js網頁設計 美食 美拾9個頁面

htmlcssjs網頁設計 美食 美拾9個頁面 網頁作品代碼簡單,可使用任意HTML輯軟件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html編輯軟件進行運行及修改編輯等操作)。 獲取源碼 1&#xff0…

Linux下PostgreSQL-12.0安裝部署詳細步驟

一、安裝環境 postgresql-12.0 CentOS-7.6 注意:確認linux系統可以正常連接網絡,因為在后面需要添加依賴包。 二、pg數據庫安裝包下載 下載地址:PostgreSQL: File Browser 選擇要安裝的版本進行下載: 三、安裝依賴包 在要安…