專案資料處理遇到的問題和優化

2021-09-26 12:33:18 字數 999 閱讀 9230

當前開發專案需求:需要上鏈一天10萬條資料,後台使用閘道器暴露服務

(只是一家isv10萬,後期可能資料量非常大,需要轉移資料)

(區塊鏈溯源baas平台,提供安全管理服務)

優化:使用批處理插入資料,資料設定unique key,時間大概1秒左右。成功則插入,失敗則校驗失敗。

優化:驗證發現傳送大量資料(1m)到訊息佇列的時間也和一條資料(1k)基本一致,直接傳送200條資料一次性傳送到mq,由於200條資料一次性處理對伺服器影響不是很大,並且總共有10萬條資料,所以大概率不會出現一台消費伺服器負載很大的情況。

優化:碰到問題druid執行緒池太小,等待時間太短導致出現問題,改為設定druid連線池大小為100,等待時間為60秒。(極            端情況下可能會出現訊息生產方占用druid執行緒,消費方無法及及時獲取執行緒導致異常)

優化:由於乙個批次都是乙個最終狀態,所以把迴圈修改部分資料放到一起,用in代替=,最終花費0.1s - 0.2s。

1、rds實現(線上第二版本需要快速迭代,所以先採用資料庫進行。申請redis流程複雜)

建立分布式鎖資料庫表,查詢時鎖定指定行記錄。上鏈後開放記錄,再次進行當前資料狀態查詢。

優化:直接在第一條記錄做中間狀態,用update + where只放開一條記錄的通行,不需建立分布式鎖表,且減少資料查詢時         間。

2、redis實現

暫時未使用

優化:新增重試機制,上鏈部分重試一定次數。

消費者執行緒過多,修改消費者執行緒為4個執行緒,採用2臺4核8g伺服器測試服務。修改配置服務後只執行消費者gc平均觸發           頻率在20秒一次。

1、批處理非同步訊息

利用rocketmq設定的消費超時時間,和設定冪等中間狀態的時間判斷訊息是rocketmq超時訊息重發還是初次傳送來進行批處         理子項的上鏈操作。

2、單條同步訊息

利用伺服器啟動查詢單條型別的訊息,若是為未處理則進行上鏈操作。

修改壓測執行緒為40左右,線上連線為2000故無影響

Django專案資料處理的流程是怎樣的

給學生講解用,看了很多部落格,感覺都不是自己想要的。使用者在瀏覽器裡輸入乙個位址 首先處理這個位址的應該是nginx伺服器或者apache伺服器,這裡以nginx伺服器為例 nginx立即把靜態資源返回給使用者 如果需要把動態資源給使用者,則將動態請求的 url交給django處理 通過 uwsgi...

資料處理相關的優化

等深層機制應用和研究,只是些膚淺應用和建議 關於資料處理相關的優化 一 sqldataread 和dataset 的選擇 sqldataread優點 讀取資料非常快。如果對返回的資料不需做大量處理的情況下,建議使用sqldatareader,其效能要比datset好很多。缺點 直到資料讀完才可clo...

python中scrapy處理專案資料的例項分析

在我們處理完資料後,習慣把它放在原有的位置,但是這樣也會出現一定的隱患。如果因為新資料的加入或者其他種種原因,當我們再次想要啟用這個檔案的時候,小夥伴們就會開始著急卻怎麼也翻不出來,似乎也沒有其他更好的蒐集辦法,而重新進行資料整理顯然是不現實的。下面我們就一起看看python爬蟲中sc處理專案資料的...