前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >rocketmq初识

rocketmq初识

作者头像
方丈的寺院
发布于 2020-06-03 06:52:24
发布于 2020-06-03 06:52:24
5910
举报
文章被收录于专栏:方丈的寺院方丈的寺院

概念说明

通常一个消息队列需要掌握的知识点有Topic(主体)、Producer(生产者)、Consumer(消费者)、Queue(队列)、Delivery Semantics(消息传递范式)

蛋疼的是不同的消息队列关于这些名词叫法不一样,含义也不是很精确。所以阿里起了一个项目OpenMessaging去发起首个分布式消息领域的国际标准。不过好像并没有多少人买账,但这并不妨碍我们按照这个规范去梳理学习消息队列的知识。

有兴趣的可以对照着看:https://github.com/openmessaging/specification/blob/master/specification-schema.md

rocketmq官方文档已经说的比较清楚了,不再赘述

核心流程

消息写入与存储

消息是存储到broker中的,写到commit log中,先写内存,在刷盘。存储到磁盘中是直接以文件系统的方式。为了提高磁盘写入效率,都是顺序写,这样所有的topic都放在了一起,这一点与kafka不同,kafka以topic作为基本单元。

单个commitlog 文件大小为1G,之后滚动写入不同文件。

消息读取

消费者先从ConsumeQueue(消息逻辑队列)读取持久化消息的offset(偏移量)、size(大小)和消息Tag的HashCode值,再从CommitLog中读取消息的真正实体内容部分;

此外为了快速定位消息,还有一种文件叫index,在给定消息 Topic 和 Key 的前提下,可以快速定位消息

注意点

使用消息队列时,需要注意的地方

消息保存时间

rocketmq默认保存72小时,超过了,无论有没有消费都会丢弃,通过参数 fileReserverdTime来配置。注意这个配置是全局配置,没法针对不同的topic设置不同的值,原因在上面已经提到过了,因为rocketmq存储消息是所有的topic放在一起的。

消息有序

MessageListenerOrderly

消息丢失

理论上可以保证不丢失(接受消息重复,以及一定程度的写入性能下降),

生产端

同步模式,或者异步模式时需要处理发送失败情况

所以保证消费的幂等性是必须的broker端为了保证不丢,需要开启同步刷盘(防止内存数据丢失),同步复制(防止单点故障)。这样是有性能损失的。刷盘机制参数 flushDiskType 默认是 ASYNC_FLUSH,broker 会消息一定量后再刷盘,显然性能更好。

消费端

消费完再CONSUME_SUCCESS 生产端,消费端都有可能因为网络问题导致消息成功了,但是ack没有成功,所以会重复投递/消费。所以 DeliverySemantics一般选择 Atleast once。应用程序必须要保证 消费的幂等性

写入效率/消费效率/消费积压

发送端

异步刷盘,异步复制情况下,两台4核8G,大小100Byte,写入速度能够达到几万。

通常broker端不存在瓶颈。但是由于一般业务是是共用一个集群的,各个业务线都使用起来,流量还是很高的,需要监控报警,及时进行水平扩容。如果能够接受延迟,producer可以批量提交,发送效率更高。

消费端

取决于消费逻辑是否耗时,默认单机处理线程 consumeThreadMax (默认20)如果消费端服务是独立的,可以调整调整更大,提高单机处理速度。

无法提高单机处理速度的时候,可以集群水平扩展。不过不是无限水平扩展的,超过 defaultTopicQueueNums 订阅队列数无效,该值默认值为4

应用场景

为什么需要消息队列,这个问题都被讲烂了,经典三大场景还是削峰填谷、异步处理、服务解耦。个人觉得这边总结的比较全面。https://github.com/openmessaging/specification/blob/master/usecase.md

重点介绍下 rpc场景,注意这个rpc不是rpc调用。是同步消息,相当于两次rpc。client发到server。server处理完再发到client。

这个通常用于服务间的同步处理。比如有个核心服务A,某个请求里面需要有个高耗时的操作,为了不影响A服务,用了一个B服务来处理这个操作。这时候就会用到 rpc

参考

https://tech.meituan.com/2016/07/01/mq-design.html

