一个将老系统kafka消费者服务性能提升近百倍的方法

Kafka百万消息积压怎么办?5大核心策略+30分钟应急方案,效率提升百倍! 摘要: 本文针对Kafka百万级消息积压问题,从生产消费速率失衡的本质出发,提出五大核心解决方案:消费者扩容、消费逻辑优化、分区扩容、死信队列兜底及智能监控预警。通过真实案例(如电商大促30分钟消化350万积压)和工具示例(如动态扩容命令),详解应急处理流程(定位→扩容→分流),并纠正常见误区(盲目扩容等)。最终展望AI驱动的自愈系统与云原生架构趋势,为高并发场景提供从预防到根治的完整闭环方案。 阅读详情

前言

kafka作为一种高吞吐量的分布式发布订阅消息系统,在业务系统中被广泛的使用。

如果问你,如何提高kafka队列中的消息消费速度呢? 答案很简单,topic多分几个分片,然后使用消费者组(Consumer Group)去消费topic即可。

如果加个条件,对同一个对象的操作请求必须要严格按照顺序进行处理呢? 答案也不难,topic分片之后,生产者定制分发策略,保证同一对象的操作请求都分发到同一个分片中,这样每个消费者就都是在按照顺序消费各自分片中的数据啦~

如果再加上一些条件:

  • 这个消费者消费速度极慢、慢到需要100ms才能处理完一条消息,即使topic分100片也不满足不了要求;

  • 每个对象的操作请求数量存在严重倾斜的现象,有的分片消息数量很大,有的分片消息量很少,可能有的分片一直积压、有的分片却很闲;

  • 请求操作很重要,需要确保每条请求都被可靠消费,要保证事务最终一致性;

  • 数十年的老系统,业务错综复杂,项目方不允许涉及业务逻辑以及整体架构的大改...

当上述各种条件叠加到一起,要求将消费性能明显提升,如果是你,会如何破局呢?

​前段时间,应业务部门的要求,给他们的一个线上历史系统做个并发性能提升的方案,就遇到了上述各种要求叠加在一起的棘手情况。

先简单说下遇到的业务场景:

一个互动类的论坛的帖子评论处理场景,要求每个帖子的评论请求操作都必须要严格遵循一定的顺序(比如可能会有评论删除、引用评论、回复评论等操作,所以请求顺序必须要严格按照顺序处理),帖子评论的操作请求发送到kafka里面,然后评论服务消费kafka处理各个请求,这个评论消费者服务消费太慢,需要提升下并发效率。

增加分片与消费者数量

正式开始着手去整改优化。

首先是常规调整:根据kafka自身的机制,将topic进行分片调整,拆分为N个分片,然后增设消费者组,在消费者组内部署与分片数相等的消费者服务节点,这样每个消费者可以处理一个分片,这样整个评论的消费性能就会提升N倍。

​那么,这里为什么要强调消费者组里的服务节点数要等于topic分片数呢?这里提一下kafka中Consumer Group中消费者数量与topic分片数之间的相关逻辑。

看一下不同的消费者数量与topic分片数对应的处理消费场景:

​

​所以说,消费者组里面的消费者数量并不是越多越好,而是受到了topic的分片数量的限制的:

  • 消费者数量太少,会导致一个消费者需要消费多个分片的数据,造成某一个消费者消费压力提升;

  • 消费者数量太多,会导致有的消费者并不会消费任何数据,浪费部署资源。

也是基于这一点,上述我们的方案中,规划消费者组里的消费者数量与topic的分片数一致,这样可以保证每个消费者消费1个分片,达到最大效率协调。

再补充个知识点:为什么kafka要限制每个分片最多只能有1个消费者组里的消费者在处理呢?

因为消费者拉取消息需要提供offset, limit。如果offset放在broker端,那么一定会产生额外的通信开销;如果offset放在Consumer端,如果在一个组有多个消费者,就需要有一个协调者,集中式的管理,解决锁冲突,如果不解决冲突,那么势必会产生重复消费、无用的消费,从而导致资源浪费。 所以说,从性能与复杂度的取舍上,Kafka采用了相对简单的一种解决策略。

 

保证分片内写入顺序

通过上一章的方式,增加了topic分区数以及消费者组中消费者数量,对kafka中消息并行消费的效率是提升了,但是问题又来了:顺序问题!

