随着业务数量的增大,部分批量查询会导致数据库的慢查询(已经增加了索引),比如模糊搜索等,所以准备迁移到ElasticSearch
要求
- 平滑迁移,不影响用户使用
- 为了降低风险,接口会逐个切换
- 减少测试工作量
方案
数据同步方案
- 使用
Flink SQL CDC
迁移MYSQL数据到ES
业务升级方案
- 平行请求再对比: 这样的方式可以减少测试工作量,不需要测试肉眼对比查询结果是否一致
- 设置不同的工作模式,而且支持动态切换(结合配置中心)
- MYSQL: 只访问MYSQL,
- ES: 只访问ES
- FAST: 两个都访问,哪个先返回则使用其结果
- RETURN_SQL_WITH_CHECK: 使用MYSQL的结果,但是会对比ES,如果有不一致则需要输出到日志,方便后续分析(可以异步ES结果对比)
- 工作模式可以精确到一个查询接口
- 接口名字使用分段式
- 工作模式可以分段式配置,可以简化配置
- ES只能是只读,避免意外修改数据
参考
- Flink SQL CDC 实践以及一致性分析