MQ简介:提供消息队列服务的中间件,也被称为消息中间件,是一套提供了消息生产,存储和消费全过程的软件系统。

MQ三大用途:

1. 限流削峰:将系统收到的超量请求暂存其中,以后慢慢处理

2. 异步解藕:上层系统对下游系统同步调用,会降低系统的吞吐量和并发度,可以使用MQ来完成同步到异步的转换

3. 数据收集:分布式系统会产生海量数据流,例如监控数据,用户行为等。针对这些数据流进行实时或批量汇总,然后对这些数据进行分析。

常见的消息中间件简介:

Kafka:基于java/scale,具有高吞吐量的特性。单机吞吐量十万级别,百万级别T是会影响系统性能,不遵循任何MQ协议。

RockerMQ:基于java,具有高性能和高稳定性的特征。单机吞吐量十万级别,千万级别吞吐量会影响系统的性能,不遵循任何MQ协议。

基本概念:

消息:消息系统所传输信息的物理载体,生产和消费数据的最小单位,每一条消息必须属于一个主题。

主题(Topic):一类消息的集合,每条消息只能属于一个topic,是RocketMQ进行消息订阅的基本单位。一个生产者可以多种topic,但是消费者只能订阅和消费一种topic。

队列:存储消息的物理实体,一个topic中可以包含多个queue,每个queue中存放的是就是消息。一个topic中的queue也被称为一个topic中的分区。

一个topic中queue的消息不允许被同一个消费者组中的多个消费者同时消费。

一个消费者组中的消费者可以同时消费多个分区。

消费标识:每个消息都有唯一的MessageId,且可以携带具有业务标识的key,以方便对消息的查询。需要注意的是,MessageId有两个:在生产者send()消息时,会自动升车给你一个MessageId,当消息到达Broker之后,也会生成一个MessageId(offsetMsgId)。两个Id和key都被称为消息标识。

RocketMQ有namespace吗_linq