1:前言
在我们现在的开发过程中,会大量使用到消息队列中间件,比如说rocketmq,那么很多萌新刚开始用的时候其实会非常疑惑,什么broker,topic,tag都是什么啊怎么用啊?小威哥这是就写一个简单的帖子去解释这些内容。
2:消息队列中间件的作用
在很久以前,当我们的服务还是单机单节点的时候,我们可能会使用java内置quene去解决一些开发中的问题,但是在我们进入到分布式集群服务中的时候,我们不可避免的会使用到分布式的消息队列中间件,可以概括它的一些主要用途为:
- 1:业务解耦,比如你的微服务系统触发了一个事件,需要发送一个消息给其他团队的微服务去触发他们的事件。
- 2:流量削峰,比如有些大并发量的业务场景,比如页面埋点统计uv啊这种,直接交给消息队列去异步处理就非常高效,也不会对主业务产生影响。
- 3:事务最终一致性,rocketmq可以采用同步刷盘以及服务端以及客户端的失败重试机制,尽可能的保持我们比较严谨的业务实现分布式的最终一致性。
3:rocketmq名词解析
- broker : 一个jvm下的的服务实例,注册在nameserver(类似zk的功能,通讯各个服务节点和客户端)
- topic :一个消费主题 ,分布在不同broker,并且在每个broker还有分片quene
- quene : 最小的传递消息物理单位,每次生产消息只会分发到1个quene
- group : 消费群组,1个群组内的不同消费者得到不同的一些quene,所以每次生产消息只会扔到一个quene,也就只有一个消费者可以消费到. 但是!!!如果有2个group订阅一个topic,那么2个group都能消费到一次消息.
- tag:topic下的更小的逻辑分组,一一般个topic只要弄一个tag就行了.tag只会在客户端去进行区分。
4:总结
这期内容非常简单,因为是萌新向的,希望能够帮助到大家解决一些疑虑。