前端事務性任務多次請求的問題

2021-08-20 10:43:52 字數 826 閱讀 1451

專案上線的時候,遇到乙個詭異的問題:預上線環境不能復現,生產環境必現。而預上線環境和生產環境最大的區別就在於:預上線是單點應用服務,生產環境則是集群部署。

request().excel(data, command, function

(success)

);});

stringbuffer temppath = new stringbuffer();

file file = new file(temppath.tostring());

files.createparentdirs(file);

// 設定輸出流

fileoutputstream fout = new fileoutputstream(file);

// 將模板的內容寫到輸出檔案上

templatewb.write(fout);

fout.flush();

// 操作結束,關閉檔案

fout.close();

暫且不討論上面未考慮windows與linux的系統相容(路徑斜槓),可以看到處理邏輯是在tmp目錄下生成兩個乙個臨時目錄下的檔案。在download之後會清理掉這個臨時檔案。

表面上看起來應該沒什麼問題:檔案生成,路徑下發給前端,前端請求,獲得檔案後寫入輸出流。

然後,集群環境下穩定復現的問題還是讓我們不得不深究一下存在的漏洞。

由於之前的專案都比較小,單節點基本能夠滿足需求,所以大家在寫**的時候就忘了考慮集群的情況。甚至以客戶端軟體的思維來寫**,對於檔案操作時特別容易出現問題。

涉及共享型的操作,一定要摒棄單機思維。

事務性的特點

原子性 atomicity 原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。一致性 consistency 事務前後資料的完整性必須保持一致。隔離性 isolation 事務的隔離性是多個使用者併發訪問資料庫時,資料庫為每乙個使用者開啟的事務,不能被其他事務的運算元據所...

事務性的特點

原子性 atomicity 原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。一致性 consistency 事務前後資料的完整性必須保持一致。隔離性 isolation 事務的隔離性是多個使用者併發訪問資料庫時,資料庫為每乙個使用者開啟的事務,不能被其他事務的運算元據所...

任務17 17 Flume高階 事務性

flume高階 講解flume的事務,因為flume是乙個傳輸的工具,所以,它希望資料不要丟,這就需要加事務,三個元件有三個事務。channel都是被動的,從source到channel是source推資料,從channel到sink,是sink主動拉取資料。flume有兩個事務 除了埠可以做資料來...