記一次同步千萬資料需求

2021-10-03 07:56:19 字數 2475 閱讀 9729

1 : 千萬資料, 如果需要同步, 需要數分鐘時間, 為了不影響使用者體驗, 只能在晚上來重新整理資料

2 : 重新整理資料要可以保證資料不丟失, 還可以保證速度

//建立乙個有20個執行緒的執行緒池

protected

static

final executorservice executor_service = ttlexecutors

.getttlexecutorservice

(executors.

newfixedthreadpool(20

,new

lnamedthreadfactory

("solr-uploader"))

);public

void

updatebycustomerid

(long minsequence, long maxsequence)

//資料庫最大sequence

if(objects.

isnull

(maxsequence)

|| maxsequence==0)

/*為什麼分最小最大sequence, 還有游標(間距)

* 因為資料量太大, 而我們開啟的20個執行緒可以根據游標來互不干擾的工作

*///當前游標

long currentsequence = minsequence;

for(;;

),{}]"

,currentsequence,currentsequence+step)

;break;}

logger.

info

("當前區間[{},{}]"

,currentsequence,currentsequence+step)

; executor_service.

execute

(new

currentrunable

(currentsequence,currentsequence+step));

currentsequence=currentsequence+step;}}

public

void

update

( long minsequence,long maxsequence)

,{}]"

, minsequence, maxsequence)

;//分頁查詢條數

int page=0;

while

(true

)//根據createtype與最大最小sequence拿到對應範圍的資料

long start = minsequence + page*size;

long end = start+size;

list

customers = customerdao.

getbycreatetype

(start, end, clue_create);if

(collectionutils.

isnotempty

(customers)

)else

,{}]無線索建立的客戶"

, start, end);}

//page=page+size;

long b = system.

currenttimemillis()

; logger.

info

("單批次資料執行時間[{},{}] {}, 批次 {}"

, start, end, b-a, page)

; page++;}

}private

void

insertsearch

(list

customers)

else

", cus.

getid()

);failnum++;}

} logger.

info

("執行緒名稱 {} , 成功數量 {} , 失敗數量 {}"

, thread.

currentthread()

.getname()

, succnum, failnum)

; indexevents, origin);

}//將資料同步到索引

private jsonobject buildcustomermaps

(string id, string platform, string cluecategory)

}

1 : 將資料有批次的進行同步會比一起同步要快的多, 千萬級資料同步只需要不到五分鐘就可以完成大量訪問資料庫的同步任務

2 : 注意不要將資料庫搞跨了, 否則是一次重大事故

3 : 在測試資料庫記錄好有無失敗的資料, 並找出原因

4 : log一定要在重要的位置配置, 否則出錯後, 找不到原因

記一次處理「跨終端資料同步」

需求 終端a,終端b同時共享乙個list或數個list。終端a更新list時,終端b能在較短時間自動同步更新。技術基礎 前後端使用websocket協議進行雙向通訊。ajax輪詢的方案伺服器壓力過大,同步的延遲時間也較長 專案現狀與方案 前端為保證各個頁面資料共享,減少部分頁面響應延遲在全域性存在資...

記一次Excel匯入資料

使用excel匯入過程比較簡單,就是由於poi的版本,所以之前的一些方法可能不能使用了,特此開一篇文章記錄.使用poi依賴org.apache.poi poi3.17 主要 value upload method requestmethod.post public operaresult uploa...

資料同步的一次經歷

場景描述 在表中每秒產生一條資料切這張表中只有一條資料 即每秒的資料是進行刪除再新增的,所以主資訊表中只有一條 資料不進行累計。1 通過網際網路同步每秒產生的資料到遠端。2 實時顯示當前時間點資料。3 報表查詢 實現 所需服務 服務端 資料獲取並推送端,接受客戶端已同步的資訊,然後將同步過的資料在快...