<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      記錄一次余額遷移的坑(測(cè)試角度)

      一、這是一個(gè)遷移流程圖;現(xiàn)在把a(bǔ)ction做個(gè)簡(jiǎn)單的記錄:備注:本次遷移核心是遷移流水,通過(guò)流水的收入-支出-余額=0,在平臺(tái)用戶(hù)最少的時(shí)候進(jìn)行遷移(凌晨2點(diǎn)進(jìn)行);找出收入和支出有差異的--仔細(xì)對(duì)賬查賬;然后運(yùn)維配合,流水扎帳,記錄最大的流水id;繼續(xù)賬單平賬,然后進(jìn)行快照流水回放遷移,遷移完成后,進(jìn)行對(duì)賬,收入-支出-余額=0那就很好,恭喜你沒(méi)有采坑,系統(tǒng)健壯;我們就不是,然后就一點(diǎn)一點(diǎn)查賬對(duì)賬;賬單平了以后,可以繼續(xù)遷移,遷移增量(首先我們是熱牽),遷移增量可能 要進(jìn)行好幾次,每次遷移都要對(duì)賬;

       

      No.
      ACTION
      REMARK
      執(zhí)行任務(wù)
      1 針對(duì)user_balance表執(zhí)行一次獲取差異賬單(賬單一) 查出賬單,通常是54筆

      select u.code, u.nickname , u.available_balance, (
      (select sum(ub.balance) from user_balance ub where ub.user_code = u.code and ub.status = 1 and ub.bi_type =1)
      -
      (select sum(ub.balance) from user_balance ub where ub.user_code = u.code and ub.status = 1 and ub.bi_type =2)
      ) as '收入減支出'
      from user u where available_balance <>
      (
      (select sum(ub.balance) from user_balance ub where ub.user_code = u.code and ub.status = 1 and ub.bi_type =1)
      -
      (select sum(ub.balance) from user_balance ub where ub.user_code = u.code and ub.status = 1 and ub.bi_type =2)
      );

      2 取一次流水表最大id 取出流水表中的最大的id(MAX_ID) SELECT MAX(id) from user_balance ;
      3 再獲取一次獲取差異賬單(賬單二) 查出賬單,通常是54筆 select u.code, u.nickname , u.available_balance, (
      (select sum(ub.balance) from user_balance ub where ub.user_code = u.code and ub.status = 1 and ub.bi_type =1)
      -
      (select sum(ub.balance) from user_balance ub where ub.user_code = u.code and ub.status = 1 and ub.bi_type =2)
      ) as '收入減支出'
      from user u where available_balance <>
      (
      (select sum(ub.balance) from user_balance ub where ub.user_code = u.code and ub.status = 1 and ub.bi_type =1)
      -
      (select sum(ub.balance) from user_balance ub where ub.user_code = u.code and ub.status = 1 and ub.bi_type =2)
      );
      4 驗(yàn)證賬單一和賬單二是否一致

      賬單一和賬單二進(jìn)行對(duì)比,如果不一致需要重新備份 

      5 進(jìn)行差異賬單平賬 差異賬單進(jìn)行調(diào)整,通過(guò)資金后臺(tái)功能,導(dǎo)入excel,自動(dòng)進(jìn)行平賬

      需要提供導(dǎo)入平賬的能力;

      fund-manager已提供http接口

      核對(duì)差異賬單正確性

       

      SELECT * FROM user_account WHERE 1 limit 100;

      SELECT * FROM org_account where 1 limit 100;

      6 進(jìn)行快照流水遷移

      從0開(kāi)始遷移到MAX_ID為止到流水,進(jìn)行業(yè)務(wù)回放

      需要提供從0到N流水號(hào)回放的能力

      fund-manager已提供http接口

      7 遷移完成后進(jìn)行資金系統(tǒng)對(duì)賬 收入-支出 -余額 = 0
      select u.account_id, u.account_name, u.user_code, (
      (select IFNULL(sum(flow.flow_amount),0) from sg_account.account_funds_flow flow where flow.account_id = u.account_id and flow.flow_direct =1)
      -
      (select IFNULL(sum(flow.flow_amount),0) from sg_account.account_funds_flow flow where flow.account_id = u.account_id and flow.flow_direct =0)
      ) as '收入減支出'
      , total_balance "總余額"
      from sg_account.user_account u where total_balance <>
      (
      (select IFNULL(sum(flow.flow_amount),0) from sg_account.account_funds_flow flow where flow.account_id = u.account_id and flow.flow_direct =1)
      -
      (select IFNULL(sum(flow.flow_amount),0) from sg_account.account_funds_flow flow where flow.account_id = u.account_id and flow.flow_direct =0)
      );
      8 檢驗(yàn)是否有差異 正常情況下應(yīng)該是0
      9 進(jìn)行差異數(shù)據(jù)單筆重試

      需要提供單筆業(yè)務(wù)重試的能力

      fund-manager已提供http接口

      10 對(duì)資金系統(tǒng)進(jìn)行備份 sg_account庫(kù)
      11 增量遷移

      提供增量遷移能力,記錄老系統(tǒng)ID和新系統(tǒng)ID,在執(zhí)行業(yè)務(wù)之前,需要進(jìn)行冪等(執(zhí)行轉(zhuǎn)賬業(yè)務(wù)之前,fund-manager),

      user_balance存在order_no為

      需要提供從X到Y(jié)流水號(hào)回放的能力(和從0到MAX_ID的能力是同一個(gè))

      fund-manager已提供http接口

      12 應(yīng)用發(fā)布(含業(yè)務(wù)回歸驗(yàn)證)

      應(yīng)用發(fā)布

      13 再次進(jìn)行增量遷移 提供增量遷移能力(可執(zhí)行之前一樣的操作)

      需要提供從X到Y(jié)流水號(hào)回放的能力(和從0到MAX_ID的能力是同一個(gè))

      fund-manager已提供http接口

      14 遷移完成后進(jìn)行資金系統(tǒng)對(duì)賬 收入-支出 -余額 = 0
      select u.account_id, u.account_name, u.user_code, (
      (select IFNULL(sum(flow.flow_amount),0) from sg_account.account_funds_flow flow where flow.account_id = u.account_id and flow.flow_direct =1)
      -
      (select IFNULL(sum(flow.flow_amount),0) from sg_account.account_funds_flow flow where flow.account_id = u.account_id and flow.flow_direct =0)
      ) as '收入減支出'
      , total_balance "總余額"
      from sg_account.user_account u where total_balance <>
      (
      (select IFNULL(sum(flow.flow_amount),0) from sg_account.account_funds_flow flow where flow.account_id = u.account_id and flow.flow_direct =1)
      -
      (select IFNULL(sum(flow.flow_amount),0) from sg_account.account_funds_flow flow where flow.account_id = u.account_id and flow.flow_direct =0)
      );
      15 進(jìn)行系統(tǒng)間對(duì)賬

      系統(tǒng)內(nèi)對(duì)賬: 資金系統(tǒng)快照2 - 資金系統(tǒng)快照1 = 增量流水軋差 + 新業(yè)務(wù)流水

      系統(tǒng)間對(duì)賬:老系統(tǒng)增量流水和新系統(tǒng)遷移流水進(jìn)行對(duì)賬

      增量流水獲取
      16 針對(duì)差異數(shù)據(jù)進(jìn)行單筆調(diào)賬

      需要提供單筆業(yè)務(wù)重試的能力

      fund-manager已提供http接口

      二、開(kāi)發(fā)踩得的坑,測(cè)試流的淚

                1.  userbalance表, serialNo/orderNo 重復(fù), 與遷移程序唯一單號(hào)生成策略沖突,導(dǎo)致部分?jǐn)?shù)據(jù)丟失。

                 eg: 接口并發(fā),同一筆訂單可能生成多筆,我就看到一個(gè)用相同訂單號(hào)有17筆;

                2.  userbalance有記錄,但user表沒(méi)有用戶(hù) 引發(fā)bug、賬不平。

                 eg:用戶(hù)userCode被修改,或者直接被刪除,但是有消費(fèi)過(guò),balance里面沒(méi)有被處理

                3.  account-business 對(duì)于已存在的commonbill賬單,再次申請(qǐng)會(huì)進(jìn)行數(shù)據(jù)覆蓋,導(dǎo)致后面重復(fù)的單號(hào)數(shù)據(jù)會(huì)覆蓋前面轉(zhuǎn)賬成功的數(shù)據(jù),從而account-business與account-core賬對(duì)不上。

                4. account-business調(diào)用轉(zhuǎn)賬時(shí),金額小于等于0會(huì)直接變成成功,不走account-core。 應(yīng)改為金額等于0直接成功,不走core。金額小于0報(bào)錯(cuò)

              

      三、測(cè)試需要關(guān)注點(diǎn):

      1. 測(cè)試用例質(zhì)量和checklist是否清晰明了:第一次接觸余額遷移,我知道必須重視,可是我還是重視不夠,寫(xiě)出的checklist沒(méi)有進(jìn)行評(píng)審,就上手了
      2. 遷移風(fēng)險(xiǎn),遷移方案沒(méi)有完全吃透:如果遷移失敗,有回滾方案嗎?遷移的性能瓶頸?有些歷史數(shù)據(jù)處理--待入賬?接入新數(shù)據(jù)兼容問(wèn)題等,上線(xiàn)后,全面業(yè)務(wù)回歸

       

      posted @ 2019-07-31 21:58  機(jī)器人布道者  閱讀(583)  評(píng)論(0)    收藏  舉報(bào)
      2
      主站蜘蛛池模板: 日韩乱码人妻无码中文字幕视频| 狠狠色噜噜狠狠狠狠7777米奇| 中文字幕人妻有码久视频| 熟女人妻视频| 日本又色又爽又黄的a片吻戏| 国产99久久亚洲综合精品西瓜tv| 亚洲精品视频一二三四区| 亚洲电影在线观看| 丁香五月婷激情综合第九色 | 国产在线一区二区不卡| 成人欧美日韩一区二区三区| 亚洲av成人精品日韩一区| 国产精品无码一区二区桃花视频| 国产91精品一区二区亚洲| 国产99视频精品免费专区| 精品无码一区二区三区的天堂| 亚洲熟妇色xxxxx欧美老妇| 亚洲国产精品综合久久20| 亚洲国产精品久久久久婷婷老年| 乱色欧美激惰| 悠悠人体艺术视频在线播放| 国产激情一区二区三区四区| 成人特黄特色毛片免费看| 无码av最新无码av专区| 日本无遮挡真人祼交视频| 91色老久久精品偷偷蜜臀| 日本老熟女一二三区视频| 女高中生自慰污污网站| 国产AV影片麻豆精品传媒| 国产一区在线播放无遮挡| 久久国产成人高清精品亚洲| 成人欧美日韩一区二区三区| 精品人妻中文字幕在线| 国产高清在线精品一区APP| 国产suv精品一区二区33| 欧美一进一出抽搐大尺度视频| 开心激情站一区二区三区| 日日摸天天爽天天爽视频| 97精品伊人久久久大香线蕉| 丁香婷婷无码不卡在线| 国产精品爽爽久久久久久竹菊|