深入拆解消息队列 47 讲
许文强
前腾讯云 Kafka 技术负责人
5385 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
深入拆解消息队列 47 讲
15
15
1.0x
00:00/00:00
登录|注册

14|集群:哪些环节会存在性能瓶颈和数据可靠性风险?

存储层
逻辑层
网络层
位点提交
消费模式
消费重平衡
消费模型
集群可靠性和性能
数据一致性
集群构建
副本
分区
物理硬件
操作系统
应用程序
生产者数量
异常处理
批量语义
发送模式
网络带宽
网络延时
网络稳定性
传输加密
连接协议
SDK层面
网络层面
集群维度
单机维度
SDK层面
网络层面
消费者
Broker
生产者
性能和可靠性

该思维导图由 AI 生成,仅供参考

你好,我是文强。
在基础篇的课程中,我们学习了最简单的消息队列的构建过程和底层原理。接下来我们将开始进阶篇的学习,进阶篇将从集群构建、性能、可靠性、数据安全、可观测性几个方面展开。总结来说,我们将把单机的消息队列架构扩展成为分布式的高可靠、高性能的完整集群。
这节课我们会先分析消息队列集群中哪些环节可能存在性能瓶颈和可靠性风险,以便让你对消息队列的集群有一个整体认识。
从技术上看,消息队列的性能和可靠性由生产者Broker 集群消费者三方共同保障,而不只是服务端的工作。通常衡量集群性能的一个重要指标是全链路耗时,即客户端发出一条消息到消费者消费到这条消息的时间差,先来看一张图。
这是在展示当生产者发送一条消息到 Broker 存储,消费者消费这条数据全流程所涉及到的组件。接下来我们就将围绕着这个链路展开分析,就从生产者开始吧。

生产者的性能和可靠性

我们先来画一张图,梳理下在生产者客户端中需要关注的几个点,主要分为客户端 SDK 和网络两大部分。

网络层面

在网络层面,对性能和可靠性的影响主要包括连接协议传输加密网路稳定性网络延时网络带宽五个方面。
我们在第 07 讲讲过,生产者客户端会先和 Broker 建立并保持 TCP 长连接,而不是在每次发送数据时都重新连接,以确保通信的性能。这也是默认情况下不用 HTTP 协议的原因。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

消息队列集群的性能和可靠性对于构建分布式高可靠、高性能集群至关重要。本文从生产者、Broker集群、消费者三方共同保障的角度分析了可能存在性能瓶颈和可靠性风险的环节。在生产者方面,网络层面的连接协议、传输加密、网络稳定性、延时和带宽等因素对性能和可靠性有影响;SDK层面的发送模式、批量语义、异常处理和生产者数量也是关键考量。而在Broker方面,单机和集群维度的性能和可靠性都是重要考虑因素。文章通过详细分析这些方面,为读者提供了全面的消息队列集群性能和可靠性的认识。在单机维度,对应用程序、操作系统、物理硬件进行性能和可靠性提升的拆解,以及集群维度的性能和可靠性核心思想的阐述。此外,消费者的性能和可靠性也得到了深入探讨,包括消费者SDK的性能和可靠性、消费性能方面的关注点以及消费模型、消费重平衡、消费模式、位点提交等方面的讨论。整体而言,本文全面而深入地探讨了消息队列集群性能和可靠性的关键点,为读者提供了宝贵的技术参考。文章还指出了Pulsar对ZooKeeper造成压力的原因,主要是Pulsar在ZooKeeper中存储的元数据的大小,以及Pulsar主打百万分区,导致ZooKeeper的负载会更高,压力的放大作用更明显。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解消息队列 47 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • 张申傲
    【思考题】 影响消息队列性能和可靠性的因素很多,如果选择其中最关键的,个人认为可能有以下几点: 1. 网络带宽与延迟:消息队列本质上还是一个I/O密集型系统,内部没有太多复杂的计算逻辑,因此网络无论对Producer、Broker还是Consumer来说都比较重要,网络一抖动,全链路的吞吐量可能就会受影响。 2. Producer的发送模式:选择Oneway/Sync/Async不同的发送模式,会直接影响Producer的性能和可靠性。 3. Broker的物理硬件:特别是磁盘和内存,会直接关系到Broker的存储和消费性能。 4. Consumer的Rebalance:在Rebalance期间,整个消费会暂停,因此如何最大程度降低Rebalance的影响,对Consumer端来说比较重要。

    作者回复: 哈哈,答得非常好~。我补充一点后面会讲的副本数和一致性协议,一致性协议是影响性能的很重要的因素。

    2023-07-21归属地:北京
    3
  • 从开始看到现在,还是感觉每篇都是概念性的东西在反复讲,希望有一些深入拆解的内容(比如列举一些容易出问题的点,大概是什么问题,影响是什么,如何解决)
    2023-09-06归属地:北京
    2
  • shan
    集群性能影响总结 1. 网络层面 网络稳定性:网络质量不稳定,传输过程可能存在丢包,需要通过TCP重传机制进行重传,如果出现大量重传会影响性能,一般需要监控网络包重传率。 传输加密:启用数据加密传输后,传输性能也会下降。 网络延时:跨地域通信,会增加网络延时,可以尽量将客户端与服务端部署在一个网络中,避免网络延时带来影响。 网络带宽:一般会关注客户端网卡、中间网络链路、Broker节点网卡的带宽容量,跨地域通信、跨云传输,中间网络带宽也容易成为瓶颈, 2. 生产者层面 生产者消息发送模式:一般支持同步发送、异步发送、发送即忘,在性能上发送即忘 > 异步发送 > 同步发送。 批量发送:批量发送的全链路耗时会高于非批量消息发送。 3. Broker层面 (1)应用程序本身 比如Java编写的RocketMQ,可以对JVM调优等。 (2)操作系统 主要是调整操作系统参数,比如最大FD数量、Scoket缓冲区大小等。 (3)物理硬件 包括CPU、内存、网卡、硬盘等物理资源,通过提升物理硬件来提高性能。 对于消息队列来说,涉及到消息的存储和读取,一般内存和硬盘影响比较大。 4. 消费者层面 消费者性能主要跟消费模型(一般选用Push模式)、消费者负载均衡(消费者需要再本地做负载均衡分配消息队列进行消费)、消费粒度(RocketMQ5.0以前只能以队列为维度进行消费,5.0以后推出了消息粒度的消费)、位点管理(消费消费完消息之后,需要对消费位点进行更新)方面有关。 不过对性能影响最大的是网络链路耗时,特别是在跨区、跨地域的情况下。
    2023-09-24归属地:河南
  • aoe
    原来在消息队列调优的场景下,只要网卡不被打满,就不用理会网卡
    2023-07-22归属地:新加坡
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部