异构数据

解释:结构不同的数据叫做异构数据

1、耦合性强

这里我们如果修改了后台的数据,就需要把数据同步到全文检索引擎里面去,是相对被动的操作

2、扩展困难

二,异构数据的解决方案

解决方案:Canal

Canal是基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持Mysql

Canal可以做异步数据的同步工作

原理

这里我们把从库替换成Canal

这里Canal接收到主库的binlog日志后不会去执行,而是自动的触发指定的php或者java代码,然后实现向其他数据源的数据同步的工作。这里我们发现只是解决了数据的同步和监听的工作。没有解决解耦的问题。下面我们解耦可以使用消息队列

MQ消息队列起到的作用是消息的订阅和发布

可以使用消息队列作为数据的中转站,可以做数据和团队之间的解耦

对于MySQL我们这里配置了一个Canal对数据进行监听,在数据发生变化的时候,会生成发往MQ消息队列的消息,这里的消息根据操作SQL的不同,会产生不同的消息。这些消息会被放到MQ消息队列中。哪里需要这些变化的消息,就去订阅MQ消息队列,就会起到数据的同步和解耦。只要有新团队加入,并且使用这些消息,那么就去订阅MQ消息队列就可以了。