走进消息队列 | 青训营笔记
消息队列简介
消息队列(MQ),指保存消息的一个容器,本质是个队列。消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。由于现代互联网的发展,我们对消息队列的要求非常高,需要支持高吞吐、高并发、高可用。
消息队列发展历程
在 20 世纪 80 年代,第一个现代消息队列软件 The Information Bus(TIB) 诞生,它是由一个印度小哥 Vivek 开发的。随后,IBM、微软等公司也推出了自己的消息队列软件。2004 年,AMQP(高级消息队列协议) 诞生,促进了消息队列的繁荣发展。随着分布式应用的迅猛发展,消息中间件也变得越来越流行。
常见的消息队列
目前常见的开源消息中间件有RabbitMQ、Kafka、RocketMQ等。
Kafka简介
Kafka是现在流行的消息队列的一种,它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台。Kafka相较于RabbitMQ、RocketMQ,Kafka在高吞吐场景下更加出色。
Kafka使用流程
Kafka基本概念
Kafka的架构如图所示,以下将介绍图片中的各种角色以它们的作用。
- Topic:Kakfa中的逻辑队列,可以理解成每一个不同的业务场景就是一个不同的topic,对于这个业务来说,所有的数据都存储在这个topic中
- Cluster:Kafka的物理集群,每个集群中可以新建多个不同的topic
- Producer:顾名思义,也就是消息的生产端,负责将业务消息发送到Topic当中
- Consumer:消息的消费端,负责消费已经发送到topic中的消息
- Partition:通常topic会有多个分片,不同分片直接消息是可以并发来处理的,这样提高单个Topic的吞吐
个人思考
我查阅了不少资料,发现消息队列可以做的事情太多了,比如:异步解耦下单业务、解耦微服务、流量消峰,甚至于在Steata框架出来之前,消息队列还可以用于处理分布式事务。
总之,消息队列对于现代的开发业务来说,几乎是必不可缺的了。所以之后一定要好好学习消息队列的知识,在实际场景中熟练应用消息队列。