Mysql 和 ElasticSearch 实时同步

业务场景

在我们的应用场景中经常有这样的需要,通过模糊搜索来搜索想要的数据,当我们数量小的时候,我们完全可以利用数据库的like帮我实现这个功能,但当数据量越来越大时,我们会发现数据库的响应速度越来越慢,甚至一个like语句可以查挂整个应用。

架构设计

我厂利用了搜索引擎来避免数据库的like查询,架构图如下:


架构图

原理很简单,解析mysql的binlog日志,然后实时同步到es中,如果我们自己解析binlog,那真是一个不小的工作量,而且我们也不必要自己造轮子,阿里开源的项目canal正好符合我们的需求。

详细canal的资料大家可以访问canal wiki

web app是一个服务,采用了生产者、消费者和阻塞队列的模型来处理,如果数据量非常大,可以引入消息队列,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容