为什么要学习rabbitMQ呢?要解决什么问题呢?
商品的数据同步问题 后台的商品一旦发生变化,前台和搜索也都要跟着变化
学习的步骤:
搭建rabbitMQ的环境
学习rabbitMQ
解决数据同步的问题
原始的数据同步的解决方案:
在前台系统开放接口 该接口中完成将redis 中的数据删除
后台系统在商品编辑,删除时调用这个接口。即可实现数据同步
该方案存在的问题是: 系统的耦合度太高 耦合度是指:其他团队的版本升级会影响到后端团队的版本升级 于是就引进了rabbitMQ
消息中间件介绍及特点详解
消息中间件是在消息传输过程中保存消息的容器,消息中间件再将消息从它的源中继(生产者)到它的目标时(消费者)充当中间人的作用 队列的目的是提供路由并保证消息的传递,
如果发送消息时接收者不可用,消息队列会保留消息,知道可以成功传递为止,当然 消息队列保留消息也是有期限的
消息中间件特点:
1、采用异步处理的模式 消息发送者可以发送一个消息而无需等待响应,消息发送者将消息发送到一条虚拟的通道上(主题或者队列),
消费者可以订阅或者监听这个通道 eg: 用户注册的逻辑:用户注册 输入用户信息,点击注册,注册服务会立马响应并提示用户注册成功 同时发消息给邮件服务 并保存一条数据到mysql,邮件服务消费这条消息 就会触发发送邮件的服务,用户会收到注册成功的邮件
2、可以实现几个应用程序之间的解耦 一致性在分布式系统中是最难的东西,一致性分为很多种:读写一致性。读读一致性,写写一致性 常一致,弱一致,最终一致
在线交易系统为了保证最终数据的一致性,在支付系统处理完成后会把支付结果放到消息中间件里通知订单系统修改订单支付状态,两个系统通过消息中间件解耦