情景:
訂單量的日益增長颜屠,以及他復(fù)雜的查詢緯度導致后臺管理以及用戶端查詢訂單接口耗時嚴重搀罢,遂對訂單查詢相關(guān)接口進行改造艘绍。
具體方案:
從底層進行優(yōu)化蚊荣,對訂單進行es改造初狰,查詢訂單直接通過es索引進行查詢,查詢到具體數(shù)據(jù)后互例,在通過主鍵id進行單表查詢奢入,組裝數(shù)據(jù)
面臨的問題:
1.如何進行索引同步?
2.如何保證索引數(shù)據(jù)準確媳叨?
3.如何進行數(shù)據(jù)補償腥光?
4.如何進行接口改造丁存?
5.如何對原有數(shù)據(jù)進行初始化索引?
解決:
問題1:
通過canal監(jiān)聽主表發(fā)送消息到mq中柴我,然后消費消息進行數(shù)據(jù)同步解寝;
問題2:
對消息進行補償,以及報警艘儒,接收到消息聋伦,發(fā)現(xiàn)后續(xù)部分數(shù)據(jù)不準確時,發(fā)送延遲消息進行消費界睁,后續(xù)仍舊不準確時進行短信或者郵件等其他方式的報警觉增;
問題3:
創(chuàng)建定時任務(wù),每天晚上凌晨1:00左右對前一天的數(shù)據(jù)做一個批量刷新翻斟;
問題4:
針對現(xiàn)有接口進行索引字段的創(chuàng)建逾礁,逐步替換老接口,不修改原有代碼访惜,新增接口進行替換嘹履,將原有接口內(nèi)的循環(huán)查庫全部更改為批量查詢;
問題5:
通過多線程的方式將數(shù)據(jù)進行分頁查詢并發(fā)的去創(chuàng)建索引债热,分頁方式使用類似瀑布流下拉的方式砾嫉,加快查詢速度,(200W數(shù)據(jù)窒篱,10個線程焕刮,50分鐘左右);