http://tinylcy.me/2019/the-design-of-rocketmq-message-storage-system/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 方丈的寺院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
CVPR 2021 | 不需要标注了?看自监督学习框架如何助力自动驾驶
理解各种交通参与者的运动对于自动驾驶汽车在动态环境中安全运行至关重要。运动信息对于各种车载模块非常关键,涉及检测、跟踪、预测、规划等多个任务。自动驾驶汽车通常配有多个传感器,其中最常用的是激光雷达(LiDAR)。因此,如何从点云中表征和提取运动信息是自动驾驶研究中一个基础的问题。
机器之心
2021/06/08
7890
学界 | 对抗式协作:一个框架解决多个无监督学习视觉问题
深度学习方法已经在使用大量数据进行监督的计算机视觉问题上取得了优秀成果 [10,17,19]。然而,对许多需要密集连续值输出的视觉问题而言,全面收集真实数据繁琐或不切实际 [6]。本文主要针对以下四个问题:单目深度预测、摄像机运动估计、光流和运动分割。之前的研究已经试着用真实数据 [5] 和合成数据 [4] 通过监督学习解决这些问题。然而在真实数据和合成数据间还是存在现实差距,真实数据不仅有限,而且不准确。例如,一般用 LIDAR 获取的深度真实数据 [6] 是稀疏的。此外,也没有可以提供真实光流数据的传感器,所以所有现有的存有真实图像的数据集都有其局限性或类似 [2,6,12]。运动分割真实数据需要手动标记一张图中所有的像素 [23]。
机器之心
2018/07/26
4280
学界 | 对抗式协作:一个框架解决多个无监督学习视觉问题
轻舟智航“轻、快、高效”的高级感知技术加速无人车上路!
“无人车长大了!”,“无人车能自己赚钱了!”,“无人车成精了吗”......这是不少网友观看上述视频之后的感受。
AIWalker
2021/12/31
1.2K0
轻舟智航“轻、快、高效”的高级感知技术加速无人车上路!
SSL-Lanes:用于自动驾驶中运动预测的自监督学习
在现实世界的城市环境中进行运动预测是自主机器人的一项重要任务,包括预测车辆和行人在内的交通主体的未来轨迹,这对于自动驾驶领域的安全、舒适和高效操作来说绝对至关重要。运动预测任务传统上是基于运动学约束和具有手工规则的道路地图信息,然而这些方法无法捕捉复杂场景中的长期行为以及与地图结构和其他交通代理的交互。在论文"SSL-Lanes: Self-Supervised Learning for Motion Forecasting in Autonomous Driving"中,作者提出了一个基于自监督学习的运动预测模型,算法已经开源。
BBuf
2022/09/28
7270
SSL-Lanes:用于自动驾驶中运动预测的自监督学习
Hinton组力作:ImageNet无监督学习最佳性能一次提升7%,媲美监督学习
如今,在 ImageNet 上的图像识别准确率的性能提升每次通常只有零点几个百分点,而来自图灵奖获得者 Geoffrey Hinton 等谷歌研究者的最新研究一次就把无监督学习的指标提升了 7-10%,甚至可以媲美有监督学习的效果。
机器之心
2020/02/24
7590
Hinton组力作:ImageNet无监督学习最佳性能一次提升7%,媲美监督学习
清华 CVer 对自监督学习的一些思考
自监督学习作为无监督学习的一个特例,可以理解它是一种没有人工标注标签的监督学习,即没有人类参与的监督学习。
小白学视觉
2021/01/08
5280
清华 CVer 对自监督学习的一些思考
盲视频超分辨率:南理工提出不用HR参与也能训练的自监督学习方法
代码:https://github.com/csbhr/Self-Blind-VSR
CV君
2022/03/23
6040
盲视频超分辨率:南理工提出不用HR参与也能训练的自监督学习方法
7 Papers & Radios | Transformer助力CAD草图生成;光学神经网络做数字识别
论文 1:Self-Supervised Pillar Motion Learning for Autonomous Driving
机器之心
2021/06/08
4690
CVPR 2018 | 商汤科技提出GeoNet:用无监督学习感知3D场景几何
选自arXiv 作者:Zhichao Yin等 机器之心编译 参与:Panda 有效的无监督学习方法能缓解对有标注数据的需求,无监督学习技术与视觉感知领域的结合也有助于推动自动驾驶等高价值技术的发展。近日,商汤科技的一篇 CVPR 2018 论文提出了一种可以联合学习深度、光流和相机姿态的无监督学习框架 GeoNet,其表现超越了之前的无监督学习方法并可比肩最佳的监督学习方法。本论文的作者为 Zhichao Yin 和 Jianping Shi。机器之心对该论文进行了简要介绍,更多详情请参阅原论文。 理解视
机器之心
2018/05/08
7290
CVPR 2018 | 商汤科技提出GeoNet:用无监督学习感知3D场景几何
拥挤场景中的稳健帧间旋转估计
文章:Robust Frame-to-Frame Camera Rotation Estimation in Crowded Scenes
点云PCL博主
2024/01/23
2200
拥挤场景中的稳健帧间旋转估计
Facebook AI实验室最新论文:图像检测的无监督学习(下载)
新智元导读】Facebook最近在美国的日子不算好过。据英国《卫报》报道,Facebook平台上广受欢迎的新闻推送功能实际上严重依赖于编辑团队来决定新闻内容的取舍和筛选。这一事实引发了美国舆论对Facebook存在政治偏见的抗议。国外有学者撰文强调,Facebook的偏见不可避免,因为算法本身就不是中立的,程序员自身也不是绝对中立的。这再次强调了在人工智能的发展中非监督式学习的必要性。在Facebook AI实验室的这份最新论文中,作者在图像检测中试行了一种简单但有效的无监督训练边缘检测的方法,已接近用完全
新智元
2018/03/22
1.1K0
Facebook AI实验室最新论文:图像检测的无监督学习(下载)
统一自监督学习框架 (华为)
自我监督学习(SSL)方法旨在利用大量未标记数据进行机器学习(ML),但其基本原理通常是特定于方法的。从具身学习的生物学第一性原理衍生的SSL框架可以统一各种SSL方法,帮助阐明大脑中的学习,并可能改进ML。SSL通常将每个训练数据点转换为一对视图,将这一对的知识用作正(即非对比)自监督标志,并可能将其与不相关(即对比)的负样本对立。在这里,我们表明这种类型的自我监督是神经科学概念的不完整实现,即EfferenceCopy(EC)。具体来说,大脑还通过输出 (即运动命令)来改变环境,但是它会向自己发送完整命令的EC,即不仅仅是一个SSL信号。此外,它的动作表示可能是自我中心的。
CreateAMind
2023/09/01
2600
统一自监督学习框架 (华为)
「神经网络就像任性的小孩」港中文MMLab博士揭开OpenSelfSup自监督学习的秘密
香港中文大学近年来在机器学习方面的成就,甚至盖过了大部分的理工科院校,这一点厉害了。尤其是在自监督学习方面,不知不觉的就走在了学术研究的前排。
新智元
2020/06/29
6640
「神经网络就像任性的小孩」港中文MMLab博士揭开OpenSelfSup自监督学习的秘密
无需人工标注的 3D 目标检测:基于视觉语言引导的无监督学习方法 !
为了安全和有效率的路径规划,自主车辆依赖于3D目标检测,即它们必须准确识别周围交通环境中的目标(例如车辆、骑自行车的人、步行的人)的地点、尺寸和类型。最近的一些3D目标检测器在LiDAR点云上运行,需要通过大量手动标注的数据进行监督训练,这在获得足够质量水平的数据方面既耗时又昂贵。此外,尽管其性能令人印象深刻,但全监督的3D检测器缺乏应对不断变化的目标数据的灵活性,例如由不同的传感器设置。
AIGC 先锋科技
2024/08/27
2410
无需人工标注的 3D 目标检测:基于视觉语言引导的无监督学习方法 !
最新综述 | 基于深度学习的SLAM方法:面向空间机器智能时代
A Survey on Deep Learning for Localization and Mapping Towards the Age of Spatial Machine Intelligence
用户1150922
2020/09/11
2.4K0
最新综述 | 基于深度学习的SLAM方法:面向空间机器智能时代
一文了解动态场景中的SLAM的研究现状
常规的SLAM算法首先假设环境中所有物体均处于静止的状态。而一些能够在动态环境中运行的SLAM系统,只是将环境中的动态物体视为异常值并将他们从环境中剔除,再使用常规的SLAM算法进行处理。这严重影响SLAM在自动驾驶中的应用。
小白学视觉
2020/07/15
4.3K1
一文了解动态场景中的SLAM的研究现状
IROS 2021 | 基于无监督学习环境模型的机器人运动控制
导读:本文是机器人领域顶级会议 IROS 2021入选论文《基于无监督学习环境模型的机器人运动控制(DMotion: Robotic Visuomotor Control with Unsupervised Forward Model Learned from Videos)》的解读。该论文由北京大学前沿计算研究中心董豪课题组主导完成。
AI科技评论
2021/09/16
4700
前景目标检测的无监督学习
无监督学习是当今计算机视觉领域最困难的挑战之一。这项任务在人工智能和新兴技术中有着巨大的实用价值,因为可以用相对较低的成本收集大量未标注的视频。
计算机视觉研究院
2018/10/23
2K0
前景目标检测的无监督学习
CVPR 2019 | 条件运动传播:从运动中学习物体性质
本文介绍了一种从运动中无监督地学习物体性质的方法:Self-Supervised Learning via Conditional Motion Propagation [1].
CV君
2019/12/27
5080
基于整合IMU运动动力学的无监督单目深度估计
虽然近年来无监督单目深度学习取得了很大的进展,但仍然存在一些基本问题。首先,目前的方法存在尺度模糊性问题,因为反推过程对于深度和平移来说相当于任意尺度因子。其次,光度误差对照明变化和移动物体敏感。此外,尽管在无监督学习框架下已经为光度误差图引入了不确定性,但自我运动的不确定性度量仍然是重要的。在2022 ECCV论文"Towards Scale-Aware, Robust, and Generalizable Unsupervised Monocular Depth Estimation by Integrating IMU Motion Dynamics",作者提出了一种感知框架,通过集成视觉和IMU来进行真实尺度估计,算法已经开源。
BBuf
2022/09/28
9810
基于整合IMU运动动力学的无监督单目深度估计
推荐阅读
相关推荐
CVPR 2021 | 不需要标注了?看自监督学习框架如何助力自动驾驶
更多 >
目录
  • 概念说明
  • 核心流程
    • 消息写入与存储
    • 消息读取
    • 注意点
      • 消息保存时间
      • 消息有序
      • 消息丢失
    • 写入效率/消费效率/消费积压
  • 应用场景
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档