zoukankan      html  css  js  c++  java
  • MessageQueue一之介绍

    什么是消息队列

    消息队列是消息在传输过程中保存消息的容器。 

    为什么使用消息队列

     受限于系统性能(吞吐量、并发、响应时间等)以及为了实现应用解耦和通讯模式,消息队列是实现这些目标的重要角色,下面例举使用场景一一说明:

    异步处理


     注册后,我们需要向用户手机、邮箱发送消息,推荐志同道合的人,再响应用户,这一系列的业务的处理需要用户花费大把时间等待;
    这时我们可以引入消息队列,把注册信息写入DB后就响应用户,将那些不是必须的业务放入消息队列中异步执行,如此大大加快了响应时间。

    解耦


     在生产者与消费者中,传统做法是把生产系统的数据直接交给消费系统处理,这样当消费系统异常故障的时候,生产者的数据无法及时处理,导致生产系统崩溃;
    如果把生产系统的数据交给消息队列,消费系统从消息队列中获取数据,如此不管是生产系统还是消费系统异常故障都不会引起对方崩溃,实现了应用解耦。

    流量削峰


     在秒杀开始时,由于流量突增引起系统宕机。加入消息队列后,当人数超过了消息队列的长度,就不再接收新的秒杀请求,秒杀业务根据消息队列的请求信息再做后续处理,这样就控制了流量,缓解了系统短时间内的压力。

    日志处理


     大量日志的系统中,我们需要实时分析日志数据。但是在高峰期时日志输出远远大于日志处理的吞吐量,为了解决这一难题,我们可以把日志输出到kafka队列,再由日志处理系统从kafka读取日志。

    消息通讯


    消息队列的高效通讯机制适用于消息通讯,比如点对点通讯、或者发布订阅模式。

    实现方案

     在选择那种技术实现的时候,针对于消息队列使用场景的特性,要考虑如速度、安全、复杂度等因素,目前主流的方案有redis、kafka、activeMQ、rabbitMQ、zeroMQ

  • 相关阅读:
    程序猿神吐槽,说出那些苦逼的日子!
    java设计模式演示样例
    DP Leetcode
    标准差(standard deviation)和标准误差(standard error)你能解释清楚吗?
    移动开发 Native APP、Hybrid APP和Web APP介绍
    Oracle cloud control 12c 的启动与关闭
    Ubuntu文件的复制、移动和删除命令
    Android中集成第三方库的方法和问题
    腾讯QQ企业邮箱POP3/SMTP设置
    又发现支付宝和淘宝的设计漏洞
  • 原文地址:https://www.cnblogs.com/dahuandan/p/6798187.html
Copyright © 2011-2022 走看看