• 消息队列-简单介绍Java消息队列,什么是消息队列,作用以及常见消息队列


    天天说队列, 项目请求数据不能及时处理时,就一言不合通过队列啊, 心中那个是妈卖批,那么到底什么队列呢,队列有到底运用于哪些运用场景呢;

    先说说应用场景吧, 不知道有啥作用,看多了含义,原理什么的还是头疼;

    消息队列应用场景

    1.比如你的服务器一秒能处理100个订单,但秒杀活动1秒进来1000个订单,持续10秒,在后端能力无法增加的情况下,你可以用消息队列将总共10000个请求压在队列里,后台consumer按原有能力处理,100秒后处理完所有请求(而不是直接宕机丢失订单数据)

    使用消息队列能够使关键组件顶住增长的访问压力,而不是因为超出负荷的请求而完全崩溃 , 就是防止雪崩。某一时刻数据量突然增大,起到一个缓冲。


    2.一般都是异步的,不要求立即响应。打个比喻,你同时只能做一件事,但是你有一个ToDoList,每做完一个,在ToDoList中划掉一个,有新的分给你的任务,就放到ToDoList后面,这个ToDoList差不多就是一个队列了,队列就是一种数据结构,减轻的不止是数据库的压力。


    3.可用于一些不及时的操作,耗时的操作,比如发送邮件、图片处理等等。

    就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和。

    4.项目功能软件的正常使用中,并不需要去刻意的使用消息队列处理,而是当出现性能瓶颈时采用,否则盲目的使用消息队列 , 增加维护和开发的成本,反而影响开发进度而得不偿失。

    消息队列种类及特点:
        rabbitMQ稳定,可靠,数据一致,支持多协议,有消息确认,性能一般,基于erlang语言,二次开发困难.
        kafka高吞吐,高性能,快速持久化,无消息确认,无消息遗漏,可能会有有重复消息,依赖于zookeeper,成本高.
        ZeroMQ灵活快速,不支持持久化,需要大量编码来实现稳定可靠.
        ActiveMQ不够灵活轻巧,对队列较多情况支持不好.
        rocketMQ性能好,高吞吐,高可用性,支持大规模分布式.

        ZeroMQ小而美,RabbitMQ大而稳,Kakfa和RocketMQ快而强劲。

    转载自https://blog.csdn.net/qq_43843725/article/details/95113436

  • 相关阅读:
    flex居中
    flex
    js将接口返回的数据序列化
    用javascript替换URL中的参数值
    object遍历删除空值
    node代理服务器
    随机生成id
    正则之特殊字符
    H5项目常见问题及注意事项
    node编译C++,比如安装node-gyp失败的问题
  • 原文地址:https://www.cnblogs.com/zmwy/p/13757358.html
Copyright © 2020-2023  润新知