前面说过,由于业务明确要求确保顺序消费,而kafka只是保证分片内的消费顺序是固定的,但是不同分片之间的消费顺序是无法保证的。

对业务进行分析发现,业务要求的顺序处理,其实是有条件的顺序处理。即对于同一个帖子的所有评论相关的操作必须要同步处理,对于不同帖子的评论相关操作并没有顺序的要求。那么问题就简单了,只要保证同一个帖子的所有评论相关操作请求都被分发到同一个topic分区内即可!

生产者写入消息到kafka的topic时,kafka将依据不同的策略将数据分配到不同的分区中:

轮询分区策略 随机分区策略 按key分区分配策略 自定义分区策略

这里采用自定义分区策略,因为每个评论操作请求中都携带有一个原始帖子ID字段,所以分发策略也很简单,直接帖子ID % 分片数将消息进行分发,这样同一个帖子ID的评论操作就都可以到同一个分片中,这样顺序的问题就解决了。

 

所以,对上一环节给定的初步方案进行优化,补充下生产者端的定制化分发策略的要求,保证同一个帖子的评论操作都会到同一个Topic分片中:

 

方案设计到这里,似乎已经是解决了并发消费的问题了。但是后来实际压测之后,结果令人大跌眼镜。

单消费者速度提升

按照前面给出的方案,部署了DEMO环境进行压测(拆分成4个分片,部署4个消费者),最终发现集群消费速度的确是翻了4倍、但是整体并发量依旧是低的可怜,4台机器最终消费并发量甚至不到100!

心灵受到暴击之后,去分析下单个消费者节点的运行情况,发现压测过程中整个机器CPU、IO、MEM、线程数都非常低、毫无任何波动。问业务方要了代码权限,下载了代码并走读了一遍Consumer服务的代码逻辑才发现其中玄机。

其实该业务整体交互逻辑其实很简单,从kafka获取一个消息,然后进行消费。但是这个消费逻辑,是需要按顺序调用10余个周边系统的HTTP接口! 这也难怪CPU、内存、IO都非常低了,整个进程中只有一个线程在处理业务、而这个线程大部分时间都是处于IO等待状态。

所以要想提升整体集群的消费能力,要么无限扩机器、要么就提升单节点的消费能力 —— 显然前者是不可能的,只能选择后者。而对于单线程、多IO操作的场景,提升并发性能,首先想到的就是改为多线程并发处理。但是多线程并发的时候,又会涉及到如何保证顺序消费的问题。

对前面的方案进行优化,给出如下方案:

 

在前面方案的基础上,主要是对消费者端的实现逻辑进行了调整:

  • 在消费者内部,区分Consumer Thread和Work Thread,Consumer Thread负责从kafka拉取消息,而Work Thread负责真正的消费逻辑处理。

  • 单机内存中维护若干个队列,每个队列对应一个Work Thread,负责消费该队列中的数据;

  • Consumer Thread基于亲缘性分发策略对消息进行二次分发,保证相同帖子ID的请求分发到相同的内部队列中。

再进行压测,设置单个消费者服务Work Thread数量为100,集群内4个消费者服务,整体消费速度达到了7000。单节点的消费性能从原来的20提升到1700,提升了近80倍!

如何保证消息不丢失

经过将单机的消费模式改为多线程的方式,目前并发消费性能的问题是解决了,可是可靠性的问题又出现了。

原先的时候,消费者从kafka拉取一条消息,然后消费完成后,给kafka一个ack应答,然后去拉取下一条消息,这样即使消费者中途宕机了,kafka依旧可以将消息分发给下一个可用的消费者去处理,可以保证请求消息不会丢失掉。

而前面的方案,消费者服务从kafka拉取到消息之后,并没有等待处理完成,就继续从kafka拉取消息然后缓存在本机内存中等待work thread慢慢消费,这个时候,如果机器宕机,所有缓存的消息将全部丢失!

为了解决上述问题,考虑将kafka应答机制改为手动提交ack。但是由于多个线程之间乱序的处理kafka上的数据,各个线程已经处理的offset值是不一样的。如下示意图:

​

为了保证消息可靠不丢失,采用如下策略:定期手动提交当前的offset信息,提交的offset值,选择当前节点已处理的最小offset值(对于上面示意图,即提交1002这个offset值),可以通过在内存中缓存下处理的offset列表的方式实现,如下如实现策略:

