美文网首页
消息队列

消息队列

作者: C_A_dogN | 来源:发表于2017-08-20 21:42 被阅读17次

首先抄一段解释说明。。。
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构

消息队列的基本概念

  1. 生产者,发送消息到消息队列即生产消息的上游
  2. 消费者,接收消息的下游
  3. 消息队列,生产者产生消息发送给消息队列,消费者从消息队列取出关注的消息进行消费
  4. topic,即主题,可以供消费者订阅,这样消费者就只取自己关注的消息或者消息队列只将消费者关注的主题相关的消息发送给该消费者
  5. broker,MQ集群包含多台服务器,其中一台就称为broker

消息传输模型

req/rep(请求答复模式):主要用于远程调用及任务分配等。
pub/sub(订阅模式):主要用于数据分发。
push/pull(管道模式):主要用于多任务并行。

  1. 要保证数据处理的顺序性
  2. 传输过程中需要注意的是如何进行负载均衡的分配
  3. 为防止消息队列的数据堆积需要设置消息的高水位
  4. 考虑到由于消息堆积或者节点失效可能导致数据丢失,所以需要进行消息的持久化
  5. 如果需要消息支持事务的话,要支持处理失败的消息回滚

下面以kafka为例加深对消息队列的理解

Kafka设计解析(一)- Kafka背景及架构介绍
读完上面的文章提出几个问题:

  1. 消息队列即FIFO,一个队列好保证顺序,假如多个队列接收一个producer的消息是怎么保证消息的顺序性的呢?

在发送一条消息时,可以指定这条消息的key,Producer根据这个key和Partition机制来判断应该将这条消息发送到哪个Parition。Paritition机制可以通过指定Producer的paritition. class这一参数来指定,该class必须实现kafka.producer.Partitioner接口。本例中如果key可以被解析为整数则将对应的整数与Partition总数取余,该消息会被发送到该数对应的Partition。(每个Parition都会有个序号,序号从0开始)

  1. 这里讲了producer到broker进行负载均衡的方式,都有哪些Paritition机制
  2. consumer以group为单位去pull消息,在group范围内进行负载均衡,这里的负载均衡是怎么做的呢,也是哈希取余吗

相关文章

  • 消息队列:消息队列简介

    1. 什么是消息队列 消息队列(message queue),是一种应用程序的通信方法; 消息队列是 生产者-消费...

  • 消息中间件

    消息中间件,也可以叫做中央消息队列或者是消息队列(区别于本地消息队列,本地消息队列指的是 JVM 内实现的队列实现...

  • 消息队列对比

    引用: 常用消息队列对比消息队列及常见消息队列介绍 常用消息队列 1. RabbitMQ 用erlang语言开发的...

  • 消息队列应用-使用异步队列就解耦了吗

    消息队列作用一文介绍了为什么要使用消息队列。我们再来讨论下如何有效使用消息队列。 消息队列模式 目前主流消息队列主...

  • Kafka常见问题解决

    概要:我们使用消息队列,就需要知道为什么要用消息队列,什么场景需要用消息队列,使用消息队列能带来哪些好处和消息队列...

  • 进程间通信(下)

    消息队列 在UNP第二卷中详细介绍了两种消息队列:Posix消息队列和System V消息队列。这两种消息队列很相...

  • APUE读书笔记-15进程内部通信(6)

    7、消息队列 消息队列是存放在内核中的消息的链表,通过消息队列标识进行标记。我们把消息队列称为队列,把它的标识称为...

  • java消息机制

    1.什么是消息队列? 1.消息队列是一个队列,先进先出,你无法读取消息队列中间的消息,只能按照顺序,从消息队列的头...

  • springboot项目架构(4)activemq、rabbit

    消息队列实现 支持的消息队列 ActiveMq RabbitMq RocketMq Kafka 各个队列实现队列与...

  • 进程间通信(7)-IPC通信之消息队列

    一、消息队列 消息队列是一种链式队列。 Msqid_ds:维护消息队列的结构体,队列的第一个消息指针msg_fir...

网友评论

      本文标题:消息队列

      本文链接:https://www.haomeiwen.com/subject/fsfqdxtx.html