一、需求背景
項目背景:開發項目爲酒店預訂App,ES實現全文檢索功能,類攜程app酒店搜索
項目架構:基於maven管理,SSM框架、mysql數據庫
二、架構設計
整體架構設計模塊分爲:
- ES客戶端java API底層調用模塊
- ES數據同步模塊
業務數據處理模塊
同步模塊的實現:
1、整個全文檢索業務關係增加了redis隊列
2、應用層與全文檢索服務解耦
3、同步任務放到事件調度服務,採用線程池機制,具備失敗自動重試一定次數機制
隊列數據設計:
數據結構:{“i”:“75”,“o”:2,“r”:0,“t”:9}
i:數據id,對應數據庫唯一標識(主鍵)
o:操作類型,例如:新增、修改、刪除等。
r:已經重試次數
t:同步類型,例如:酒店、房價等。
三、開發流程
- elasticsearch5.4.0 環境部署 及插件 ik + head +kibana等的安裝與配置
- 根據業務需求完成數據庫表與ES數據的交互格式的設計
- 創建Mapping、導入數據
- 創建ES客戶端,JAVA API的方法封裝供業務層調用
- 編寫業務同步模塊、ES業務處理服務模塊
- 利用多線程進行隊列消費實現數據同步
四、後期維護
針對ES數據同步開發獨立的功能進行細粒度業務數據同步,以完成相應的業務需求維護