​

正常情况下,提交的offset值不会有什么作用或影响,但是一旦出现异常情况,导致当前节点进程不可用,kafka重平衡将当前分片分给另一个消费者进行消费的时候,另一个消费者会从最后一次提交的offset位置开始继续往后消费。这样便解决了数据丢失的问题,保证了数据可靠。

但是,另一个问题又出现了:重复消费。好在,虽然这个业务系统是十多年前构建的,但是至少分布式消费者该有的一个关键特性还是具备的,那就是幂等,所以这个问题就不用考虑了。

数据积压不可控场景兜底

到这里,总该一切都没问题了吧?

是,也不是。正常情况下是没问题了,但是作为一个"核心"系统,极端的异常情况的保命策略还需要考虑下。

举个例子,如果突然有一条帖子爆火,这条帖子的评论量远超其余帖子的评论量,甚至远超整个系统的额定最大负载请求量,这样会出现个问题:

  • kafka某一个分片数据量积压严重,其余分片很空闲

  • 该条火爆的帖子的相关评论请求,阻塞了与该帖子分配到同一分区的其余帖子的评论处理。

这个原计划做一个动态伸缩的分片分发策略,但考虑到此场景过于极端,当前系统实施起来性价比不高,所以本着适当设计的原则,放弃了原先方案,改为了简单的手动处理 + 补偿服务方式,如下:

​

一旦出现未预料到的异常,导致系统积压已经超过正常的处理范围了,且已经远超系统可以正常恢复的限度,为了保证现有业务尽快的恢复正常,可以先跳过积压的请求,先保证新过来的请求正常被处理,然后启动补偿进程,慢慢消费之前积压的消息。

有一说一:

这个地方是整个方案里面我自己不太满意的一个实现,属于迁就现实的一种妥协方案,写这篇文档的时候,自己还是打算近期将这部分按照一个更优的方案进行实现。如果您也有兴趣了解或者有更好的建议思路,欢迎联系我,我们一起掰扯下。

总结梳理

至此呢,为了解决kafka消费者消费能力太慢场景的集群并发性能提升方案就全部设计完成了,业务要求的各种要求约束也都可以满足了,最终实现了在业务逻辑没有变的情况下,整体集群的性能提升了上百倍。整体的改动内容如下:

​

回顾

身为架构师的这些年中,做过很多个从0构建的大型项目的整体架构方案,也给很多业务部门针对具体问题出过一些解决策略。过程中一直在反复思考一个问题,面向实际业务问题场景的架构本质是什么?

​

面向问题的架构与面向业务或者系统的架构不同点在于:前者的诉求很明确、目的也比较单一、且现实约束会比较多、可发挥的余地有限。而架构师需要做的,就是在有限的范围内,围绕一个既定目标、确定一个主线策略、再针对主线可能存在的弊端或不足进行弥补与调和,最终促成整个架构方案的最终落地并达成既定目标。

Flink Kafka消费者卡顿问题:消费组无法消费数据、无法写入指定topic? 本文介绍了Flink Kafka消费卡顿的问题,并提供了相应的解决方案。当消费组无法消费数据、导致topic无法写入时,可以通过增加消费者数量、调整消费者配置和检查网络及资源等方法来解决问题。希望以上内容对解决类似问题有所帮助。注意:本文中的示例代码仅供参考,请根据实际情况进行调整和优化。 阅读详情

相关推荐

优化Java中的Kafka消费者

通过优化Java中的Kafka消费者,可以提高消费者的性能和效率。同时,使用多个消费者线程、批量处理消息和适当的序列化器和反序列化器都是优化消费者的有效方法。在使用Kafka时,优化消费者的性能和效率至关重要。在消费者配置中,使用适当的键和值的序列化器和反序列化器。根据您的数据类型,选择合适的序列化器,以提高消息的读取和处理效率。如果您的消息是其他类型的数据,例如JSON、Avro等,可以使用相应的序列化器和反序列化器。通过并发处理批量消息,可以充分利用多核处理器和多线程的优势,提高消息处理的速度和效率。

TechWhizZ的博客 258

我是如何将一个老系统的kafka消费者服务的性能提升近百倍的

