消息模型

单体的消息模型

RocketMQ消息模型跟其他的消息队列一样 都是 producer - > topic->consumer

producer 生产消息 也就是发送者

topic 消息主题 按topic发送消息 以后消息的存储 分片等都是基于topic做业务处理的

consumer 消息消费者 也是基于topic来进行消息的消费 支持推和拉模式(其实内部都是pull模式的变种)。

扩展集群消息模型

为了支持高并发、提高可扩展性、提高消息堆积能力。

一个topic可以有多个队列 而且还可以在不同的物理机器,这就为高吞吐、水平扩展支持打了基础。

在消费端consumer支持组(group)概念。一组consumer里面有多个消费者实例,一组consumer来消费某个topic 这样消费能力就得到了水平扩展

consumer组支持集群消费模式广播消费模式

  • 集群消费下同组consumer实例会去拉取对应topic的不同队列上数据进行消费。‘

  • 广播模式是每个消费者都会拉取对应topic中所有队列的消息来消费。

架构设计

RocketMQ总体最组件分为 NameServer Broker Porducer Consumer

NameServer 名称服务

NameServer类似于Zookeeper这种角色 负责管理集群组件,简单来说NameServer可以查询到Broker有哪些、Topic在哪些Broker机器上 队列是如何分布的,它就像一颗大脑 管理者 收集者。相当于是一个topic路由管理中心,NameServer可以多实例分别独立部署、相互之间不产出数据交换,每个Broker在启动的时候会向所有的NameServer上报信息,所以他们之间可以相互独立,完全无状态。就算挂掉1个也不影响集群。

Broker 消息存储代理服务

Broker才是真正托管消费存储、投递查询的服务,这个是非常核心的服务,大部分的性能优化都是针对这个服务进行。Broker分为master slave角色 在配置文件中brokerId=0表示Master 不为0表示slave。

broker启动后和NameServer建立了长连接 定期向NameServer上报Topic信息自身信息。

producer 生产者

生产/发送消息服务,一般是程序自己编写的业务发送消息端,启动后首先会和NameServer建立连接,定时从NameServer获取Topic路由信息,定时查询Broker服务信息 同时会和Broker master角色建立长连接。producer 也是无状态的。

consumer 消费者

消费者服务 一般是由自己业务程序编写实现。启动后和NameServer建立连接 定时从NameServer获取topic信息和Broker信息,获取到Broker的信息后会和broker中的master salve角色也建立长连接 所有consumer中可以订阅master和slave。

只有非常懂IO的人 才能写得出来这么优秀的框架 里面有太多值的学习和借鉴的设计和思想 后面再慢慢精研。

相关链接 https://www.cnblogs.com/peachyy/p/9406526.html

认识RocketMQ4.x架构设计的更多相关文章

  1. 浅谈 jQuery 核心架构设计

    jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...

  2. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  3. 解构C#游戏框架uFrame兼谈游戏架构设计

    1.概览 uFrame是提供给Unity3D开发者使用的一个框架插件,它本身模仿了MVVM这种架构模式(事实上并不包含Model部分,且多出了Controller部分).因为用于Unity3D,所以它 ...

  4. VICA 架构设计(1)

    本文记录最近完成的一个通用实时通信客户端的架构.   背景 我们公司是做税务相关的软件,有针对大客户 MIS 系统,也有针对中小客户的 SaaS 平台.这些系统虽然都是 B/S 的,但是也需要使用 A ...

  5. 一种简单的CQRS架构设计及其实现

    一.为什么要实践领域驱动? 近一年时间我一直在思考一个问题:"如何设计一个松耦合.高伸缩性.易于维护的架构?".之所以有这样的想法是因为我接触的不少项目都是以数据库脚本来实现业务逻 ...

  6. 基于token的多平台身份认证架构设计

    基于token的多平台身份认证架构设计 1   概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情. 随着移动互联网时代到来,客户端的类型越来越多, 逐渐出现了 一个服务器,N个客户端的格 ...

  7. 架构设计:一种远程调用服务的设计构思(zookeeper的一种应用实践)

    在深入学习zookeeper我想先给大家介绍一个和zookeeper相关的应用实例,我把这个实例命名为远程调用服务.通过对这种应用实例的描述,我们会对zookeeper应用场景会有深入的了解. 远程调 ...

  8. ABP架构设计交流群-上海线下交流会的内容分享(有高清录像视频的链接)

    点这里进入ABP系列文章总目录 ABP架构设计交流群-7月18日上海线下交流会内容分享 因为最近工作特别忙,很久没有更新博客了,真对不起关注我博客和ABP系列文章的朋友! 原计划在7月11日举行的AB ...

  9. 架构设计:负载均衡层设计方案(3)——Nginx进阶

    版权声明:欢迎转载,但是看在我辛勤劳动的份上,请注明来源:http://blog.csdn.net/yinwenjie(未经允许严禁用于商业用途!) 目录(?)[-] Nginx继续进阶 1gzip ...

随机推荐

  1. 集合-list常用方法总结

    每个方法使用见下方代码详解 点击查看代码 ArrayList list = new ArrayList(); list.add("AA"); list.add(123); list ...

  2. 一文解决Vue中实现 Excel下载到本地以及上传Excel

    相信大家在项目中经常会遇到一些上传下载文件的相关功能,本文就Excel的相关功能进行简述: 咱直接看代码: <div class="import-main-content"& ...

  3. 04.nvue开发

    nvue开发注意项 nvue专用内置组件跟api https://uniapp.dcloud.io/nvue-outline?id=_2开发nvue页面 网络示例 https://www.cnblog ...

  4. 什么是FastAPI异步框架?(全面了解)

    一:FastAPI框架 1.FastAPI是应该用于构建API的现代,快速(高性能)的 web 框架,使用Python 3.6+ 并基于标准的 Python 类型提示. 关键性: 快速: 可与Node ...

  5. IM系统-消息流化一些常见问题

    原创不易,求分享.求一键三连 之前说过IM系统的一些优化,但是在网络上传输数据对于数据的流化和反流化也是处理异常情况的重点环节,不处理好可能会出现一些消息发送成功,但是解析失败的情况,本文就带大家来一 ...

  6. CS内网横向移动 模拟渗透实操 超详细

    @Webkio 前言: 最近在跟朋友搞一些项目玩,所以最近没怎么更新内容接下来我将在虚拟中模拟内网多层靶场,进行内网渗透实验,超详细,适合小白.本文仅供网安学习,不可利用于未授权渗透工作中,否则后果自 ...

  7. sql语句实现每日资格设置

    CREATE TABLE 'iDayAuth'( 'openid' VARCHAR(16) NOT NULL , 'iStamp' INT(10) NOT NULL, 'iDayAuth' SMALL ...

  8. GitHub 主页美化设置教程

    GitHub profile设置教程 早些时候逛GitHub,就发现别人的主页特别的精美,当时没有空研究,前几天得空给安排了一下 先看一下成品 贴一个github上一个男人的主页 下面这个是我的 果然 ...

  9. Spherical类定义和实现

    此类是一个全景摄像机视角,书上介绍了详细原理.直接给实现代码. 类声明: #pragma once #ifndef __SPHERICAL_HEADER__ #define __SPHERICAL_H ...

  10. SingleSphere类定义

    针对于单个球体的碰撞,其实和多个球体一样的,只是我修改了书上的代码,定义了这么多类,终于到头了.马上就要展示奇迹的时候了. 类定义: #pragma once #ifndef __SINGLESPHE ...