RocketMQ学习

来源:互联网 发布:单片机的作用 编辑:程序博客网 时间:2024/04/28 05:46
RocketMQ学习

消息中间件
  • 理解:
    • 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。
    • 传统消息系统数据有较大丢失风险,消息中间件最大的作用是解耦系统之间的依赖及异步化各系统间的调用。且作为系统间消息存储和转发环节,具有高可靠性。
  • 特点:
    • 异步处理:发/接双方不需同时在线,消息可以分发,可以堆叠。
    • 解耦合:防止引入过多的API给系统的稳定性带来风险;调用方使用不当会给被调用方系统造成压力,被调用方处理不当会降低调用方系统的响应能力。
分布式和集群
  • 概念:
    • 分布式:一个业务分拆多个子业务,部署在不同的服务器上。
    • 集群:同一个业务,部署在多个服务器上,将几台服务器集中在一起,实现同一业务
  • 区别
分布式的每一个节点,都完成不同的业务,一个节点垮了,这个节点的业务就不可访问了。而集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。
所以说,分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的

举例:如新浪网,访问的人多了,他可以做一个集群,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。

Rocket MQ架构及术语理解

  • Producer
    • 消息生产者,负责产生消息,一般由业务系统负责产生消息。
  • Consumer
    • 消息消费者,负责消费消息,一般是后台系统负责异步消费。
  • NameServer
    • 无状态节点,用来保存活跃的 broker 列表,和topic列表。
  • Broker
    • 消息中转角色,负责存储消息,转发消息。

nameserver主要负责对于源数据的管理,包括了对于Topic和路由信息的管理,broker在启动的时候会去向nameserver注册并且定时发送心跳,producer在启动的时候会到nameserver上去拉取Topic所属的broker具体地址,然后向具体的broker发送消息。

nameserver是无状态节点,所以可以扩展成集群。
  • topic
    • 消息的逻辑管理单位。
实际生产模式下(关闭了broker的自动创建、订阅topic的功能)
  • broker控制topic的增删,发送未知topic的producer会报错(autoCreateTopicEnable=false
  • broker控制topic的订阅,未指定的订阅组,consumer无法拉取消费该topic的信息(autoCreateSubscriptionGroup=false )


工作流程
  1. 首先需要搭建一个NameServer节点,就像一个信号塔,producer,consumer以及broker之间的联系都需要通过访问NameServer,获取到各自需要的路由信息后才能进行联系。
  2. NameServer节点搭建成功后,启动Broker。启动前可以修改Broker的默认配置文件,包括前文说到的topic相关的参数等,修改完成后,启动Broker,配置即生效。
  3. 启动完NameServer和Broker后,可以在控制台里进行topic的增加和订阅(具体控制台的操作后文再说)。然后producer就可以发送已有的topic类型的消息,另一边consumer(订阅组)被broker准许后,每当consumer订阅的topic下接收到消息(消息从producer发送到broker中),consumer便可以成功拉取到此消息(消息从broker到consumer)并进行消费。

原创粉丝点击