Java教程:Canal实现Mysql和ES数据同步 梦里梦外; 2024-03-23 09:53 17阅读 0赞 ## 1.ES概述 ## ES全称为"ElasticSewrch", 是一个基于RESTful web接口, 并且构建在Apache Lucene之上的开源分布式搜索引擎。 ES可以在极短的时间内存储、搜索和分析大量的数据。通常作为具有复杂搜索场景情况下的核心发动机。 简单来说, ES可以帮助我们快速完成海量数据的搜索工作. ## 2.场景介绍 ## 在实际开发中,为了保证数据的安全性和持久性, 所以,我们一般会把数据存储的数据库中, 比如mysql数据库. 但, 如果数据量比较大, 并且搜索业务比较多, 则需要使用ES来实现我们的搜索功能. 而ES所实现的搜索, 需要把数据放入ES中, 才能实现, 所以, 就需要我们把mysql中的数据, 同步到ES中才可以. ## 3.实现方案 ## 实现Mysql与ES之间的数据同步, 大体上可以分为三种方案: ## 方案一:同步调用 ## ![a644f744631742a4bec73f97c569b43d.png][] ## 方案二:异步通知 ## ![277358e78a9449808f9ec2b487e63904.png][] ## 方案三:监听binlog ## ![10f7b9438e804ad2a7c45f467ca05334.png][] ## 4.监听binlog ## 在以上三种实现方案中, 可靠性相对来说比较好的是第三种方案"监听binlog", <table> <tbody> <tr> <td> <p><strong>方案</strong></p> </td> <td> <p><strong>优势</strong></p> </td> <td> <p><strong>缺点</strong></p> </td> </tr> <tr> <td> <p>同步调用</p> </td> <td> <p>实现简单,粗暴</p> </td> <td> <p>业务耦合度高</p> </td> </tr> <tr> <td> <p>异步通知</p> </td> <td> <p>低耦合,实现难度一般</p> </td> <td> <p>依赖mq的可靠性</p> </td> </tr> <tr> <td> <p>监听binlog</p> </td> <td> <p>完全解除服务间耦合, 可靠性较强</p> </td> <td> <p>开启binlog增加数据库负担、实现复杂度高</p> </td> </tr></ </tbody> </table> [a644f744631742a4bec73f97c569b43d.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/23/ee8aa1c708964b8bb8bb11726b4df074.png [277358e78a9449808f9ec2b487e63904.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/23/8d245178247945d085998430e54e4d54.png [10f7b9438e804ad2a7c45f467ca05334.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/23/6f2fd1fb875943ae91f19b034e457f4a.png
还没有评论,来说两句吧...