成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

前端的批量接口如何快速響應?有沒有通用解決方案?

開發 前端
昨天我們討論了服務間是否應該提供批量接口的問題,很多同學留言討論,非常好,一起討論一起進步。其中,留言最多的一種觀點是說可以提供,但是要限制條數,比如每次最多傳1000條數據過來。

[[379928]]

昨天我們討論了服務間是否應該提供批量接口的問題,很多同學留言討論,非常好,一起討論一起進步。

其中,留言最多的一種觀點是說可以提供,但是要限制條數,比如每次最多傳1000條數據過來。

說句實話,我們的項目很多也是這么做的。

不過我還是堅持我的觀點,最好就不要提供批量接口。

因為隨著數據量的不斷增大,勢必導致存儲架構升級。

我們以商品查詢為例,數據量變大,肯定是要上Redis的吧,以前批量接口可能直接一個數據庫in就解決了,現在你是先走緩存還是不走呢?走的話要改代碼,不走的話性能肯定不高。數據量再繼續增大,分庫分表了,批量接口怎么處理?上Elasticsearch了,怎么處理?

這里,我們舉例是說的批量查詢,如果換成批量操作呢?每次存儲架構升級可能都要改這塊的代碼,而且還有另外一個操蛋的問題,比如你們規定服務間調用超時最大是1秒鐘,超過1秒就有熔斷邏輯,那么,你要不要單獨為這個批量接口配置超時?

所以,批量接口極其容易形成瓶頸,需要花費巨大的代價去維護這個代碼,還是不提供比較好。

當然,如果你們的數據量在可以預見的未來都不會增長到那么大,提供一個批量接口也不是不可以,視情況自行決定哈。(數據量都沒有,還不趕緊跑路😂)

好了,關于昨天的問題先嘮這么多,今天,我們看另外一個問題:對前端提供的批量接口,后端如何快速響應?有沒有通用的解決方案呢?

首先,我們分析一下這個場景。

這里說的批量接口,肯定不是查詢哈,而是批量操作類的接口,比如批量導入,批量發貨,批量刪除,批量流轉,批量修改某種狀態,等等,有很多,不過做2C系統的可能比較少見,一般2B的系統會有非常多這種批量的接口,往往他們也是系統中的頑固,需要投入很多精力不斷打磨不斷優化。

好了,場景我們清楚了,那么,怎么解決這類難題呢?

一般地,我們提供一個批量接口,前端傳一堆id過來,或者數據過來,后端慢慢處理,處理完了再給前端返回,因為是2B的系統,用戶也愿意等待。

但是,這里其實有很多問題,最典型的就是超時問題,超時這個問題說簡單也簡單,說復雜也復雜,以我們的系統為例,我們部署到華為云上面,可能會有這么幾個超時的地方:

  • 1、華為云的防火墻有超時;
  • 2、華為云ELB有超時;
  • 3、前端nginx有超時;
  • 4、前端代碼里寫死了超時;
  • 5、后端網關有超時;
  • 6、后端服務有超時;
  • 7、遠程調用有超時;

所以,你看,一個超時問題能把你折磨死,而且,這種問題非常難排查,當然,你躺完一次這個坑之后后面可能會好很多。(所以,我為什么知道這么多地方可能有問題呢😂)

超時只是一個典型的問題,并不是全部,再說一個情形,以批量發貨為例,晚上,很多商家都喜歡批量發貨,比如一次1000條,這么多商家的請求呢,一不小心就會出現很多打到同一臺機器上面去了,然后大家都在搞批量,都要申請大量的內存,都在搞內存,內存扛不住呀,然后就OOM了,這是典型的請求傾斜的問題,所以,怎么設置你的負載均衡策略呢?目前,并沒有很好的解決方案。

基于以上這些可能會出現的問題,我一直在思考,能不能提供一種通用解決方案呢?

其實是有的,但是,要改原型。

比如,批量發貨,本來狀態只有未發貨、已發貨、發貨失敗,能不能加一個“發貨中”呢?

別小看這個發貨中的威力,真的很強大。

后端接收到批量發貨這個請求,先檢查數據的正確性,然后把數據庫這些單據的狀態改成發貨中,接著把這些數據一個一個的丟到消息隊列中,就可以返回了,前端查詢的時候就顯示發貨中,旁邊放一個刷新按鈕。此時,用戶完全去干別的事,比如去建商品,等會回來再看有沒有發貨完成或者發貨失敗的。

最后,有一組消費者不斷的從消息隊列中消費數據,調用物流服務發貨等等。

經過這么一折騰,本來前端要hang死幾分鐘的請求幾秒鐘就返回了,用戶體驗上去了,也不用去搞超時、請求傾斜等問題了,解放了生產力,可以多劃水了。

而且,這還是一個可以無限橫向擴展的架構,隨著用戶量的不斷增大,理論上來說,只要堆機器就可以了。

好了,關于前端批量接口的處理就到這里了。

最后,我想問,你們系統中是怎么處理前端批量接口的呢?

本文轉載自微信公眾號「彤哥讀源碼」,可以通過以下二維碼關注。轉載本文請聯系彤哥讀源碼公眾號。

 

責任編輯:武曉燕 來源: 彤哥讀源碼
相關推薦

2019-07-08 10:01:33

物聯網IOT技術

2023-02-10 15:41:50

物聯網物聯網平臺

2020-09-01 08:10:47

高并發系統程序員

2020-03-26 17:20:53

Windows 10命令系統技巧

2020-09-02 07:34:15

NDR網絡檢測和響應網絡安全

2020-09-04 13:50:35

前端異常監控代碼

2009-09-14 19:39:14

批量線程同步

2020-03-23 14:35:28

前端架構應用程序

2017-05-14 16:02:45

前端開發標簽嵌套

2018-09-14 16:20:37

2022-11-29 11:19:55

2021-10-18 07:58:33

MyBatis Plu數據庫批量插入

2022-12-27 11:06:35

海量接口并發

2022-02-18 09:20:43

消息中間件分布式MQ 冪等

2025-04-27 02:22:00

分頁項目開發

2022-07-13 15:03:23

網絡安全數據安全遠程工作

2024-09-29 10:29:55

NumPy矩陣運算Python

2012-01-12 10:18:04

2021-08-04 17:40:42

代碼Java消息冪等
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91最新入口| 伊人久久综合 | 女同久久另类99精品国产 | 天天搞夜夜操 | 99视频在线免费观看 | 大乳boobs巨大吃奶挤奶 | 免费人成激情视频在线观看冫 | 天堂精品视频 | 国产乱码久久久久久 | 精品99久久久久久 | 草久免费视频 | 老牛影视av一区二区在线观看 | 亚洲毛片在线观看 | 精品国产一级片 | 久操伊人 | 中文字幕第三页 | 91免费看片 | 亚洲国产成人精品一区二区 | 免费v片在线观看 | 这里有精品| 中文字幕韩在线第一页 | 黄色一级视频免费 | 欧美精品在线播放 | 日本不卡一区二区三区在线观看 | 欧美一区2区三区4区公司二百 | 国产欧美精品一区二区三区 | 国产色婷婷精品综合在线手机播放 | 亚洲最新在线视频 | 99看片网 | aaa天堂| 日韩电影一区 | 国产大学生情侣呻吟视频 | 欧美精品一区二区三区蜜臀 | 在线日韩 | 91久久精品国产 | 久久久久久成人 | 欧美aaa级 | 日本一区二区三区免费观看 | 狠狠亚洲 | 久久久久久国产精品免费免费男同 | 在线看免费 |