- 博客(185)
- 资源 (2)
- 收藏
- 关注
原创 MySQL 索引覆盖与索引下推(ICP)深度解析:厘清边界、拆解差异、实战落地
本文深入解析MySQL中索引覆盖与索引下推(ICP)的核心区别与优化策略。索引覆盖通过包含查询所需字段避免回表,适用于SELECT字段少且全在索引中的场景;ICP则将过滤条件下推至存储引擎层,减少无效回表次数,适用于需回表但过滤条件含索引列的情况。文章通过对比表、执行流程拆解和实战案例,阐明两者在目标、适用场景和性能提升点的差异,并提供优化建议:优先设计覆盖索引,合理使用联合索引,避免ICP失效场景。最终指出优化核心在于减少磁盘IO,应根据实际查询特点灵活运用两种技术。
2025-12-19 10:23:34
826
原创 订单超时关闭:定时任务(TOC)vs MQ 延迟消息
电商订单超时关闭实现方案对比:定时任务(如阿里TOC)与MQ延迟消息是两种主流方案。定时任务通过分桶/分片设计适合海量订单(亿级),支持复杂规则但存在分钟级延迟;MQ延迟消息时效性高(秒级)但受限于固定延迟级别,适合中小规模订单。选型需考虑业务规模、时效要求和运维能力,大厂常采用混合方案:核心订单用MQ保证时效,长尾订单用定时任务兜底。无论哪种方案都需处理幂等性、状态校验等关键问题。
2025-12-18 10:37:57
756
原创 阿里TOC的分库+分片+分区+分桶设计
阿里TOC分桶方案通过"逻辑分类+物理存储优化"实现高效任务调度。核心是生成逻辑桶ID(按时间粒度),配合组合索引快速定位目标任务。海量数据场景下,结合数据库分区(按天范围)和分库分表进一步优化。方案支持动态调整桶粒度、冷热数据分离等特性,中小厂商可仅实现桶ID+索引的基础方案满足百万级任务需求。该方案通过分层设计,在逻辑分类、索引查询和物理存储三个维度实现任务的高效扫描与处理。
2025-12-18 10:36:47
865
原创 阿里 TOC(超时中心)深度解析:设计原理与实现方式
阿里TOC(TimeoutCenter)是集团统一的分布式超时任务中台,面向订单、退款等海量业务场景,解决精准触发、高可用等核心问题。采用"时间分桶+分布式分片+规则引擎"架构,通过多级分桶策略缩小扫描范围,结合一致性哈希分片实现任务并行处理。系统具备完整的任务生命周期管理、动态规则引擎、阶梯式重试等机制,支持亿级任务/天的处理能力,可用性达99.99%。与普通定时任务相比,TOC在中台化设计、精准触发和运维能力等方面具有显著优势,其核心设计思路可为构建分布式任务系统提供重要参考。
2025-12-18 10:36:11
702
原创 Caffeine vs Guava Cache 深度对比:特性、性能与选型实践
摘要:Caffeine作为GuavaCache的现代替代方案,由原Guava核心开发者BenManes打造,在完全兼容Guava API的基础上,通过W-TinyLFU算法和StripedLock并发模型实现性能飞跃。相比GuavaCache的70-80%命中率,Caffeine可达85-95%,吞吐量提升6-7倍(读700万QPS/写300万QPS)。其优势包括:异步非阻塞刷新、更细粒度过期策略、更低内存占用及丰富统计功能。建议新项目直接采用Caffeine,老项目优先迁移,仅在JDK6/7等限制环境下保
2025-12-18 09:07:25
709
原创 实现一个LRU缓存淘汰策略
摘要:LRU(最近最少使用)缓存淘汰策略通过哈希表+双向链表实现高效操作。Java中LinkedHashMap是官方推荐实现,手动实现则需结合哈希表(O(1)查找)和双向链表(维护访问顺序)。核心操作包括:get时移动节点到头部,put时更新或新增节点并处理容量限制。初始版本使用LinkedList导致remove(key)为O(n),优化后改用双向链表+哈希表记录节点,使所有操作达到O(1)时间复杂度。最终实现包含虚拟头尾节点,通过addToHead、removeNode等方法高效维护访问顺序。
2025-12-16 10:44:25
283
原创 淘宝秒杀系统架构实战 - 百万级并发技术方案
本文提出了一套完整的秒杀系统五层防护架构方案,针对瞬时高并发、库存稀缺等核心挑战,设计了从CDN前端到数据层的全链路优化策略。关键技术包括:前端静态化与限流、Nginx+Lua动态拦截、Sentinel熔断降级、Redis原子库存扣减、异步订单处理等。通过分层流量控制和资源隔离,系统成功将100万并发请求逐级削减至可处理范围,并保证库存强一致性。压测结果表明,该方案在5万QPS下P99延迟<200ms,有效解决了超卖、系统崩溃等核心问题。
2025-12-16 10:44:03
1239
原创 使用两个栈来实现一个队列
摘要:本文介绍了使用两个栈(stackIn和stackOut)实现队列的方法。入队操作直接压入stackIn(O(1)时间复杂度),出队时若stackOut为空则将stackIn元素全部转移至stackOut,再弹出栈顶元素。该方法通过"分栈职责+按需转移"策略,利用栈的后进先出特性模拟队列的先进先出特性,实现均摊时间复杂度为O(1)的队列操作。文中提供了完整的Java代码实现,包括入队(offer)、出队(poll)、获取队首(peek)和判空(isEmpty)等核心操作,并分析了各操
2025-12-16 10:42:14
269
原创 使用两个队列实现一个栈
摘要:本文介绍了在Java中使用两个队列实现栈的方法。核心思路是通过主队列(queue1)存储元素,辅助队列(queue2)作为中转。入栈操作直接添加元素到queue1;出栈时将queue1前n-1个元素转移到queue2,弹出最后一个元素后交换队列角色;获取栈顶元素类似出栈但不删除元素。该方法保证了栈的后进先出特性,其中push操作时间复杂度为O(1),pop/peek为O(n)。文中提供了完整代码实现,包括异常处理和性能优化建议。
2025-12-16 10:41:22
184
原创 内网穿透方案
内网穿透技术指南摘要 本文详细介绍了内网穿透的概念、应用场景及三种主流实现方案。内网穿透是将内网设备端口映射到公网的技术,常用于远程办公、本地开发调试、智能家居管理等场景。文章对比了三种实现方案:1)花生壳(适合新手,图形化操作但带宽受限);2)frp(开源方案,需云服务器但配置灵活);3)ngrok(临时调试首选,支持HTTPS但域名随机)。最后强调了安全注意事项,包括设置强认证、限制访问IP等防护措施。三种方案各具特点,用户可根据技术能力和需求选择适合的方案。
2025-12-15 14:58:57
750
1
原创 分布式事务中的三阶段提交(3PC),与两阶段提交有什么优缺点
摘要:三阶段提交(3PC)是对两阶段提交(2PC)的优化协议,通过增加预提交阶段和超时机制降低阻塞风险。3PC将事务分为CanCommit(预检查)、PreCommit(预提交)和DoCommit(提交/回滚)三个阶段,参与者超时后能自动决策,减少资源锁定时间。相比2PC,3PC降低了阻塞概率但增加了实现复杂度,仍存在脑裂风险。2PC简单可靠适合强一致场景,而3PC实际应用较少,现代分布式系统更倾向采用TCC等最终一致性方案。核心差异在于3PC以轻微一致性风险换取阻塞问题的改善。
2025-12-15 14:58:03
604
原创 Seata 四大事务模式深度解析:XA/AT/TCC/Saga 区别、实现逻辑与选型指南
本文系统解析了Seata分布式事务框架的四种核心模式:XA(强一致)、AT(最终一致)、TCC(强一致)和Saga(最终一致)。四种模式在一致性强度、性能开销和业务侵入性方面各有侧重:XA依赖数据库原生协议保证强一致但性能低;AT通过本地事务+自动补偿平衡性能与一致性;TCC通过业务层三阶段编程实现跨存储强一致;Saga采用事件驱动反向补偿处理长事务。文章详细阐述了各模式的实现逻辑、核心特性和适用场景,并提供了选型指南:金融支付选XA、高频SQL选AT、跨存储强一致选TCC、长事务最终一致选Saga。最终强
2025-12-15 14:56:56
774
原创 MyBatis 中 #{} 与 ${} 终极指南:区别、场景与安全实践
MyBatis中#{}和${}参数传递的核心差异在于:前者通过预编译实现安全传值,后者直接字符串替换支持动态SQL语法。90%场景应使用#{}传递参数值,仅当需要动态列名、表名或SQL关键字时才使用${},且必须配合白名单校验防止SQL注入。关键原则是能用#{}则不用${},使用${}时必须严格校验参数来源和内容。
2025-12-15 14:55:11
1021
原创 Spring Boot 3 为何移除spring.factories?
SpringBoot3移除spring.factories文件引发开发者关注。这一重大变革主要源于五大原因:1)与GraalVM原生镜像支持冲突;2)启动性能瓶颈;3)Java模块化系统支持不足;4)配置灵活性缺陷;5)维护成本高。新机制采用AutoConfiguration.imports文件替代,具有类型安全、模块化友好、性能提升等优势。开发者需将配置迁移至META-INF/spring目录下的.imports文件,并注意类路径正确性和条件注解使用。这一变革是技术演进的必然选择,为SpringBoot拥
2025-11-27 16:58:58
454
原创 Spring 启动缓存预热:5 种方案深度对比与落地指南
摘要:本文深入解析Spring生态中5种主流缓存预热方案,包括生命周期监听器、CommandLineRunner、定时任务、缓存加载器和分布式预热。通过对比各方案的实现原理、代码示例及优缺点,帮助开发者根据数据量、分布式架构等场景选择最优解。文章强调异步执行、分批加载和分布式锁等优化手段,并给出缓存防护机制建议,最终提出"不影响启动与一致性的高效加载"的预热核心原则,为系统性能优化提供实践指导。
2025-11-27 16:58:18
263
原创 Spring 三级缓存深度解析:循环依赖与 AOP 代理的完美平衡
摘要:Spring框架通过三级缓存机制巧妙解决循环依赖与AOP代理创建的矛盾。在传统场景下,AOP代理在Bean完全初始化后创建;但循环依赖要求提前暴露对象。三级缓存(singletonObjects、earlySingletonObjects、singletonFactories)通过延迟代理创建时机实现平衡:当检测到循环依赖时,通过ObjectFactory动态决定返回原始对象或代理对象,确保注入正确的代理实例。这种设计既满足循环依赖需求,又保持AOP代理的创建原则,体现了Spring框架的精妙架构。
2025-11-27 16:57:36
531
原创 BeanFactory和FactroyBean的关系?
本文摘要: Spring框架中的BeanFactory和FactoryBean都是org.springframework.beans.factory包下的接口,但功能不同。BeanFactory是IoC容器核心接口,负责管理Bean生命周期和依赖注入,采用延迟初始化策略。FactoryBean是特殊Bean,通过实现getObject()方法封装复杂对象的创建逻辑。关键区别在于:BeanFactory是容器管理者,FactoryBean是Bean创建工具。BeanFactory管理所有Bean(包括Fact
2025-11-27 16:56:18
247
原创 AQS-AbstractQueuedSynchronizer
AQS(AbstractQueuedSynchronizer)是Java并发编程中的核心同步框架,为ReentrantLock、CountDownLatch等同步器提供基础实现。其核心包含一个volatile的state变量(通过CAS修改)和一个FIFO双向队列(Node节点构成),分别用于控制同步状态和管理线程排队。AQS支持排他锁(如ReentrantLock)和共享锁(如Semaphore)两种模式。同步辅助类CountDownLatch、CyclicBarrier和Semaphore虽然都基于AQ
2025-11-24 11:14:45
888
原创 TCP 为什么要三次握手和四次挥手?
TCP连接的建立需要"三次握手",通过SYN和ACK数据包的交换,确保双方收发功能正常;断开连接则需"四次挥手",采用FIN和ACK数据包完成双向关闭。三次握手确认通信可靠性,四次挥手则保证全双工连接的安全终止,其中客户端等待2MSL时间防止ACK丢失。这种机制有效维护了TCP连接的稳定性和可靠性。
2025-11-23 00:30:00
921
原创 什么是 JWT? 如何基于 JWT 进行身份验证?
JWT(JSON Web Token)是一种基于Token的无状态跨域认证方案,由Header、Payload和Signature三部分组成。Header定义算法和类型,Payload包含用户数据,Signature用于防篡改。JWT通过签名验证确保数据完整性,无需服务端存储Session,适合RESTful API。使用时建议将Token存于localStorage而非Cookie,避免CSRF风险,并设置合理过期时间。密钥安全是核心,需严格保护。JWT提升了系统扩展性,但需注意敏感数据不应存于Paylo
2025-11-23 00:15:00
683
原创 JVM故障处理工具
本文介绍了Java虚拟机(JVM)监控与诊断工具集,包括jps、jcmd、jstat、jmap、jhat和jstack等常用命令。这些工具可用于查看JVM进程状态、收集运行数据、生成堆转储快照和分析线程堆栈等。主要内容包括: jps命令:列出正在运行的JVM进程信息,支持-q、-l、-m、-v等参数选项,用于查看进程ID、主类全名、启动参数等。 jcmd命令:提供详细的JVM诊断功能,可查看启动参数、运行时长、线程堆栈、系统属性等,并支持导出堆转储文件。 jstat命令:监视类加载、内存使用、垃圾回收等运行
2025-11-22 00:30:00
1952
原创 四种线程池使用介绍
摘要:Executors提供了四种典型线程池:newFixedThreadPool(固定大小)、newSingleThreadExecutor(单线程)、newCachedThreadPool(缓存线程)和newScheduledThreadPool(定时线程)。这些线程池各有特点,适用于不同业务场景,但也存在共同风险——均使用无界队列或极大线程数上限,可能导致任务无限堆积引发OOM。其中newScheduledThreadPool支持定时/延迟任务执行,提供scheduleAtFixedRate等方法,但
2025-11-22 00:15:00
209
原创 五种类代理的方式
摘要:本文介绍了五种Java代理实现方式:1)JDK代理(基于接口,简单常用);2)CGLIB代理(基于ASM字节码,性能高1.5-2倍);3)ASM代理(直接操作字节码指令,性能最优);4)Byte-Buddy代理(API简单,获Oracle大奖);5)Javassist代理(平衡安全与功能)。这些代理技术广泛用于中间件开发、AOP、监控等领域,选择时需权衡实现复杂度与性能需求。深入理解代理机制有助于突破技术瓶颈,提升开发能力。
2025-11-21 00:30:00
640
原创 HashMap源码分析
摘要:HashMap通过扰动函数优化哈希分布,将key的哈希值高16位与低16位异或,增加随机性以减少碰撞。扩容时采用2的幂次方容量,通过位运算计算新容量。当链表长度超过8且桶容量大于64时转为红黑树,提升查询效率。插入、查找和删除操作均通过哈希定位到桶,再根据节点类型(链表/红黑树)进行相应处理。扩容时元素重新散列,通过哈希值与旧容量按位与运算判断新位置,优化迁移效率。
2025-11-21 00:15:00
845
原创 算术移位 、逻辑移位
本文介绍了Java中的位运算操作,分为算术移位和逻辑移位两类。算术移位包括带符号的左右移位(>>和<<),会保持符号位不变;逻辑移位(>>>)则不考虑符号位,右移时高位补零。文章详细解析了移位运算规则及其等效数学运算,并提供了代码示例。同时介绍了四种基本位运算(与、或、非、异或)的原理和应用场景,包括使用异或交换变量值的技巧。此外,文章还讲解了补码表示法、数字正负转换、奇偶和幂值判断等实用案例,最后给出若干优化建议,如用移位替代乘除运算可提高效率。
2025-11-20 00:30:00
893
原创 图 Graph
摘要:本文介绍了图论的发展历程及图数据结构的基本概念与实现方式。从欧拉开创性论文到拓扑学发展,阐述了图论的历史背景。重点讲解了图的分类(无向/有向、有权/无权)和三种实现方法:邻接矩阵(数组)、邻接表(链表)和红黑树实现。详细说明了不同图结构下的元素插入方式,并比较了广度优先遍历(BFS)和深度优先遍历(DFS)算法的特点和实现代码。文章通过具体代码示例展示了图的存储结构及遍历方法在不同类型图中的运用。
2025-11-20 00:15:00
950
原创 平衡二叉树 AVL Tree
AVL树是一种自平衡二叉搜索树,由Adelson-Velsky和Landis在1962年提出,解决了普通BST在顺序插入时退化为链表的问题。其核心是通过旋转操作(左旋、右旋及组合旋转)来维持树的平衡,确保左右子树高度差不超过1。旋转操作类似于调整方向盘,当树高差过大时自动进行修正。AVL树节点包含高度或平衡因子属性,通过四种旋转情形(左旋、右旋、左旋+右旋、右旋+左旋)实现动态平衡。详细代码实现展示了如何通过调整节点关系来完成旋转,最终保持O(log n)的查询效率。这种数据结构在需要高效查找的场景中具有重
2025-11-19 00:30:00
1784
原创 二分搜索树 Binary Search Tree
本文介绍了二叉搜索树(BST)的基本原理及其实现。BST是一种二叉树数据结构,左子树节点值小于根节点,右子树节点值大于根节点。文章回顾了BST的发展历史,并详细阐述了BST的插入、查找和删除操作的具体实现方法。其中,删除操作根据节点子节点数量分三种情况处理:无子节点、单子节点和双子节点。对于双子节点情况,需先找到右子树中的最小节点进行替换。本文还指出BST存在退化为链表的风险,时间复杂度可能从O(logn)恶化到O(n)。BST是构建更复杂平衡树(如AVL树、红黑树)的基础数据结构。
2025-11-19 00:15:00
983
原创 字典树 Trie
摘要:字典树(Trie)是一种高效存储和检索字符串的数据结构,核心通过前缀共享节省空间。本文介绍了字典树的历史背景及数据结构原理,详细阐述了其Java实现方法,包括节点设计、插入元素和前缀检索功能。通过测试案例验证了字典树能快速检索所有指定前缀的单词,适用于海量词汇的存储和查询。字典树的时间复杂度为O(n),在索引长度限制下具有较高查询效率。
2025-11-18 00:30:00
613
原创 堆栈(栈)Stack
本文介绍了堆栈数据结构的特点和实现方式,重点分析了Java中ArrayDeque的源码实现。堆栈是一种LIFO(后进先出)的数据结构,其核心操作包括push(压栈)和pop(弹出)。文章指出应使用ArrayDeque而非Java原生的Stack类来实现堆栈功能。详细解析了ArrayDeque的内部机制:使用循环数组存储元素,通过位运算高效计算索引位置;当数组空间不足时,进行2倍扩容并分两次复制元素;压栈和弹出操作都遵循LIFO原则,通过head指针管理栈顶位置。源码分析包括addFirst(压栈)、doub
2025-11-18 00:15:00
1122
原创 Spring Boot 多数据源切换实战:基于 dynamic-datasource 的优雅实现
本文介绍了基于dynamic-datasource-spring-boot-starter实现多数据源动态切换的完整方案。通过注解驱动的数据源配置,可以轻松应对订单库与用户库分离等业务场景。文章详细讲解了环境准备、核心配置、代码实现等关键环节,重点解决了事务内数据源切换、自调用AOP失效等常见问题,为开发者提供了开箱即用的多数据源管理方案。该方案在保持开发效率的同时,兼具良好的灵活性和扩展性。
2025-11-17 17:45:30
1588
原创 单元测试-模拟框架Mockito
Mockito是一个Java测试框架,用于单元测试中模拟对象行为。它具有三大核心功能:1)创建mock对象隔离外部依赖;2)通过stubbing预设方法返回值;3)验证方法调用情况。Mockito支持部分模拟(Partial Mocks)、参数匹配(ArgumentMatchers)和回调机制(thenAnswer/doAnswer),能灵活处理各种测试场景。集成时只需添加Spring Boot Test依赖即可,提供times()、any()等多种测试验证方法,帮助开发者编写高效、隔离的单元测试。
2025-11-17 17:37:32
526
原创 SocketTimeoutException问题延伸
Java应用出现连接超时问题的原因分析及解决方案建议。系统频繁创建TCP连接会导致资源耗尽、TIME_WAIT状态堆积等问题,引发SocketTimeoutException。分析表明,连接未复用、系统资源限制、TCP协议特性是主要原因。推荐使用OkHttpClient或ApacheHttpClient等支持连接池的HTTP客户端库,避免直接使用HttpURLConnection。OkHttpClient因其高性能、连接池支持和简洁API成为首选方案,而RestTemplate已逐渐过时。合理选择HTTP客
2025-11-17 17:36:35
1094
原创 如何基于Redis实现分布式锁?
摘要:Redis实现简易分布式锁的核心是互斥机制,可通过SETNX命令实现。基本步骤包括:1)使用SETNX获取锁;2)通过唯一值避免误删;3)用Lua脚本保证原子性释放。改进方案包括:设置锁过期时间防止死锁,使用Redisson实现自动续期(看门狗机制)。对于集群环境,Redlock算法可提高可靠性,但实现复杂。实际应用中,单机Redis锁通常已能满足需求,若需更高可靠性可考虑ZooKeeper。
2025-07-16 15:27:53
749
原创 Spring boot中利用WebAsyncTask实现异步任务编程
本文介绍了Servlet 3.0引入的异步请求处理特性及其在SpringBoot中的实现方式。重点阐述了WebAsyncTask的使用方法,包括超时回调、错误处理和完成回调等功能,并提供了线程池配置示例。与@Async注解相比,WebAsyncTask提供了更细粒度的超时控制和回调机制,适合需要精确控制异步任务生命周期的场景。文章通过代码示例展示了如何创建WebAsyncTask异步任务并配置独立的线程池来处理不同优先级的任务。
2025-07-16 15:27:13
223
原创 分布式事务方案
分布式事务的实现方式主要包括XA协议的二阶提交(2PC)、三阶提交(3PC)和TCC补偿性事务。XA协议由X/Open组织提出,规范了事务管理器(TM)与资源管理器(RM)之间的通信,确保事务的ACID特性。2PC通过准备和提交两个阶段实现事务,但存在阻塞和数据不一致的问题。3PC在2PC基础上增加预处理阶段和超时机制,以减少阻塞,但仍无法完全解决网络故障导致的数据不一致。TCC通过Try、Confirm、Cancel三个阶段实现最终一致性,适用于微服务架构,但对业务侵入性大。Seata是阿里开源的分布式事
2025-05-20 16:47:08
591
原创 深入了解Synchronized同步锁的优化
在并发编程中,Java通过Synchronized关键字和Lock接口实现线程同步,确保共享资源的原子性。Synchronized是JVM内置锁,而Lock需要显式管理锁的获取和释放。JDK1.5之前,Synchronized因依赖操作系统MutexLock导致性能开销大,尤其在锁竞争激烈时表现不佳。JDK1.6对Synchronized进行了优化,引入了偏向锁、轻量级锁和重量级锁等概念,通过锁升级机制减少上下文切换,提升性能。此外,JIT编译器通过逃逸分析和锁粗化技术进一步优化锁的使用。减小锁粒度,如Co
2025-05-20 16:46:21
1004
原创 事务消息实现分布式事务
在电商系统中,用户下单后,订单系统需要通知购物车系统删除已购商品,这一过程通常通过消息队列实现,以确保数据一致性。分布式事务在此场景中至关重要,它确保订单创建和购物车清理要么都成功,要么都失败,避免数据不一致。分布式事务的实现通常遵循ACID原则,包括原子性、一致性、隔离性和持久性。常见的分布式事务实现方法有2PC、TCC和事务消息。事务消息适用于异步更新数据且对实时性要求不高的场景。消息队列如Kafka和RocketMQ提供了事务相关功能,通过事务消息机制实现分布式事务。例如,订单系统在创建订单后发送“半
2025-05-20 16:45:27
1227
原创 队列消息模型
消息队列产品通常采用两种主要模型:队列模型和发布-订阅模型。队列模型遵循先进先出原则,适用于单一消费者场景,而发布-订阅模型允许多个消费者接收同一消息,适用于需要消息广播的场景。RabbitMQ主要使用队列模型,通过Exchange实现消息分发。RocketMQ和Kafka则采用发布-订阅模型,其中RocketMQ通过队列实现消息的有序性和并行消费,Kafka则使用分区(Partition)实现类似功能。两种模型各有优势,选择哪种模型取决于具体应用场景和需求。
2025-05-20 16:44:25
836
原创 消息队列概述
消息队列适合解决异步处理、流量控制和服务解耦等问题。异步处理能提升系统性能,流量控制可调节系统负载,服务解耦则增强系统灵活性。选择消息队列时,应考虑开源、社区活跃度、消息可靠传递、集群支持和性能等因素。常见的消息队列产品包括RabbitMQ、RocketMQ和Kafka。RabbitMQ以轻量级和灵活路由著称,但处理大量消息时性能下降;RocketMQ由阿里巴巴开发,性能高,易于扩展;Kafka最初用于日志处理,现已发展为功能全面的消息队列,兼容性极佳。每种产品各有特点,应根据具体需求选择。
2025-05-20 16:43:33
451
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