当业务量上升后,由于mysql对全文检索或模糊查询支持的能力不强,在系统中查询的地方,往往会出现慢sql等,拖累系统其他模块,造成性能低下。
随着ES使用普及率的升高,ES是mysql的一个有效补充。我们可以将数据发送到搜索引擎(如ES)上,由搜索引擎来提供专业的服务。
接下来,就结合工作中实际用到的场景,对数据从mysql到es的同步进行一些分析。
在实践中我总结出了以下几种方式。
第1种:同步双写
这是一种最为简单的方式,在将数据写到mysql时,同时将数据写到ES,实现数据的双写。
优点:
业务逻辑简单。
缺点:
硬编码:有需要写入mysql的地方都需要添加写入ES的代码;业务强耦合;存在双写失败丢数据风险;性能较差:本来mysql的性能就不是很高,再加写一个ES,系统的性能必然会下降。说明:
上面第3点讲到的双写失败风险,包括以下3种: