c语言编程笔录

首页 >   > 笔记大全

笔记大全

RocketMQ架构是如何样的

更新时间:2023-09-15

RocketMQ概述

RocketMQ是一款由阿里出品的高吞吐量、可靠性极高的分布式消息中间件,它采用了基于主题的发布订阅模式,以及基于分布式的负载均衡机制,可以帮助我们解决很多分布式系统中的消息传递问题。RocketMQ的架构包括生产者、消费者和消息服务等主要组件,下面我们将详细介绍RocketMQ的架构。

架构图示

下图展示了RocketMQ的整体架构:

RocketMQ整体架构示意图

消息发送

消息发送分为消息的生成(生产)和发送两个步骤。消息生成指的是在应用层产生消息,发送则是将消息发送到RocketMQ Broker上存储。

//创建消息生产者
DefaultMQProducer producer=new DefaultMQProducer("producer_group");
producer.setNamesrvAddr("localhost:9876");
//启动生产者
producer.start();
//创建消息内容
Message message=new Message("TopicTest", "TagA", "Hello RocketMQ".getBytes());
//发送消息
SendResult sendResult=producer.send(message);
//关闭生产者
producer.shutdown();

消息存储

消息存储是RocketMQ Broker最重要的功能之一。在RocketMQ中,采用了“主题”的概念来组织消息。每个消息主题都对应一个Message Queue队列,其中包含多个消息存储片段。当消息发送到Broker进行存储时,RocketMQ首先将该消息内存缓存,然后写入磁盘,最后返回给生产者发送结果。

//创建消息消费者
DefaultMQPullConsumer consumer=new DefaultMQPullConsumer("consumer_group");
consumer.setNamesrvAddr("localhost:9876");
//启动消费者
consumer.start();
//向Broker发起拉取消息请求
PullResult pullResult=consumer.pull(new PullRequest("TopicTest", "*", 0, 0));
//关闭消费者
consumer.shutdown();

Broker负载均衡

RocketMQ Broker的负载均衡是非常重要的,它可以保证Broker的高可用性以及对消息的快速响应。RocketMQ采用了Master-Slave的模式进行高可用性保障,同时还采取了负载均衡机制,尽量避免某个Broker过度负载。Broker的负载均衡一般采用NameServer来进行管理。

//创建Namesrv服务对象
DefaultLitePullConsumer consumer=new DefaultLitePullConsumer("consumer_group");
consumer.setNamesrvAddr("localhost:9876");
//启动Namesrv
consumer.start();
//获取所有Broker列表
List brokerList=consumer.fetchBrokerNames();
//关闭Namesrv
consumer.shutdown();

总结

RocketMQ是一款高可用、高可靠、高性能、分布式的消息中间件,它的架构主要由生产者、消费者、消息存储、Broker负载均衡以及NameServer等组件构成,这些组件协同工作,能够帮助我们构建起一个强大的分布式消息传递系统。希望这篇文章能够帮助大家更好地理解RocketMQ的架构和使用方法。