`

MQ学习记要

阅读更多

1.为什么要用MQ?

系统间解耦、异步(提升响应速度)、削峰

 

2.引入MQ可能存在的问题:

可用性降低、复杂性增加、一致性问题

 

3.MQ主流产品:

ActiveMQ(https://activemq.apache.org/)

RabbitMQ(https://www.rabbitmq.com/)

RocketMQ(http://rocketmq.apache.org/)

Kafka(http://kafka.apache.org/)

 

对比:

 

4.如何保证消息队列的高可用性

RabbitMQ:

普通集群模式:

缺点1:可能会在集群内部产生大量的数据传输;

缺点2:可用性几乎没有保障,如果queue的节点宕机则导致那个queue的数据丢失。

镜像集群模式:

优点:任何一个节点宕机、其他节点还有完整数据;

缺点:不是分布式的,如果queue的数据量很大、大到机器无法容纳,怎么办?

 

Kafka:

分布式集群:

每台机器+每台机器上的broker进程,就可以认为是Kafka集群中的一个节点;

0.8版本以后有副本机制、leader、follower

 

5.如何保证消息不被重复消费(消费时的幂等性)

Kafka:offset

 

6.如何保证消息的可靠性(消息丢失怎么办)

RabbitMQ:

生产者丢:事务模式、confirm模式-非阻塞异步;

队列数据丢失(运行过程中宕机):开启持久化机制;

消费者丢:不用autoAck、手动ack

 

Kafka:

消费者丢:手动提交offsete

Kafka丢(数据仅在leader还未同步到follower):设置4个参数:

topic设置replication.factor>1

kafka服务端设置min.insync.replicas>1

生产者设置acks=all、retries=MAX

 

7.如何保证消息的顺序

RabbitMQ:1个queue、多个cosumer:拆分queue、queue和consumer 1v1

Kafka:1个topic、1个partition、1个consumer内部多线程:写入有序、消费者建内存队列根据写入序号存放

 

8.消息积压(满、延时、过期等)怎么办?

Kafka:快速取原partition到扩建partition中+扩建consumer 1v1

RabbitMQ: 生产上不设过期时间避免过期问题,一旦产生问题只能从源头查

 

 

 

 ——来源于石杉码农学院

 

 

 

分享到:
评论

相关推荐

    IBM MQ学习开发详细文档

    本文档详细介绍了IBM MQ的安装、学习、实践以及遇到的问题和解决方案,同时还涉及了MQ通道的SSL加密传输和Java端的SSL证书验证。 首先,安装IBM MQ时要注意操作系统与版本的兼容性,例如,Windows 10 64位系统适合...

    MQ技术文档学习

    【MQ技术文档学习】 MQ(Message Queue)技术是企业级应用间通信的一种重要方式,它通过消息队列作为中间件,实现应用程序之间的解耦合,提高系统的可扩展性和稳定性。在分布式系统中,MQ扮演着数据传递者的角色,...

    java-MQ学习

    在学习Java MQ,特别是Apache ActiveMQ时,你需要掌握以下几个关键点: 1. **理解JMS规范**:了解JMS接口,如ConnectionFactory、Destination、MessageProducer、MessageConsumer等,并熟悉它们的角色和用法。 2. ...

    IBM MQ学习总结文档

    ### IBM MQ 学习总结 #### 一、IBM MQ 基础介绍 IBM MQ(以前称为 WebSphere MQ)是一种消息中间件,用于在分布式环境中可靠地传递消息。它允许应用程序和服务之间通过发送消息的方式进行通信,从而实现解耦合。...

    Websphere+MQ学习心得

    Websphere MQ,通常简称为WMQ,是IBM提供的一款企业级消息中间件产品,它在分布式系统中扮演着至...在文档"Websphere MQ学习心得.doc"中,我详细记录了我在探索和应用这些知识时的心得体会,希望对你的学习也有所帮助。

    两篇MQ中文学习文档

    **MQ配置和编程最佳实践** ...通过深入学习这两份文档,开发者和系统管理员能够全面理解MQ的工作原理,掌握配置、编程的最佳实践,以及解决可能出现的问题,从而更好地利用消息队列提升系统的稳定性和效率。

    MQ学习整理

    ### MQ学习整理知识点 #### 一、MQ基本概念与常用命令 **MQ(Message Queue)**,即消息队列,是一种应用程序间通过读写进出消息队列的数据来实现相互通信的方法。它允许消息在发送者和多个接收者之间进行传递,并...

    MQ学习笔记

    ### MQ学习笔记知识点详解 #### 一、MQ基础操作命令 **1. 创建队列管理器** - 命令格式:`crtmqm <队列管理器名>` - 示例:`c:\>crtmqmQM(dltmqmQM)`,此命令用于创建名为“QM”的队列管理器。 **2. 启动队列...

    MQ中间件学习

    ### MQ中间件学习知识点概述 #### 一、中间件的概念与作用 中间件是一种位于应用软件和系统软件之间的基础软件,其主要目的是通过自身的复杂性来简化企业应用的开发过程。在中间件出现之前,应用软件通常是直接...

    IBM MQ学习笔记试验脚本

    ### IBM MQ学习笔记知识点解析 #### 一、IBM MQ简介与基本操作 IBM MQ(Message Queuing)是一种消息中间件,用于实现不同应用程序之间安全可靠的消息传递。它提供了跨平台的解决方案,支持多种操作系统和开发语言...

    非常全面的WebsphereMQ的PDF学习资料

    个人收集整理,非常全面的WebsphereMQ的PDF学习资料。Websphere MQ Programming Guide,Websphere MQ Using C++,WebSphere MQ Using Java,WEBSPHERE MQ6.0 JAVA编程,WebSphere MQ基础教程,IBM WEBSPHERE MQ教程...

    IBM 的MQ 小工具以及相关学习资料

    这个压缩包包含了IBM MQ学习的多个重要方面,包括理论知识、实践工具和日常运维指南。 首先,"MQ配置.doc"文档很可能是关于IBM MQ的配置教程,它会涵盖如何在不同操作系统上安装和配置MQ服务器,以及如何设置队列...

    Websphere MQ资料集合(包含精通mq、mq java编程、mq编程模式、mq for linux等)

    "Websphere MQ资料集合"指的是IBM的Websphere MQ技术的相关学习资源,这是一款企业级的消息中间件,用于在不同系统之间可靠地传输数据。它支持多种编程语言,包括Java,能够运行在Linux等操作系统上。 【描述解析】...

    WEBSPERE MQ学习

    为了更深入地学习WebSphere MQ,你可以参考“MQ编程模式(中文)”这份资料,它将详细介绍各种编程模式的实现细节,包括代码示例和最佳实践。通过学习,你将能够熟练地在项目中应用这些模式,提升系统的稳定性和效率。...

    LS-MQ31-会议纪要.doc

    如本例中的“LS--MQ31”,通常包含公司或部门缩写(LS)、文档类型(MQ)以及特定序列号(31)。这种编号方式便于文档归档和检索。 - **版本控制**:虽然本文件没有提及版本号,但在实际操作中,对于重要的会议纪要...

    MQ,websphere mq

    学习MQ和WebSphere MQ的相关书籍可以帮助我们深入理解以下关键概念: 1. **消息队列模型**:理解消息如何在队列中存储和传递,以及不同类型的队列(如本地队列、远程队列、死信队列等)。 2. **WebSphere MQ架构**...

    学习文档MQ+Redis

    【MQ+Redis 学习文档】 在现代的Java开发中,消息队列(Message Queue,简称MQ)和Redis常被用作关键的技术组件,以实现异步处理、提高系统性能和构建可扩展的架构。本学习文档将深入探讨MQ与Redis的基础操作以及...

    mq4cpp的学习材料

    MQ4CPP是一个基于C++的开源消息队列库,它为开发者提供了在C++应用程序中实现高效、可靠的异步通信的能力。...无论是为了提升系统性能,还是为了构建高可用、分布式的服务,MQ4CPP都是值得学习和使用的强大库。

    MQ资料学习

    【MQ资料学习】 消息中间件(Message Queuing,简称MQ)是一种软件技术,它允许不同的应用程序之间通过异步通信方式交换数据,提高了系统的可扩展性和解耦性。在实际工作中,MQ扮演着至关重要的角色,使得分布式...

Global site tag (gtag.js) - Google Analytics