国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

打破大事務瓶頸:接口性能優化策略

開發 前端
可見大事務是我們接口效率低下的罪魁禍首,有時候我們為了快速實現功能,可能會忽略一些關乎于性能的東西,而這些東西是我們能力提升的一個契機。

1、前言

作為后端開發的程序員,我們常常會的一些相對比較復雜的邏輯,比如我們需要給前端寫一個調用的接口,這個接口需要進行相對比較復雜的業務邏輯操作,比如會進行,查詢、遠程接口或本地接口調用、更新、插入、計算等一些邏輯,將最終接口的返回結果給到前端,而經過這么一系列的業務邏輯操作,接口對DB的操作、對代碼業務邏輯判斷、進行接口調用這些都是需要時間的,而只要這是一個事務操作,每次對數據庫進行的交互都會產生一條事務記錄。

那么這樣就會對我們接口返回的效率產生影響,而且這個影響是隨著數據量的增長而增長的,這時候我們就需要對一整個大事務進行拆分,從而提升整體接口的效率。

2、何為大事務

就拿我最近開發寫的一個接口來說吧,大致是這么一個邏輯,我需要根據頁面的提交的數據生成一個收款單,整體接口處理的業務如下,我把它們寫在了一個接口里,可以理解為這是一個大事物,這個接口執行的時間是相對比較長的,而且將這些邏輯全部寫在一個接口里面,本身來說也是不太合理的。

圖片

3、大事務存在的一些問題

并發數據不一致

不加鎖的情況下,由于種種原因第一次接口的調用還沒執行完,還在等待第三方的調用回寫數據,第二次調用又進來對數據進行了更改,第二次調用先執行完,這時候第一次接口調用拿到了第三方接口的返回,去回寫狀態發現已經被更新,導致無效操作。加鎖容易阻塞加鎖的情況下, 不會出現數據不一致情況,但是由于大事物執行時間較長,容易造成鎖超時失效,鎖定太多的數據造成阻塞,嚴重影響效率。Undo logo事務日志性能問題容易造成Undo logo日志數據量很大,降低了日志的查詢性能,包括對事務的回滾效率也會降低。并發數據庫壓力太大并發量達到一定程度,會對數據庫讀寫造成不小的壓力,會堆積大量等待線程。

4、如何優化大事務

事務里面不要進行遠程RPC調用

首先事務里面進行遠程的接口調用,如果不采用分布式事務框架,本身就會存在事務不一致的情況,無法進行數據的回滾操作,并發情況下遠程服務響應不及時,會出現接口返回不一致問題,當然必須采用異步調用,后面會提到。

編程型事務更加靈活

聲明式事務只需要加在方法頭加@Transactional注解即可開啟事務,但是還是不太靈活,意味著整個方法所進行對數據庫操作都要加進事務,當然一次查詢也要進入事務,這并不是我們想要的,我們在update、insert操作上進行事務操作,方便進行回滾。

public Boolean transactionCommit(String userName) {
    //查詢用戶
    SysUser sysUser = userMapper.selectUserByUserName(userName,null);

    transactionTemplate.execute(new TransactionCallbackWithoutResult() {
        @Override
        protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {
            try {
                if (null != sysUser) {
                    //用戶信息狀態更新 status更新為1
                    userMapper.updateStatus(userName);
                }
            } catch (Exception e){
                //回滾
                transactionStatus.setRollbackOnly();
            }
        }
    });
    //再次查詢
    SysUser sysUser1 = userMapper.selectUserByUserName(userName,"1");
    /log/.info("狀態為1的用戶信息"+JSON./toJSONString/(sysUser1));
    return  true;
}

編程式事務的靈活點在于可以控制事務執行方法,運用transactionTemplate類進行事務操作,查詢操作可以寫在外面,這樣查詢獲取數據的操作就不會進入mysql事務表。

數據分批處理

對于事務的更新或者插入,前端可能會有批量操作,大規模數據的批量更新、插入也會對事務接口產生影響,一旦其中有更新或插入失敗,為了保證事務的一致性,整個操作都要進行回滾;

  • 前端:可以限制數據,對后端接口的訪問,可以將數據進行分頁,多次請求,可以避免事務提交大量數據。
  • 后端:也可以對數據進行分頁處理,例如每次可以限制50條進行操作,如果是新增邏輯,使用Mybatis的批量更新大大提升效率
List<List<ReceivableFeeSaveDTO>> partition = Lists.partition(receivableFeeSaveDTOList, 50);

大事務拆分小事務

可以將一個事務接口,拆分成多個事務接口,并且每個事務接口只做一件事,比如上面的收款單生成接口,金額回寫、第三方接口調用、調用后的結果回寫都可以抽成一個個小事務接口。

