一、背景
公司业务搜索和统计需求非常多,由于查询SQL关联多且复杂,SQL语句把大量业务逻辑和大量计算堆砌到MySQL服务器上,经常导致线上MySQL负载高,随后响应和吞吐量下降,严重影响线上MySQL持续稳定服务,所以各个团队逐步或已经把繁重的查询和统计SQL工作迁移到es上,es架构比较合适查询和统计服务,各个团队做相同事情,影响效率,而且因es需要同步DB加大了DB负担,业务架构团队希望es搜索服务化,1.为服务化,业务解耦提供支撑 2.相同功能接口复用,提高团队开发效率。通过调研数据模型,先服务化online_class和student为主表的查询和统计需求。
二、目标
- 针对online_class和student主表,提供统一es存储和查询服务
三、方案
1.es存储
创建数据模型
es数据模型及服务化思考 重点考虑如何构建简单数据模型能适配核心需求
数据同步
初始化全量同步 + 增量同步保证MySQL数据复制到es
可以复用已经有的功能代码,重点考虑如何fork和迁移代码
2.es查询
四、执行计划
执行风险:我以前没有使用过es,有人能协助或一起开发最好,不然遇到困难卡住了,会耽误时间,最大风险执行时间可控性较差,未知东西居多。
方向
|
类型
|
任务
|
优先级
|
计划完成时间
|
状态
|
es存储
|
es用法学习
|
es语法
|
P0
|
2018-03-14
|
|
es索引、类型、文档、字段
|
P0
|
2018-03-14
|
|||
索引、类型创建
|
P0
|
2018-03-14
|
|||
简单对象查询
|
P0
|
2018-03-14
|
|||
聚合函数功能
|
P0
|
2018-03-14
|
|||
可视化操作
|
P0
|
2018-03-15
|
|||
API使用
|
P0
|
2018-03-15
|
|||
申请环境
|
申请测试环境
|
P0
|
2018-03-15
|
||
参考mes项目
|
下载代码
|
P0
|
2018-03-14
|
|
|
与庆虎沟通,了解以下类调研es API用途
com.vipkid.mes.service.impl
|
P0
|
2018-03-15
|
|
||
验证数据模型可行性
|
创建数据模型
|
||||
构造数据
|
|||||
写query语句,验证宽表需求
|
|||||
确定数据模型
|
满足90%需求
|
||||
创建es项目工程
|
|||||
全量同步工具
|
找相关同学沟通,迁移代码
|
||||
测试验证
|
|||||
增量同步代码
|
找相关同学沟通,迁移代码
|
||||
测试验证
|
|||||
es查询
|
clt组整理:宽表需求业务SQL统计 30+
|
||||
cc组整理:在线课程页面接口
|
|||||
基础服务组整理:es-api
|
|||||