消息中间件(1)

定义:
消息中间件是指在消息传输过程中保存消息的容器,
消息中间件将消息从它的源中继到他的目标时充当中间人的作用
消息中间件的主要目的是提供路由并保证消息的传递,如果发送消息时接受者不可用,消息队列会保留消息,直到可以成功传递它为止,当然,消息队列保存消息也是有时间期限的。


特点:
采用异步处理模式:消息发送者可以发送一个消息而无需等待响应,消息发送者将消息发送到一个通道上,消息接受者则订阅或者是监听该通道
,一条消息最终转发给一个或者多个消息接受者,这些接受者都无需对消息发送者做出同步回应,整个过程是异步的
应用成序之间是松耦合关系:发送者和接受者不必了解对方,只需要确认消息;发送者和接受者不必同时在线
(在线销售者为了保证数据的最终一致,即A状态到B状态,不需要同时到达,一定时间后能够最终达到一致的状态。支付系统支付成功之后,
通知订单系统更改订单状态,可以用消息中间件)


消息中间件的传递模型:

点对点模型:1.每个消息只有一个消费者 2.发送者和消费者没有时间依赖 3.接受者确认消息接受和处理成功


发布订阅模型:1每个消息可以有多个订阅者 2.客户端只有订阅后才能接收到消息 3.持久订阅和非持久订阅。非持久订阅需要保持长连接,发布者和消费者需要同时在线
持久订阅会存储关系。大部分情况下会使用持久订阅


互联网消息中间件的应用场景:






提到上面的一个场景 就不得不说一个中间件  也能实现上面的需求  :

数据抽取是 ETL 流程的第一步。我们会将数据从 RDBMS 或日志服务器等外部系统抽取至数据仓库,进行清洗、转换、聚合等操作。
在现代网站技术栈中,MySQL 是最常见的数据库管理系统,我们会从多个不同的 MySQL 实例中抽取数据,存入一个中心节点,
或直接进入 Hive。市面上已有多种成熟的、基于 SQL 查询的抽取软件,如著名的开源项目 Apache Sqoop,
然而这些工具并不支持实时的数据抽取。MySQL Binlog 则是一种实时的数据流,用于主从节点之间的数据复制,
我们可以利用它来进行数据抽取。借助阿里巴巴开源的 Canal 项目,我们能够非常便捷地将 MySQL 中的数据抽取到任意目标存储中。
Canal 的组成部分
简单来说,Canal 会将自己伪装成 MySQL 从节点(Slave),并从主节点(Master)获取 Binlog,解析和贮存后供下游消费端使用。
Canal 包含两个组成部分:服务端和客户端。服务端负责连接至不同的 MySQL 实例,并为每个实例维护一个事件消息队列;

客户端则可以订阅这些队列中的数据变更事件,处理并存储到数据仓库中。下面我们来看如何快速搭建起一个 Canal 服务。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值