zoukankan      html  css  js  c++  java
  • MQ概念

    MQ

    1.消息队列可以简单理解为:把要传输的数据放在队列中。用来降低Web服务器因发送消息而导致的负载和延时问题。

    2.为什么用MQ(MQ优点):解耦、异步、削峰/限流、高可用、防数据丢失。

    1)解耦举例:订单系统下单,需要调用支付系统、物流系统、库存系统、积分系统等等一批。物流系统宕机,整个一串全完。使用MQ,只需要物流系统修复后从MQ中读取消息进行处理,其他系统正常运行。

    2)异步举例:订单系统下单,需要调用支付系统、物流系统、库存系统、积分系统等等一批。导致订单提交耗时很长。使用MQ,订单系统推送到MQ,然后结束,其他系统接收消息后自行处理。

    3)削峰/限流:并发量大系统,假设每秒钟并发1万次,一台服务器每秒钟处理1百次,共10台机器。可以使用MQ每次处理1百,其他的排队等待。

    4)高可用:MQ用来削峰,一但宕机,全完蛋,这就需要支持集群。

    5)防数据丢失:MQ运行着,各种原因导致宕机,要防止数据丢失。MQ可把数据持久化到磁盘上。

    版本比较

    ActiveMQ

    多用于传统企业,对高并发、高吞吐、高负载要求不高的,且版本的迭代速度比较慢,目前是几个月迭代一个小版本。

    RabbitMQ

    多用于中型企业,支持万级的吞吐,可以保证数据不丢失,有可视化的数据管理页面,版本迭代速度比较快,缺点是用erlang语言开发的,源码分析较难,难以二次开发。

    RocketMQ

      阿里开发的,用的是Java语言,支持十万级的吞吐,可以做分布式的,缺点是如果阿里放弃此技术,公司又没有研究源码的人,那后续出现的问题不好解决。

    Kafka

      是apache开源的消息队列项目,多用于大数据,有超高的吞吐量,如实时日志采集、实时数据同步、实时数据计算等。

    RabbitMQ和Kafka比对:

      Kafka作为消息传输的数据管道,RabbitMQ作为交易数据作为数据传输管道,主要的取舍因素则是是否存在丢数据的可能;RabbitMQ在金融场景中经常使用,具有较高的严谨性,数据丢失的可能性更小,同时具备更高的实时性;而kafka优势主要体现在吞吐量上,虽然可以通过策略实现数据不丢失,但从严谨性角度来讲,大不如RabbitMQ;由于Kafka保证每条消息最少送达一次,有较小的概率会出现数据重复发送的情况;Kafka的设计初衷就是处理日志。

  • 相关阅读:
    QT 信号槽 异步事件驱动 单线程 多并发
    Qt 静态库与共享库(动态库)共享配置的一个小办法
    关于:有符号与无符号整数的大小比较
    QT信号槽 中的对象野指针
    Qt程序打包发布
    Qt程序打包发布
    SQL Server 2012 sa 用户登录 18456 错误 (转)
    QtCreator常用之快捷键
    opengl中相关的计算机图形变换矩阵之:模型视图几何变换
    opengl中相关的计算机图形变换矩阵之:齐次坐标 (摘编)
  • 原文地址:https://www.cnblogs.com/DreamFather/p/13597500.html
Copyright © 2011-2022 走看看