一、需求背景
项目背景:开发项目为酒店预订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数据同步开发独立的功能进行细粒度业务数据同步,以完成相应的业务需求维护