至此呢,为了解决kafka消费者消费能力太慢场景的集群并发性能提升方案就全部设计完成了,业务要求的各种要求约束也都可以满足了,最终实现了在业务逻辑没有变的情况下,整体集群的性能提升了上百倍。...

Trouvailless的博客 617

系统架构-服务架构常用的性能优化方法

redis集群的出现就是为了解决单机redis的读写性能瓶颈问题,redis集群是将数据自动分片到多个节点上,每个节点负责数据的一部分,每个节点都可以对外提供服务,突破单机redis存储限制跟读写上限,提高整个服务的高并发能力。 同样的kafka中每个topic也支持多个partition,partition分布到多个broker上,减轻单台机器的读写压力,通过增加partition数量可以增加消费者并行消费消息,提高kafka的水平扩展能力和吞吐量。

wjianwei666的专栏 145

解决kafka主题分区数量限制消费速度的问题

解决kafka主题分区数量限制消费速度的问题

qq_37190071的博客 4076

[ENVI]-[高光谱遥感]-波谱沙漏分析工具的使用

图1-2-1查看特殊波段的坏波段图1-2-2在中添加坏波段ENVI波谱沙漏分析工具MNF变换。

m0_57992372的博客 1470

国产麒麟系统中的PaddleOCR离线绿色部署:高效安全的文字识别新纪元

摘要:本文详细介绍了PaddleOCR在银河麒麟V10SP1系统上的离线部署方案。通过Conda虚拟环境隔离依赖,采用离线包安装方式实现无网络部署,支持80+语言识别。重点讲解了模型量化剪枝优化、多线程处理等性能调优技巧,并提供了完整的OCR识别代码示例。该方案具有数据本地化处理的安全优势,适用于医疗票据数字化等对隐私要求严格的场景,同时解决了模型加载失败、内存不足等常见问题。

墨夶的博客 1230

kafka--消费者详解

一、消费者和消费者组 1.简介 与生产者对应的是消费者, 应用程序可以通过KafkaConsumer来订阅主题, 并从订阅的topic中拉取消息。与其他一些消息中间件不同的是: 在Kaflca 的消费理念中还有一层消费组(Consumer Group) 的概念, 每个消费者都有一个对应的消费组。 当消息发布到主题后, 只会被投递给订阅它的每个消费组中的一个消费者 如图所示, 某个主题中共有4个分区(Part山on): PO、 Pl 、 P2、 P3。 有两个消费组A和B都订阅了这个主题, 消费.

zhang09090606的博客 1095

谷歌账号国家或地区设置修改全攻略:条件、流程与避坑指南

谷歌账号的国家或地区设置与付款资料、账号历史行为及登录环境强绑定,修改时需满足特定条件。其原理在于地区作为索引键,关联内容库、货币结算和风控策略。正确切换可解决内容推荐错乱、付款失败等问题,适用于搬家、订阅区域限定服务等场景。操作前需在目标地区创建付款资料、清空余额并取消订阅,且一年仅能修改一次。本文详解从准备到验证的完整流程,并揭示官方文档未提及的实操陷阱,助你安全完成地区切换。

weixin_42521558的博客 2401

我是如何将一个老系统的 kafka 消费者服务的性能提升近百倍的

至此呢,为了解决 kafka 消费者消费能力太慢场景的集群并发性能提升方案就全部设计完成了,业务要求的各种要求约束也都可以满足了,最终实现了在业务逻辑没有变的情况下,整体集群的性能提升了上百倍。

m0_72134256的博客 377

雷达回波仿真

文章目录前言一、基础理解1.慢时间维度和快时间维度2.脉冲压缩3.MTI4. 脉冲多普勒处理5.cacfar检测二、具体流程1.产生回波信息加入目标时延以及噪声2.解调回波得到基带信号3.脉冲压缩 MTI MTD cafar检测 前言 雷达算法仿真学习,主要流程包括生成目标回波,将基带信号加在载波上其次是加上目标信息和干扰信号后发射,解调回波信号得到基带信号然后MTI,MTD,最后再检测。 一、基础理解 1.慢时间维度和快时间维度 连续M个脉冲回波经过相干解调之后的基带数据形成的一个二维数据矩阵,.

qq_42961235的博客 1万+

PX4固件下VTOL固定翼的3种起飞方式对比:手抛vs弹射vs跑道

