设计一个消息队列的思考点

news2024/9/21 4:31:41

导图

所以主要考虑的点是:

P1.1. MQ 要有基础的消息管理能力(CRUD)

P1.2. MQ 要有产消日志

P2. MQ将消息存储成功才能响应成功

P3.1 MQ将消息存储 = 分片存储

P3.2 扩容的实现思路(如何在扩容的时候更方便高效)

P4.1 数据要有副本(分片副本)

P4.2 数据副本的传输问题(socket or 其它,同步 or 异步?)

P4.3 数据节点的主从切换,且要对消费者无感

P5.1 主从节点的选举协议

P5.2 分片数据的重加载

P5.3 分片数据与增量数据的混合问题

P5.4 内存数据的排序

R1. ack 机制

R2. 消息丢弃(其实就是 ack,更本质就是消息状态更新处理)

优化

有了主要思路后,就要考虑更多的优化细节。

  1. 正确的利用COW 机制避免入坑

  1. 网络传输的零拷贝能力的应用

  1. 正确利用磁盘的分布刷数据的能力

  1. 数据结构 (分片算法)

小结

以上是从不同的角色需求出发,结合任务标的本身的特性思考如何设计一个MQ,新年开篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/182552.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【27】C语言 | 指针进阶

目录 一、指针概念 二、字符指针 三、指针数组 四、数组指针 五、数组参数、指针参数 六、函数指针 七、函数指针数组 八、回调函数 一、指针概念 1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间。2.指针的大小是固定的4/8个字节(32位平…

Java ccflow 代码

草稿规则目录概述需求:设计思路实现思路分析1.URL管理参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive. happ…

盖子的c++小课堂——第十四讲:指针

前言 作者:大家好鸭,想必大家看到标题都有感到有一丝奇怪吧,其实,今天主要讲一些运算符 粉丝:啊……嗯嗯嗯 作者:那开始吧~~ 内存地址运算符& 粉丝:讲这个干嘛,我都会了~~ …

Jmeter场景组合测试——多个线程组的设计方案

我们绝大多数同学在使用jmeter进行性能测试时都会在一个线程组中完成测试工作,今天我来重点讲解一下jmeter多个线程组在测试中的应用,这也是关于jmeter性能测试面试过程中的进阶问题,希望能够帮到大家来解决工作中不同的测试需求。线程组中的…

Rust个人学习之有意思的所有权

在Rust中是没有内存垃圾回收机制(GC)的,那Rust是如何保障内存安全的呢?这就引出了“所有权”这个概念。 我们看下下面这段伪代码 let s "helloString"; t s; print(s); 在之前我们学习的语言中,比如C语言,对于上述伪…

人工智能原理复习 | 产生式系统

文章目录 一、概述二、八数码问题三、特殊的产生式系统四、一些补充CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 通过学习人工智能原理课程了解基本的人工智能问题的求解方法和原理。 一、概述 产生式系统(Production System):是构造知识型系统和建立认知模型时常用的知…

用canvas绘制微信小程序海报页面并保存相册-适用微信原生

微信小程序绘制海报并保存相册 tip:代码中使用的是uni的api 如果使用原生微信小程序开发,可以把uni更换成wx使用 文章目录微信小程序绘制海报并保存相册前言一、分析需求二、准备数据三、编码开始html部分解析:js部分1、准备好数据后开始绘制…

王道操作系统笔记(三)———— 处理机调度

文章目录一、调度的概念1.1 调度的基本概念1.2 调度的层次1.3 补充:七状态模型二、调度的时机、切换与过程2.1 进程调度的时机2.2 狭义进程调度、进程切换、广义进程调度2.3 进程切换的过程2.4 补充:闲逛进程三、进程的调度方式四、调度算法的评价指标五…

【通信原理(含matlab程序)】实验四 升余弦滚降基带传输

💥💥💞💞欢迎来到本博客❤️❤️💥💥 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~ &#x…

【Novel AI】使用绘画AI构建unity游戏资源

请勿在商业用途中使用下面的示例图中的任何资源! 1. 设想: 首先根据自己的设想,创造一些角色原型,角色特点等等 这里我根据网络上找的一些参考,我大概想要的是比较特别的一个警察的猫人形的动物角色; 2…

网络编程(TCP+UDP)(1)

咱们的一个TCP服务器,是否可以让一个UDP客户端连接上呢? 1)TCP和UDP,他们无论是API代码,还是协议底层的工作过程,都是差异巨大的,不是单纯的把流转化成数据包就可以的; 2)描述一次通信&#xff…

武器系统中的自主性(国防部指令3000.09)

批准:负责政策的国防部副部长办公室2023年1月25日可以公开发布。可在指令司网站https://www.esd.whs.mil/DD/查阅。国防部指令3000.09,“武器系统中的自主性”,2012年11月21日国防部副部长凯瑟琳希克斯(Kathleen H. Hicks)目的:本指令:•建立开发和使用武…

教育数字化转型 看低代码怎么构建实现

数字经济和数字社会的发展,推动教育培养目标和内容的发展与变革。经过教育信息化1.0和2.0的建设,我国数字技术与教育经历了起步、应用、融合、创新四个阶段,目前正处于融合与创新并存的时期。教育数字化教育数字化转型是教育信息化的特殊阶段…

C 程序设计教程(20)—— 数组和指针(三):数组与指针的关系

C 程序设计教程(20)—— 数组和指针(三):数组与指针的关系 该专栏主要介绍 C 语言的基本语法,作为《程序设计语言》课程的课件与参考资料,用于《程序设计语言》课程的教学,供入门级用…

RESTful应用

AJAX技术 浏览器是多进程的,简单的说就是,浏览器每打开一个标签页,就相当于创建了一个独立的浏览器进程。但是js是基于单线程的,而这个线程就是浏览器的js引擎,浏览器无论在什么时候都只且只有一个线程在运行JavaScri…

sonic-ios-bridge(sib)性能监控之系统性能及应用性能

sib下载地址:Releases SonicCloudOrg/sonic-ios-bridge GitHub 可以看到最新版本为V1.3.7。下载到本地并解压后即可使用。 性能监控使用帮助:sib perfmon -h sib perfmon -f -j:以json格式化显示性能数据。 一、查看系统整体性能数据 查看…

10. POP3收取邮件

1. POP3协议 POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。 POP 协议…

Kernel: sysctl: hung_task_panic、hung_task_check_count、hung_task_timeout_secs

文章目录 mutex 锁相关的一个例子这个和磁盘相关的一个例子hung_task_panic:hung_task_check_count:hung_task_timeout_secs:实例hung_task_warnings:相关的编译配置mutex 锁相关的一个例子 systemd-shutdown 卡在device-shutdown时调用的mutex-lock操作。 这个和磁盘相关的…

Android ANR触发机制及日志分析

1.ANR Application Not Responding,即应用程序未响应。Android系统要求一些事件在一定时间范围内完成,如果超过预定时间未得到有效响应或响应时间过长,就会造成ANR。 Android中有4种ANR发生场景: ①点击事件(按键和触摸事件&am…

PDF在线合并网页版有哪些?这几款你一定没用过

PDF在线合并网页版有哪些?很多人在工作中都需要给其他人发送一些重要文件,如果文件数量比较多的时候,就会出现耗时有耗力的情况,所以我们就需要想一个办法来解决问题,那就是将多个PDF文件进行合并,我们需要…