使用elasticsearch使用是时,有搜索功能,还有写入索引文档。实际到数据同步。
一:索引同步实时要求高的时候两种方式:
方案一:canal
1.canal模拟mysql slave的交互协议,把canal伪装成mysql slave中的一个节点,向mysql master主节点 发送dump协议
2.在mysql master主节点收到 (从节点) 的dump请求,开始推送binary log 给slave从节点(canal)
3.然后canal开始按照从节点的方式解析binary log日志,开始执行,删除,增加,修改,在从数据库中进行相应的增删改等操作。(canal 解析binary log对象 使用的是原始为byte流)
方案二:
1、当把需要的数据写入数据库的时候,也需要把数据写入索引库中。使用数据库是事务控制,同时写入成功 同时失败。
二:当索引同步实时要求不高的时候,有mq信息队列,logstash 任务调度等方式。
mq :向数据库mysql写数据的时候想mq写入消息。创建一个搜索服务程序进行监听mq,在收到消息后写入索引。优势:代码解耦。缺点:在需要处理信息可靠性的时候有一定的技术成本