消息队列的学习(一)

消息队列的学习(一)

(消息队列概念以及应用场景)

  • 1.消息协议的概念:发送者发送消息,接收者接受消息,这两种行为的大前提是消息按照某一种格式构成,没有格式的消息是没有意义的,这种构造消息的格式就是消息协议。

  • 2.消息发送的过程
    a.即时通信:类似QQ,微信。发送者发送消息,接受者立即就可以收到,并且提示。
    具体的实现方式是RPC。
    b. 延迟通信:发送者发送消息,消息到达某一个容器,等这个消息满足容器的某一种条件时,容器发送这个消息到接收者。
    容器的一种实现方式就是消息队列。

  • 3.消息队列的使用场景
    3.1 异步处理:
    场景举例:注册账号,注册之后,系统会给注册人的邮箱发送邮件,给注册人的手机发送短信。
    传统方式:
    a.串行处理:注册成功 > 发送邮箱 > 发送短信 > 处理结果返回客户端。
    b.并行方式:注册成功 > 发送邮箱,同时发送短信 > 处理结果返回客户端。
    假如 注册需要50ms(毫秒), 发送邮箱50ms,发送短信50ms。那么串行处理需要150ms。并行处理需要100ms。
    使用消息队列改进:注册成功 > 发送邮箱,发送短信动作写入消息队列 > 返回结果。
    写入消息队列的动作几乎是瞬间完成的,速度很快,几乎是0ms。那么改造之后,完成整个业务的时间是50ms。效率大大提升。

    3.2. 应用解耦:
    场景举例:电子商城,订单系统,和库存系统。客户下单之后,请求库存系统,减少库存,返回下单成功。
    传统方式:客户下单 > 请求库存 > 返回结果。
    缺点:如果库存系统瘫痪了,那么下单就失败。会影响交易收益。
    使用消息队列该进:

  • 订单系统:客户下单 > 持久化处理 > 库存请求写入消息队列 > 下单成功

  • 库存系统:订阅下单的消息 > 采用拉/推的方式,获取下单信息 > 库存操作
    这样即使库存系统瘫痪了,也不影响正常的下单,避免了损失。

    3.3 流量削锋:
    场景举例:秒杀活动 团抢活动
    前端引用消息队列,秒杀请求写入队列,设置队列长度,超过长度的请求转入错误页面。

    3.4 日志处理
    解决大量日志的传输问题。架构如下:

  • 日志采集客户端:采集日志,定时写入kafka队列。

  • kafka队列:负责日志的接受,存储,转发。

  • 日志处理应用:订阅并且消费kafaka队列的数据。
    kafka日志处理应用案例:新浪技术分享:我们如何扛下32亿条实时日志的分析处理

    (1)Kafka:接收用户日志的消息队列。

    (2)Logstash:做日志解析,统一成JSON输出给Elasticsearch。

    (3)Elasticsearch:实时日志分析服务的核心技术,一个schemaless,实时的数据存储服务,通过index组织数据,兼具强大的搜索和统计功能。

    (4)Kibana:基于Elasticsearch的数据可视化组件,超强的数据可视化能力是众多公司选择ELK stack的重要原因。

    3.5消息通讯

    • 点对点通信:客户端A和客户端B使用同一个消息队列,就可以进行点对点的通信。
    • 聊天室通信:客户端A和客户端B。。。。客户端N订阅同一主题,进行消息发布和接受。
  • 4.消息模式
    4.1 P2P模式:P2P模式包含3个角色:发送者,消息队列,接收者。发送者发送消息到特定的消息队列,消息队列保存消息,直到消息被消费或者超时。
    特点:只有一个接收者。接收者接收消息会向队列做应答。
    如果希望每一个消息都被消费,就应该是用P2P模式。

    4.2 Pub/Sub模式:包含3个角色:主题,发布者,订阅者。
    特点:每个消息可以被多个订阅者消费。针对某一个主题,必须创建消费者对象,才能消费发布者的消息。为了消费消息,订阅者必须保持运行状态。其实JMS允许订阅者持久化一个订阅者,即使订阅者不在运行状态,也可以消费消息。
    如果希望消息可以被多个消费者接收,并且不需要返回结果的话,使用pub/sub模式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值