初识RocketMQ基础概念(一)

20年入职ryx公司后,刚好接触到一个线上问题,遂开了一个研究课题,一场针对Apache RocketMQ的无烟战争正式打开。

一开始刚接触这玩意,只是通过百度搜索简单了解下,后来发现很多文章复制粘贴严重。

于是就想自己看看源代码,前人摘树,后人乘凉。现在22年了,很多都又忘记了,待我慢慢补充。

先简单介绍一些基本概念

mq的使用场景:主要针对请求的削峰,解耦和异步处理。

mq的本质:

  • 一种具备接受请求、保存数据、发送数据等功能的网络应用。
  • 利用高效可靠的消息传递机制进行平台无关的数据交流; 并基于数据通信来进行分布式系统的集成; 
  • 通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。 和一般网络应用程序区别于它主要负责数据的接收和传递,所以性能高于普通程序。 

mq的核心组成:

  • 协议:网络协议(OpenWire、AMQP、MQTT、kafka、OpenMeaasge等)
  • 持久化机制:存入磁盘而非内存,不能随服务重启而丢失。
  • 消息分发机制:消息服务器把消息分发给具体的某个消费者的策略。消息分发,重试。
  • 高可用设计:针对服务可用性的设计。集群。
  • 高可靠设计:指系统无障碍的持续允许。譬如:一个系统从不崩溃不报错,或者异常几率低

协议三要素:

  • 语法:即数据与控制信息的结构或格式 
  • 语义:即需要发出何种控制信息,完成何种动作以及作出什么反应 
  • 时序(同步):即事件实现顺序的详细说明 

常见的网络协议为:

  •  OpenWire:ActiveMQ专属
  • AMQP:ActiveMQ,RabbitMQ(事务、持久化支持)
  • MQTT:物联网应用广泛(轻量、结构简单、传输快、无事务持久化支持,低带宽,网络不稳定的场景)
  • kafka:基于TCP的二进制协议,结构简单,无事务支持,有持久化设计
  • OpenMeaasge:Apache RocketMQ实现,结构简单,解析快,事务支持,持久化设计 

   

  • Producer:消息生产者,负责产生消息 
  • Consumer :消息消费者,负责消费消息,一般由后台系统异步消费 
  • Push Consumer :封装消息拉取,消费进程和内部 
  • Pull Consumer :主动拉取消息 
  • Producer Group :一类Producer的集合名称,通常发送一类消息,发送逻辑一致 
  • Consumer Group :一类Consumer的集合名称,通常消费一类消息,消费逻辑一致 
  • Broker :消息中转角色,负责存储消息,转发消息,即Rocketmq Server 
  • Topic :消息主题,在服务端配置,消费者按照主题订阅消息 
  • Tag :消息分类,用于对消息进行过滤,在主题下对消息进行二次划分 同一业务的不同目的可以用同样的topic不同tag来区分 
  • Message :在生产者和消费者之间传输的消息体,一个message必须属于某个topic 
  • Namesrv :一个无状态的名称服务,可以集群部署,每个启动的broker都会去注册, 主要是处理注册和接收客户端的路由请求并返回路由信息 
  • OffSet :偏移量,消费者拉取消息时需要知道上次消费位点,即从哪开始消费 
  • Partition :分区,Topic的物理分组,一个Topic可以有多个分区,每个分区是一个有序队列。 分区里的每个消息都会分配一个有序ID,即偏移量 
  • Key :表示消息唯一,方便定位消息,查询问题

 

posted @ 2022-11-15 18:49  眸色  阅读(50)  评论(0编辑  收藏  举报