微服务框架
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
SpringCloud微服务架构
文章目录
- 微服务框架
- SpringCloud微服务架构
- 28 数据同步
- 28.1 同步方案分析
- 28.1.1 数据同步问题分析
- 28.1.2 总结
28 数据同步
28.1 同步方案分析
【面试重点】
28.1.1 数据同步问题分析
elasticsearch中的酒店数据来自于mysql数据库,因此mysql数据发生改变时,elasticsearch也必须跟着改变,这个就是elasticsearch与mysql之间的数据同步。
【问题】
在微服务中,负责酒店管理(操作mysql )的业务与负责酒店搜索(操作elasticsearch )的业务可能在两个不同的微服务上,数据同步该如何实现呢?
【方案一】同步调用
现在新的问题就是这三个步骤是依次执行的,后一步必须等待前一步的操作完成
[问题]
- 数据耦合、业务耦合
【方案二】 异步通知
这样就解决了同步调用的问题。但是也有一些问题
[问题]
- 依赖于MQ 的可靠性
【方案三】 监听binlog
MySQL中的binlog 默认是关闭的
这种方案就完全依赖于 canal 这个中间件了
每一种解决方案都有一定的优点和缺点,用哪种看业务来进行选择
28.1.2 总结
方式一:同步调用
- 优点:实现简单,粗暴
- 缺点:业务耦合度高
方式二:异步通知
- 优点:低耦合,实现难度一般
- 缺点:依赖mq的可靠性
方式三:监听binlog
- 优点:完全解除服务间耦合
- 缺点:开启binlog增加数据库负担、实现复杂度高