本文深度解析PX4固件下VTOL固定翼的三种起飞方式:手抛、弹射与跑道起飞,对比其技术差异与适用场景。通过详细的参数配置和工程实践指南,帮助开发者优化起飞性能,提升无人机在不同环境下的适应性和可靠性。文章特别针对PX4飞控系统的最新特性进行了技术探讨。

weixin_30296405的博客 87

切换 kafka 消费者_kafka的高吞吐低延迟

首先Kafka每次接收到数据都会往磁盘上去写,如下图所示。如果把数据基于磁盘来存储,频繁的往磁盘文件里写数据,这个性能会不会很差?答案是肯定的。实际上Kafka在这里有极为优秀和出色的设计,就是为了保证数据写入性能,首先Kafka是基于操作系统的页缓存来实现文件写入的。Ø 操作系统本身有一层缓存,叫做page cache,是在内存里的缓存,我们也可以称之为os cache,意思就是操作系统自己管理...

weixin_42701915的博客 261

如何加快香山处理器Chisel->Verilog编译速度

相比使用默认的scala firrtl complier,使用CIRCT能够将香山代码编译到Verilog的速度提高50%左右。在执行make命令时加上MFC=1,例如make verilog MFC=1或make emu MFC=1。在本地从源码编译CIRCT,在编译完成后将circt/bin路径加入PATH中。使用GraalVM免费版作为JVM编译香山比OpenJDK快10%-20%。我们推荐使用GraalVM代替OpenJDK。使用CIRCT编译香山。

专业技术人员的归宿 865

【面试】如果你的系统的 QPS 突然提升百倍你要怎么设计?

如果你的系统的 QPS 突然提升百倍你要怎么设计?

Liu_y_xin的博客 1578

交换机初始化配置详解

MGMT或称MGT(Management Port,管理端口)是一个可以连接计算机的三层主机端口,如下图所示。只需使用一条双绞线跳线,就可以将计算机的以太网端口与交换机的MGMT端口连接在一起,实现对交换机的配置与管理。也就是说,可以使用MGMT端口代替Console端口实现对交换机或交换机堆叠的网络管理。MGMT端口既可用于交换机的初始化,也可以在交换机初始化完成后,以Telnet、Web浏览器或Cisco CNA方式进行管理。当将计算机连接到独立的交换机时,连接方式如下图所示。

悦分享 1998

SCADA|KIO程序导出变量错误处理办法

雷工在使用KingSCADA3.52软件导出KIO变量时,遇到导出Excel格式文件报错的问题,错误提示为“ADODB.Connection未找到提供程序”。经过咨询技术人员,发现该功能需要安装Office软件,并与已安装的WPS软件兼容。雷工随后安装了Office2021版本,并进行了兼容性设置。安装过程中遇到无法启动的问题,通过删除安装目录、清理注册表、使用卸载软件和重启电脑等方法解决。安装完成后,雷工在WPS中设置了与Microsoft Office2003兼容的模式,最终成功解决了导出变量时的问题。

做有价值的事,积累有价值的笔记! 957

【Kafka源码解读和使用指南】第34篇:Kafka消费者配置全解析——提升消费性能的20个关键参数

Kafka消费者核心参数调优指南 本文深度解析Kafka消费者20个关键配置参数,帮助开发者优化消费性能。主要内容包括: 参数全景图:将核心参数分为拉取行为、消费控制、心跳会话、Offset管理和网络序列化五大类 拉取行为参数: fetch.min.bytes:控制最小拉取数据量(默认1字节) fetch.max.wait.ms:设置最大等待时间(默认500ms) max.partition.fetch.bytes:限制单分区拉取量(默认1MB) 消费控制参数: max.poll.records:单次pol

xyghehehehe的专栏 203

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

消息队列kafka

通过分区机制实现对同一队列的并发读和并发写,kafka多个分区可以分布在集群的多台机器上,从而通过充分发挥硬件资源的性能提升系统吞吐和性能,通过多消费者、多生产者并发处理大大提升了系统的吞吐量;2. kafka数据落盘采用顺序写,大大提升了数据持久化的性能,顺序写相比随机写来说,在机械硬盘上效率顺序写要快上千倍,顺序读的效率比随机读的效率快几百倍;5. kafka支持批量操作,Kafka的批量操作包括批量写入、批量发布、以及消费端批量读取,通过批量操作大大提升了系统吞吐量;4. 一写多读的广播模型。