就好比做一件很復雜的事情,咋一眼看上去很復雜,但是我們把這復雜的步驟,進行多個步驟的拆分,每個階段完成每個階段的事情,就可以將整個過程簡化,看起來就沒那么復雜了。

異步并行處理

重中之重,事務里如果無法避免遠程調用,那么肯定是需要進行異步調用,因為無法保證遠程接口的及時響應性,CompletableFuture異步編排特性可以用到,task1和task2任務結束后,執行task3。

CompletableFuture<Object> task1 =CompletableFuture.supplyAsync(() -> {
    System.out.println("單號check線程" + Thread.currentThread().getId());
    //單號check接口 校驗失敗拋出異常

    return "賬單實體信息";
}, executor);
CompletableFuture<Object> task2 = CompletableFuture.supplyAsync(() -> {
    System.out.println("收款單生成線程" + Thread.currentThread().getId());
    try {
        //收款單生成

        return “賬單編號”;
        Thread.sleep(3000);
        System.out.println("任務2結束:");
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

}, executor);

 //task1、task2 執行完執行task3 ,需要感知task1和task2的執行結果
CompletableFuture<Boolean> future = task1.thenCombineAsync(task2, (t1, t2) -> {

    System.out.println("賬單金額回寫線程" + Thread.currentThread().getId());
    // t1 、t2返回判斷

    //回寫返回結果
    return ture;
}, executor);

5、總結

可見大事務是我們接口效率低下的罪魁禍首,有時候我們為了快速實現功能,可能會忽略一些關乎于性能的東西,而這些東西是我們能力提升的一個契機。


責任編輯:武曉燕 來源: 一安未來
相關推薦

2023-12-01 10:19:00

接口優化事務

2021-04-30 15:45:42

存儲人工智能數據

2019-08-20 00:08:18

MySQL數據庫數據

2023-05-10 10:30:02

性能優化Tomcat

2009-09-08 09:45:23

App Engine性

2010-03-09 13:56:53

TD終端瓶頸

2021-07-16 23:01:03

SQL索引性能

2010-07-05 16:46:16

FTTx

2025-05-28 09:17:00

端到端模型視覺

2025-01-15 08:05:06

MySQLLEFT JOIN數據庫

2023-04-17 08:04:15

Redis性能內存

2025-07-31 01:55:00

await性能流式格式

2024-01-25 16:19:27

2022-05-23 13:44:53

前端開發優化

2021-07-26 18:23:23

SQL策略優化

2023-03-24 16:14:32

框架訓練

2016-11-17 09:00:46

HBase優化策略

2017-03-01 20:53:56

HBase實踐

2021-07-05 08:58:17

Golang分布式性能

2024-02-02 15:21:08

工具頁面性能
點贊
收藏

51CTO技術棧公眾號

综合国产精品| 日韩欧美国产黄色| 免费看成人a| 91精品国产色综合久久不卡蜜臀| 国产精品一区二区免费福利视频| 成人国产精品一区二区| 久久国产精品99精品国产| 久久综合色播| 亚洲视频精品在线| 久久综合99| 国产97在线 | 亚洲| 欧美性大战久久| 99ri日韩精品视频| 亚洲视频在线观看日本a| 亚洲影视在线播放| 四虎精品永久免费| 日韩高清国产一区在线观看| 亚洲午夜私人影院| 精品国产亚洲一区二区在线观看| 欧美福利精品| 亚洲图片欧美色图| 国产一区二区三区黄网站| 日本一区二区三区四区高清视频| 亚洲精品国产成人久久av盗摄| 高清av不卡| 美女被啪啪一区二区| 亚洲国产成人高清精品| 51精品国产| 人妻无码久久一区二区三区免费| 91精品在线麻豆| 国产高清久久| 丁香花高清视频完整版在线观看| 日韩在线视频网| 日韩av中文在线观看| 国产美女视频一区二区三区| 国产盗摄xxxx视频xxx69 | 在线不卡a资源高清| 免费av一区二区三区四区| 亚洲精品中文综合第一页| 国内精品伊人久久久久影院对白| 欧美高清电影在线| 中文字幕在线成人| 亚洲天天影视网| 亚洲一级片网站| 99视频精品全部免费在线| 97超碰在线公开在线看免费| 国产日韩欧美日韩| 亚洲三级视频在线观看| 亚洲午夜免费| a级黄色一级片| 国产一区二区久久精品| 狠狠色伊人亚洲综合成人| 菠萝蜜视频国产在线播放| 国产精品区一区二区三含羞草| 亚洲一区免费在线观看| 校园春色另类视频| 77777在线| 欧美中文字幕精品| 亚洲精品成a人| 少妇精品久久久一区二区| 国产1区2区视频| 国产成人一区二| 亚洲尤物在线视频观看| 国产成人影院| 色网址在线观看| 成人欧美一区二区三区在线湿哒哒 | 欧美色窝79yyyycom| 国内精品久久久久久久97牛牛 | 亚洲天堂2017| 成人免费视频观看视频| 3d动漫精品啪啪1区2区免费| 久久在线精品| 在线观看爽视频| 日韩网站在线免费观看| 久久综合久久88| 国产精品乱码一区二三区小蝌蚪| 天堂在线精品| 涩爱av在线播放一区二区| 久久国产精品免费一区| 亚洲精品99久久久久中文字幕| 国产精品77777| 91精品短视频| 伊人75在线| 日韩av高清| 久久精品人人爽| 一区二区三区四区视频精品免费| 五月精品视频| 男插女视频久久久| 亚洲午夜精品久久久久久人妖| 欧美亚洲另类视频| 欧美性感一区二区三区| 极品美女销魂一区二区三区| 麻豆精品久久| 欧美白嫩的18sex少妇| 久久综合一区| 久久久成人的性感天堂| 亚洲高清在线精品| 丝瓜av网站精品一区二区| 亚洲免费资源| 天堂成人在线| 亚洲爆乳无码精品aaa片蜜桃| 91精品国产沙发| 欧美一区二区黄| 久久精品夜色噜噜亚洲a∨| 亚洲激情中文在线| 性欧美18~19sex高清播放| 午夜激情av在线| 国产一区免费观看| 久久这里有精品| 欧美在线三级电影| www.久久精品| 99久久亚洲精品蜜臀| 中文在线аv在线| 成人c视频免费高清在线观看| 亚洲高清乱码| 日本一区二区在线播放| 精品处破学生在线二十三| 亚洲三级在线看| 久久超碰97中文字幕| 欧美人妖在线| 超碰一区二区| 飘雪影院手机免费高清版在线观看| 法国空姐在线观看免费| 国产91久久婷婷一区二区| 亚洲国产91色在线| 亚洲一线二线三线久久久| 国产一区二区三区在线观看免费视频| 伊人春色精品| 亚洲黄色免费av| 九九热视频在线观看| 国产二区视频在线播放| 精品欧美一区二区在线观看视频| 欧美理论电影在线播放| 日韩欧美一区二区久久婷婷| 亚洲日本丝袜连裤袜办公室| 蓝色福利精品导航| 国产精品福利在线观看播放| 日韩久久一区| 视频在线观看入口黄最新永久免费国产| 国产无遮挡又黄又爽免费网站| 一区二区精品国产| av资源一区二区| 日产精品久久久一区二区福利| 国产亚洲美女精品久久久| 欧美日韩三级一区二区| 亚洲色图制服诱惑| hitomi一区二区三区精品| 久久精品午夜| 欧美91福利在线观看| 久久久久影视| 色狠狠一区二区三区| 爱看av在线| 老司机精品视频在线观看6| 宅男午夜电影| 天天综合天天操| 久久久久久久久久久99| 亚洲国产一区二区三区在线| 国产精品久久波多野结衣| 国产精品久久久久久久久久ktv | 日本精品性网站在线观看| 亚洲一级一级97网| 在线看国产一区| 亚洲免费观看视频| 中文字幕精品综合| 久久午夜色播影院免费高清| 国产精品综合一区二区| 久久裸体视频| 在线播放日韩| 国产精品毛片一区二区在线看| 精品伊人久久久| 看亚洲a级一级毛片| 国产精品99| 韩国精品视频在线观看| 国产欧美日韩高清| 嫩草影院中文字幕| 免费看国产一级片| 日本福利片免费看| 麻豆久久久久| 美女脱光内衣内裤视频久久网站 | 欧美一级二级三级| 国产日韩欧美另类| 国内精品小视频| 中文国产成人精品久久一| 亚洲第一精品夜夜躁人人躁| 欧美视频在线一区| 狠狠做深爱婷婷久久综合一区 | 欧美激情免费看| 久久精品视频va| 色一区av在线| 亚洲人成电影网| 日韩精品视频在线免费观看| 亚洲电影免费观看高清完整版在线观看| 欧美日韩在线直播| 欧美综合久久久| 91久久精品一区二区二区| 日韩欧美高清视频| 欧美日韩在线直播| 在线播放91灌醉迷j高跟美女| 91麻豆精品久久久久蜜臀| 91精品国产综合久久精品性色 |