itafeng 782

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Kafka 与 RabbitMQ 全方位详细对比

本质不同:Kafka 是分布式日志流平台;RabbitMQ 是AMQP 业务消息 Broker。吞吐:Kafka 百万级远超 RabbitMQ 万级,源于顺序写、零拷贝、分区并行。路由:RabbitMQ 路由极强,Kafka 路由极简。消息留存:Kafka 消息可回溯、长期存储;RabbitMQ 消费即删。消费模式:Kafka 拉模式;RabbitMQ 推模式。功能:RabbitMQ 原生延时、死信、事务完善;Kafka 原生缺失需业务改造。运维:RabbitMQ 简单;

2301_80557823的博客 323

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

chat聊天系统消息消费时遇到的问题及优化思路(二)

考虑下面几个条件下如何提升kafka的消费速度消息要求严格有序,如chat聊天消息业务处理速度慢,如处理一条数据需要100ms分片不合理,如有的分区很闲,有的分区消息数量积压。

qq_43060759的博客 792

Java面试官怒怼水货程序员:Spring Cloud微服务+Kafka消息队列+Redis缓存,你到底会不会?

电商大促系统需兼顾高并发、高可用、数据一致性。合理组合 Spring Cloud、Kafka、Redis、Caffeine 等技术栈,才能扛住流量洪峰。

Summerdayxmm的博客 413

Kafka进阶必备:自定义分区器实现动态负载均衡的实战技巧

Kafka自定义分区器实战摘要 Kafka分区机制是提升吞吐量和并行处理的关键。本文详解如何通过自定义分区器解决热点分区问题: Kafka分区基础:Topic划分为多个有序分区,默认策略通过key哈希或轮询分配消息,但易导致数据倾斜 自定义分区场景: 避免VIP用户/高频业务造成热点分区 按业务维度(地区/设备)分片处理 动态感知集群负载实现智能调度 实现方法:继承Partitioner接口,重点实现partition()方法,需保证线程安全。示例代码展示基于用户ID的分区策略,VIP用户分配到专属分区,普

小五 395

Java大厂面试实录:Spring Boot + Kafka + Redis 在电商秒杀场景下的应用与避坑指南

能力维度 | 初级程序员 | 高级/资深工程师 || 技术广度 | 知道名词 | 理解生态与选型依据 || 技术深度 | 会用 API | 理解底层原理与边界条件 |

Summerdayxmm的博客 723

Java大厂面试真题:Spring Boot + Redis + Kafka 在电商秒杀场景下的高并发设计【谢飞机面试记】

一个完整的电商秒杀系统,不仅仅是写个接口那么简单。高并发设计(缓存、异步、限流)数据一致性(分布式事务、幂等)系统稳定性(监控、熔断、降级)可维护性(日志、追踪、CI/CD)掌握这些技术组合,并理解其背后的设计思想,才是大厂真正考察的核心能力。

lax1008611的博客 347

设计一个高并发系统

高并发,很多时候死在了mysql上面,毕竟mysql的qps比较低,特别是业务数据比较复杂的时候 系统拆分 缓存 消息队列 分库分表 读写分离 搜索引擎 1.系统拆分 将一个系统根据一定的原则划分为几个子系统,划分的粒度根据业务场景,可以参考微服务的治理方式。子系统的数据库独立,单个mysql 所承受的qps 2.缓存 读多写少,redis 单机都能轻松支持几万的并发 3.消息...

it_zhouzhenfeng的专栏 328

Spring Boot微服务架构下的电商秒杀系统设计与实现:高并发限流、原子库存扣减与分布式事务实战

秒杀系统是分布式系统设计的集大成者,需要综合运用多种技术栈。关键在于分层设计、合理选择技术组件、以及完善的监控告警体系。本文实践代码已开源:https://github.com/yourname/seckill-springboot发布日期:2026-03-23作者:AI Agent 技术专栏。

qq_54337203的博客 295
上一篇: 说一说那些Java框架技术是可以放弃了
下一篇: MySQL数据库的索引是什么
Java_LingFeng
博客等级 码龄4年 505粉丝 259原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值