Java
文章平均质量分 93
武子康
Hi, I'm Zikang / 武子康
好奇心驱动的探索者 | INTJ / INFJ
我热爱探索一切值得深究的事物。对技术、成长、效率、认知、人生有着持续的好奇心和行动力。
坚信「飞轮效应」,相信每一次微小的积累,终将带来深远的改变。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
调查研究-170 Vert.x 是什么?它和 Netty 到底是什么关系?一张图讲清 Java 异步技术栈选型
本文系统对比 Java 异步技术栈中的 **Vert.x** 与 **Netty**(截至 2026 年)。Netty 4.2.x 是异步事件驱动的底层网络 I/O 框架,封装了 Java NIO 的 Selector、Channel、ByteBuf、Pipeline、Handler 抽象,被 Dubbo、RocketMQ、gRPC-Java、Elasticsearch、各类 RPC 与 IM 网关广泛采用。Vert.x(Eclipse 生态,4.5.x 与 5.0.x 双分支并行)则基于 Netty 构建原创 2026-06-11 16:15:26 · 1019 阅读 · 0 评论 -
调查研究-167 Docker Compose 详解:从单容器到多服务编排的工程化入口
本文详细介绍了Docker Compose的概念和使用方法。Docker Compose是一个多容器应用管理工具,通过YAML文件(compose.yaml或docker-compose.yml)声明式地配置整套应用,解决了手动运行多个docker run命令的复杂性。文章解释了Docker、Dockerfile和Docker Compose的关系:Docker负责容器运行,Dockerfile负责镜像构建,Compose负责多容器编排。重点讲解了Compose文件的基本结构,特别是services配置部分原创 2026-06-10 15:37:24 · 631 阅读 · 2 评论 -
Java-223 RocketMQ同步复制与异步复制:高可用架构与DLedger实战
本文深入解析RocketMQ消息复制的核心机制,涵盖同步复制与异步复制的工作流程、可靠性与性能权衡。详细对比ASYNC_FLUSH、SYNC_FLUSH与SYNC_MASTER、ASYNC_MASTER的四种组合策略及适用场景。介绍RocketMQ 4.5引入的DLedger高可用方案,基于Raft协议实现自动选主,解决传统主从架构需要人工切换的痛点。包含完整配置文件示例和故障恢复流程,适合消息队列运维人员参考。原创 2026-05-29 10:21:44 · 549 阅读 · 0 评论 -
Java-223 RocketMQ 缓冲IO与直接IO深度对比:mmap内存映射的原理与实践
本文深入解析Linux系统中缓冲IO、直接IO与内存映射mmap三大IO机制。缓冲IO通过页缓存减少磁盘访问次数,但数据需经历磁盘到内核缓存再到用户空间的两次拷贝。直接IO以O_DIRECT标志绕过页缓存,实现磁盘到用户空间的单次拷贝,但需满足对齐约束且应用自行管理缓存。mmap通过文件到虚拟地址空间的映射,在首次访问时触发缺页异常加载数据,减少了传统read/write的系统调用开销。文章详细对比三种IO模式的数据拷贝次数、适用场景,并提供Java NIO直接IO、AsynchronousFileChan原创 2026-05-27 21:17:07 · 454 阅读 · 0 评论 -
Java-222 RocketMQ零拷贝技术从原理到实战:PageCache、DirectByteBuffer与Netty实现
本文深入解析零拷贝技术在操作系统与Java应用层的完整实现。零拷贝通过减少数据在内核空间与用户空间之间的拷贝次数,显著提升I/O密集型应用性能。文章系统讲解Linux PageCache读写机制、Write-back策略与LRU回收,HeapByteBuffer与DirectByteBuffer的原理对比,MappedByteBuffer内存映射机制,以及Netty框架中DirectBuffer、CompositeByteBuf、FileRegion、wrappedBuffer四种零拷贝实践。适用于高性能网原创 2026-05-26 15:25:25 · 871 阅读 · 1 评论 -
Java-221 RocketMQ 消息存储核心原理:CommitLog、ConsumerQueue、IndexFile 与消息过滤机制
本文深入解析 RocketMQ 消息队列的存储核心原理,涵盖消息存储介质(关系型数据库 vs 文件系统)、刷盘策略(同步/异步)、存储结构(CommitLog/ConsumerQueue/IndexFile)三大核心组件。CommitLog 采用顺序写提升写入性能,单文件默认 1G;ConsumerQueue 是消费逻辑队列,固定 20 字节条目设计;IndexFile 实现 Hash 索引支持 Key/时间查询消息。消息过滤支持 Tag 过滤(基于 HashCode)、SQL 过滤(表达式)、Filter原创 2026-05-20 17:37:41 · 886 阅读 · 1 评论 -
Java-220 RocketMQ 核心原理与最佳实践:消息发送、消费、存储详解
本文深入剖析 Apache RocketMQ 核心原理与生产最佳实践,涵盖消息发送(同步/异步/OneWay)、消息消费(Push/Pull、集群/广播、并行度调优)、消息存储(CommitLog、ConsumeQueue、IndexFile)三大核心维度。详解 SendStatus 四种状态(FLUSH_DISK_TIMEOUT、FLUSH_SLAVE_TIMEOUT、SLAVE_NOT_AVAILABLE、SEND_OK)及处理策略,批量消费与消费线程配置优化。适用于 RocketMQ 4.x/5.x、原创 2026-05-19 11:51:21 · 415 阅读 · 0 评论 -
Java-219 RocketMQ Spring Boot 集成指南:生产者与消费者实战
本文详细介绍 Spring Boot 2.x/3.x 集成 Apache RocketMQ 的完整流程,涵盖生产者(Producer)创建、消费者(Consumer)配置、消息类型(普通/顺序/事务)、消费模式(集群/广播)以及重试机制与死信队列。通过 RocketMQTemplate 和 @RocketMQMessageListener 注解实现简洁的声明式开发,配合 application.yml 灵活配置发送超时、线程数、消费模式等参数。适用于 JDK 8+、Maven 3.6+ 环境,基于 Rock原创 2026-05-18 08:29:41 · 974 阅读 · 0 评论 -
Java-218 RocketMQ Java API 实战:同步/异步 Producer 与 Pull/Push Consumer
同步 Producer(DefaultMQProducer)、异步 Producer(SendCallback + CountDownLatch)、Pull 消费(DefaultLitePullConsumer.poll)与 Push 消费(DefaultMQPushConsumer + MessageListenerConcurrently)。重点解释 Producer Group/Consumer Group 的语义差异、NameServer 路由机制(Topic -> Broker 路由后再直连原创 2025-12-29 11:30:08 · 1362 阅读 · 13 评论 -
Java-217 RocketMQ 术语与消息模型速查:Producer/Broker/Consumer、Group、顺序/广播/集群、Tag/Queue
Producer(生产者)、Broker(消息存储与转发)、Consumer(消费者)构成基本链路;在消费侧区分 PushConsumer/PullConsumer(消费触发与拉取控制方式),并用 Consumer Group 实现负载均衡与容错;消息分发模型覆盖集群消费(Clustering)与广播消费(Broadcasting),对“同一条消息被谁消费、消费几次”给出清晰边界;顺序消息部分区分普通顺序与严格顺序,强调路由到同一队列与异常场景下可能乱序的原因;存储与路由以 Message Queue原创 2025-12-29 10:52:45 · 1020 阅读 · 4 评论 -
Java-216 RocketMQ 4.5.1 在 JDK9+ 从0到1全流程启动踩坑全解:脚本兼容修复(GC 参数/CLASSPATH/ext.dirs)
2025 年仍高频出现的 JDK9+ 兼容问题:启动脚本携带 CMS/ParNew 等已移除的 JVM 参数导致直接报错退出;旧式 GC 日志参数(-Xloggc、PrintGCDateStamps 等)在 JDK9+ 进入统一日志体系(-Xlog)后出现告警/失效;以及 tools.sh / runserver.sh / runbroker.sh 的 CLASSPATH 未包含 ${BASE_DIR}/lib/* 引发 ClassNotFound。文中给出三处脚本的工程化改法:删除 UseConcMark原创 2025-12-26 15:29:15 · 1487 阅读 · 6 评论 -
Java-215 RocketMQ 消费模式:Push vs Pull 的本质、长轮询机制与 Offset/积压调优要
说明 Push 模式“看起来推送、实际长轮询拉取”的实现路径,Pull 模式如何由客户端掌控拉取频率、批量大小与 Offset 提交;并结合 NameServer、Broker、Topic、Producer、Consumer 的集群工作流程,给出“实时性、服务端压力、客户端控制度、异常重试与消费进度管理”的对比框架。重点覆盖关键词:RocketMQ 消费模式、长轮询、PullRequest、MessageListener、pull/pullBlockIfNotFound、offset 管理、rebalanc原创 2025-12-26 10:23:21 · 1325 阅读 · 17 评论 -
Java-214 RocketMQ 核心特性全解:顺序/过滤/事务/定时/重试/流控/死信队列
发布订阅与 Tag 过滤/属性过滤、顺序消息(订单链路按发送顺序消费)、消息可靠性与刷盘/主从复制边界、至少一次(At Least Once)投递语义、回溯消费(按时间戳重置位点并要求业务幂等)、事务消息(半消息 PREPARED + 本地事务 + 回查机制实现最终一致性)、定时/延迟消息(MessageDelayLevel 与 SCHEDULE_TOPIC_XXXX 调度写回真实 Topic)、消费失败重试与死信队列(%DLQ%+消费组)、生产者/消费者流量控制触发条件与影响。重点给出工程视角的可落地点原创 2025-12-25 09:50:07 · 1270 阅读 · 8 评论 -
Java-213 RocketMQ(MetaQ)演进与核心架构:NameServer/Broker/Producer/Consumer 工作机制
从 MetaQ(Metamorphosis)到 RocketMQ 的演进脉络,并围绕核心组件 NameServer、Broker(主从/复制/刷盘)、Producer、Consumer(拉取/长轮询/消费者组)解释路由发现、Broker 注册心跳、Topic/MessageQueue 分区与负载均衡机制。结合解耦、流量削峰、数据分发等典型场景,给出发送链路的路由缓存与失败重试、消费链路的 offset 管理与积压判断(从 Master/Slave 读的策略考量)等关键点。文中出现的吞吐/延迟等指标需以具体版原创 2025-12-25 09:35:24 · 1226 阅读 · 4 评论 -
Java-212 RabbitMQ 消息可靠性进阶:Publisher Confirms、mandatory Return、持久化与幂等落地
生产端异常捕获与重试、AMQP/RabbitMQ 事务机制取舍、Publisher Confirms(Basic.Ack/Basic.Nack)三种用法(同步阻塞 / 批量确认 / 异步回调精准定位)、mandatory + ReturnListener/ReturnCallback 解决路由不到队列的静默丢弃问题,以及 Exchange/Queue durable 与消息 deliveryMode=2 的持久化策略。并补充消费者 ACK、限流与业务幂等在最终一致性链路中的位置。示例基于 RabbitMQ原创 2025-12-24 09:17:01 · 1801 阅读 · 7 评论 -
Java-211 Spring Boot 2.4.1 整合 RabbitMQ 实战:DirectExchange + @RabbitListener 全流程
通过 RabbitConfig 在启动时声明 RabbitMQ 拓扑(Queue、DirectExchange、Binding,routingKey 精确匹配),再用 AmqpTemplate#convertAndSend(exchange, routingKey, msg) 完成消息投递,最后使用 @RabbitListener(queues=...) 实现消费者监听与自动消费。配置层面给出 application.yml 的连接参数(host/port/username/password/vhost)原创 2025-12-24 08:34:41 · 1562 阅读 · 2 评论 -
Java-210 Spring AMQP 整合 RabbitMQ:JavaConfig 注解配置、RabbitTemplate 发送/同步接收与坑位速查
Spring AMQP(Spring Rabbit)整合 RabbitMQ 的工程化最小闭环:通过 JavaConfig/注解方式声明 CachingConnectionFactory、RabbitAdmin(AmqpAdmin)、RabbitTemplate(AmqpTemplate)与 Queue Bean,实现默认交换机(amq.default)按 routingKey=队列名的直投发送,以及 receiveAndConvert 的同步拉取验证链路。重点覆盖 ConnectionFactory 包名易原创 2025-12-23 11:11:13 · 2491 阅读 · 13 评论 -
Java-209 Spring AMQP 整合 RabbitMQ 实战:XML 配置直连交换机、RabbitAdmin 自动声明与收发闭环
通过 XML(spring-rabbit.xsd)配置 connection-factory、RabbitTemplate(AmqpTemplate)、RabbitAdmin,并声明 Queue、DirectExchange 与 Binding,实现“启动容器→自动声明资源→发送消息→同步拉取消息”的闭环。重点澄清 RabbitTemplate 的默认交换机(amq.default)路由规则:当调用 convertAndSend(routingKey, msg) 时 routingKey 必须等于队列名原创 2025-12-23 10:59:14 · 1790 阅读 · 3 评论 -
Java-208 RabbitMQ Topic 主题交换器详解:routingKey/bindingKey 通配符与 Java 示例
消息携带 routingKey(dotted-word,长度≤255字节),队列用 bindingKey 绑定到交换器;* 匹配“恰好1个词”,# 匹配“0到多个词”,通配符必须作为独立词出现。结合日志分发与多维分类案例,说明 cron.error、kern.*、*.critical 等绑定如何命中,以及未命中为何会被丢弃。代码层面提供 Java(RabbitMQ Java Client / amqp-client)发布端 basicPublish(exchange, routingKey, ...) 与消原创 2025-12-22 09:31:54 · 1490 阅读 · 2 评论 -
Java-207 RabbitMQ Direct 交换器路由:RoutingKey 精确匹配、队列多绑定与日志分流实战
routingKey 与 bindingKey 的精确匹配机制,并用日志分流场景给出可直接复用的 Java(amqp-client)示例:生产者向 direct_logs 按 severity(info/warn/error)发布消息,消费者通过 queueBind 绑定一个或多个 bindingKey 实现选择性消费。内容覆盖 direct 与 fanout 的边界、队列多重绑定导致“一条消息进多队列”的行为,以及 demo 中匿名临时队列、autoAck=true 的可靠性含义。适合 2025 年原创 2025-12-20 11:48:27 · 1420 阅读 · 5 评论 -
Java-206 RabbitMQ 发布订阅(fanout)Java 实战:推/拉模式、ACK 与绑定排错全梳理
发布订阅(Publish/Subscribe)模型,使用 fanout exchange 实现“广播式”消息分发:生产者通过 exchangeDeclare 创建广播交换机 logs,消费者启动时创建临时队列并 queueBind 绑定到交换机,实现多订阅者各收一份。并对比推模式(basicConsume + DeliverCallback/DefaultConsumer)与拉模式(basicGet)在实时性、吞吐、资源控制与批处理上的取舍,指出 autoAck 可能导致异常场景丢消息,应结合业务选择手动原创 2025-12-20 10:59:36 · 1023 阅读 · 2 评论 -
Java-205 RabbitMQ 工作模式实战:Work Queue 负载均衡 + fanout 发布订阅(手动ACK/QoS/临时队列)
Work Queue 通过同一队列启动多个消费者实现负载均衡,配合 manual ack(basicAck/basicNack) 与 basicQos(prefetch=1) 避免消息“瞬间堆给某个消费者”,提升公平分发与失败可重试能力。发布订阅基于 fanout exchange 广播机制:生产者发到 Exchange,RabbitMQ 将消息复制到所有绑定队列;消费者常用 临时队列(exclusive/auto-delete) 订阅日志/事件流。文中同时说明 未命名交换器(default exchang原创 2025-12-19 10:52:22 · 2334 阅读 · 5 评论 -
Java-204 RabbitMQ Connection/Channel 工作流程:AMQP 发布消费、抓包帧结构与常见坑
AMQP Channel,实现多路复用、资源隔离与更低的连接开销。围绕 Java 客户端常用 API(channel.exchangeDeclare、queueDeclare、basicPublish、basicConsume)解释其与 AMQP 命令(Exchange.Declare、Queue.Declare、Basic.Publish、Basic.Consume)的对应关系,并给出“高并发/高吞吐”下从单 Connection 多 Channel 过渡到多 Connection 分流的配置思路。原创 2025-12-19 09:31:50 · 1218 阅读 · 1 评论 -
Java-203 RabbitMQ 生产者/消费者工作流程拆解:Connection/Channel、默认交换器、ACK
“生产者→交换器→队列→消费者→ACK”全流程做工程化拆解,覆盖 Connection/Channel 复用、Exchange/Queue 声明、BindingKey/RoutingKey 路由、mandatory 回退、手动 ACK 与 QoS(prefetch) 的实操要点,并结合 Java com.rabbitmq:amqp-client 的 Hello World 示例解释“未显式指定 Exchange 时使用默认交换器 ""”的行为:队列会自动绑定到默认交换器,路由键等于队列名即可投递原创 2025-12-18 11:06:44 · 2272 阅读 · 16 评论 -
Java-202 RabbitMQ 生产安装与容器快速启动:Erlang 兼容、RPM 部署与常用命令
RPM 做生产部署,以及使用 Docker Compose 拉起 rabbitmq:3.8.x-management 作为学习环境。重点覆盖 Erlang 运行时(Erlang/OTP 23.x)与 RabbitMQ 3.8/3.9 等版本兼容性检查、依赖包(socat、openssl、logrotate)准备、rabbitmq_management 插件启用、systemctl 启停与开机自启、rabbitmqctl 用户/权限/标签管理(administrator、monitoring、policyma原创 2025-12-18 08:44:35 · 1058 阅读 · 0 评论 -
Java-201 RabbitMQ 消息落盘与队列索引详解:.idx/.rdq、msg_store、GC 与 queue_index_embed_msgs_below
持久化消息与非持久化消息的落盘策略,队列索引 rabbit_queue_index(.idx 段文件、segment_entry_count、索引驻留内存成本),以及 rabbit_msg_store(msg_store_persistent / msg_store_transient)的 .rdq 追加写、file_size_limit、ETS 位置映射。重点解释 queue_index_embed_msgs_below 如何决定“小消息进索引/大消息进 store”,以及垃圾回收(garbage原创 2025-12-17 09:42:43 · 1661 阅读 · 4 评论 -
Java-200 RabbitMQ 架构与 Exchange 路由:fanout/direct/topic/headers
Exchange → Binding → Queue → Consumer 的链路讲清消息如何被投递与为什么会“投递不到”。重点拆解四类交换器:fanout(广播)、direct(精确路由键匹配)、topic(通配符 * / # 的多段路由)、headers(基于消息头的多条件匹配),并给出工程侧高频踩坑与定位手法:路由键不匹配导致丢消息、未绑定队列导致无消费、广播导致消息倍增与吞吐下降、headers 规则复杂导致 CPU 压力。版本层面补齐 2025 的关键变化:经典镜像队列(Classic Mirro原创 2025-12-17 09:22:48 · 1613 阅读 · 1 评论 -
Java-199 JMS Queue/Topic 集群下如何避免重复消费:ActiveMQ 虚拟主题与交付语义梳理
Topic 广播带来的重复消费。先梳理两种模式的消费者语义差异,再把交付方式 NON_PERSISTENT 与 PERSISTENT(默认/可靠性/吞吐权衡)串起来,说明“丢消息、重复投递、堆积、DLQ”常见现象如何与 ACK/重试策略对应。重点给出 ActiveMQ Virtual Topic 的工程化解法:生产者发 VirtualTopic.*,消费者以 Consumer.<Group>.VirtualTopic.* 队列方式实现组内抢占、组间全量;同时对照 JMS 2.0 / Jakarta Mess原创 2025-12-16 13:02:42 · 994 阅读 · 0 评论 -
Java-198 RabbitMQ JMS 模式详解:Queue/Topic、6 类消息与对象模型(JMS 2.0 / Jakarta Messaging 3.1)
JMS(Java Message Service)模式,工程化梳理 Queue 点对点与 Topic 发布订阅两种模型、JMS 消息头/属性/消息体与 6 类消息(Text/Object/Map/Bytes/Stream/Message),并按对象模型串起 ConnectionFactory、Connection、Destination、Session、MessageProducer、MessageConsumer 的职责与使用顺序。重点落在 Session 的单线程语义、事务与消息确认(ACK)对“重复消原创 2025-12-16 12:06:37 · 1468 阅读 · 0 评论 -
Java-197 消息队列应用场景:缓存预热+限流排队+Redis Lua 扣库存+MQ 削峰填谷
“削峰填谷、最终一致性、限流排队、缓存预热、静态化、库存扣减、异步落库、服务隔离与降级”。写路径建议采用 Redis + Lua 脚本做原子预扣库存(防超卖),再通过消息队列(Kafka/RabbitMQ/RocketMQ)把下单、扣库存、支付准备等拆成异步链路,实现快速响应与后端平滑消费;读路径采用多级缓存(CDN/本地缓存/Redis)配合 Cache Aside/定时刷新等策略。示例代码以 Kafka Producer/Consumer 与 Redis Lua 展示关键点;版本以 Spring Boo原创 2025-12-15 08:57:28 · 1680 阅读 · 6 评论 -
Java-196 消息队列选型:RabbitMQ vs RocketMQ vs Kafka
“开源消息队列、可靠性、事务一致性、集群高可用、吞吐与延迟、生态集成、运维复杂度”建立可落地决策框架,并对 RabbitMQ、RocketMQ、Kafka 的适配场景给出工程化边界:RabbitMQ 更擅长业务系统异步解耦与路由控制;RocketMQ 更贴近交易类系统的顺序/事务/延时消息需求;Kafka 更适合作为日志与数据管道的事实标准,服务实时计算与大数据生态。本文明确:性能与 TPS/延迟高度依赖硬件、磁盘、网络与参数配置,2025 年落地应以“压测数据 + 故障演练 + 监控告警”作为最终依据原创 2025-12-14 21:07:49 · 1635 阅读 · 1 评论 -
Java-195 RabbitMQ BlockingQueue 手搓“消息中间件”雏形:生产者-消费者模型到企业级 MQ 差在哪
BlockingQueue(以 ArrayBlockingQueue 为例)实现经典生产者-消费者模式,把“消息中间件/MQ”的核心抽象落到可运行 Demo:生产者写入消息、消费者阻塞拉取、队列作为缓冲区完成异步解耦与削峰。随后基于工程视角拆解为何该实现只能作为学习型“自定义消息中间件雏形”:它缺少消息持久化(WAL/磁盘/副本)、投递与消费确认(ACK/NACK)、重试与死信队列、顺序与幂等、水平扩展与分区路由、流控与背压、监控追踪与安全治理等关键能力。对比 RabbitMQ/Kafka/RocketMQ原创 2025-12-14 20:56:46 · 1141 阅读 · 1 评论 -
Java-194 RabbitMQ 分布式通信怎么选:SOA/Dubbo、微服务 OpenFeign、同步重试与 MQ 异步可靠性落地
SOA(Dubbo + ZooKeeper 的 RPC 注册发现)、微服务(Spring Cloud OpenFeign 的 HTTP 调用)、以及电商“落库后更新索引/静态页”的同步与异步实现。同步方案强调避免递归死循环与阻塞放大,采用有界重试、退避、超时与熔断;异步方案通过任务缓存/消息队列(Kafka/RabbitMQ)解耦主链路,但必须补齐可靠投递、重复消费幂等、失败补偿与死信/重试策略。文中给出 RPC vs HTTP 的工程化选型条件(频次、延迟、接口规模、跨语言)与落地关注点(消息丢失、防重复原创 2025-12-12 11:10:54 · 1265 阅读 · 3 评论 -
Java-193 Spymemcached 深入解析:线程模型、Sharding 与序列化实践全拆解
Spymemcached 的基本能力,包括文本协议与二进制协议支持、基于 NIO 的异步通信模型、Future 与回调两套 API 形式,以及自动重连和 Failover 能力。随后重点分析线程模型(业务线程与 Selector 线程分工)、任务队列与路由策略,尤其是 arrayMod 与 ketama 一致性哈希 Sharding 机制 在扩容、容错场景下的行为与差异。序列化部分则结合对象二进制存储与 GZip 压缩阈值,说明在高并发读写下的性能与内存权衡。文章面向 2025 年仍在使用 Memcache原创 2025-12-12 09:25:01 · 966 阅读 · 0 评论 -
Java-192 深入拆解 EVCache 内部原理:Memcached 架构、Slab 分配与 LRU 过期机制全解析
Memcached 实现分布式内存缓存。围绕 2025 年仍广泛使用的 Memcached 1.6.x 及 EVCache 客户端实现,文章首先回顾 Memcached 的 C/S 架构、基于 libevent 的事件驱动模型和多线程特性,解释其在高并发场景下如何通过内存缓存减轻数据库压力。随后,重点解析 Slab Allocation 内存管理机制:Page、Slab Class、Chunk 的划分方式,增长因子带来的内存利用率与碎片权衡,以及如何通过 stats slabs 观测实际占用。原创 2025-12-11 10:53:25 · 1004 阅读 · 3 评论 -
Java-191 Netflix EVCache Client 接入 Memcached 实战:安装、配置与踩坑记录
Memcached 的完整实践过程,适用于希望在本地或测试环境体验 EVCache 的 Java 工程师。由于 Netflix 未开源 EVCache Server 部分,文章选择 Memcached 1.6.39 作为后端缓存服务,通过源码编译方式安装,并详细解释 -m、-u、-l、-p、-c、-P 等启动参数的含义和推荐配置,帮助读者正确规划内存、并发连接数和监听地址。在客户端侧,文章给出基于 Maven 的 POM 依赖配置,包括 evcache-client 4.139.0、spymemcached原创 2025-12-11 10:27:56 · 1182 阅读 · 0 评论 -
Java-190 EVCache入门:Netflix 级分布式缓存架构、性能指标与多区域部署全解析
Java 微服务 / 云原生场景下,如何合理复用它的设计思路。文章先解释 EVCache 名字里 Ephemeral / Volatile 的含义,以及它如何在 Memcached + Spymemcached 之上构建出可线性扩展的分布式缓存集群,再对 Rend 代理、Memcached 内存缓存、基于 RocksDB 的 Mnemonic SSD 引擎进行分层对比,帮助读者理清“内存热点缓存 / SSD 持久缓存 / 代理层”的职责边界。在架构层面,文章重点拆解单节点部署、多可用区(Multi原创 2025-12-10 09:44:18 · 794 阅读 · 3 评论 -
Java-189 Guava Cache 源码剖析:LocalCache、Segment 与 LoadingCache 工作原理全解析
对 LocalCache、Segment、CacheBuilder、LoadingCache 等核心组件做了系统梳理。首先通过体系类图理清 CacheBuilder、CacheLoader、Cache / LoadingCache 与 LocalCache 之间的职责边界:构建在 Builder,数据结构与并发控制在 LocalCache / Segment,自动加载由 LoadingCache+CacheLoader 负责。随后从源码层面对 LocalCache 的 Segment 结构、Referenc原创 2025-12-10 09:08:20 · 1632 阅读 · 0 评论 -
Java-188 Guava Cache 疑难问题实战:OOM、过期清理、命中率异常和阻塞排查
OOM(内存溢出)、过期是否即时清理、accessQueue/writeQueue 的 LRU 淘汰机制、maximumSize 与 maximumWeight 配置不当导致的命中率异常、以及 CacheLoader/get 使用不当造成的线程阻塞和级联异常,同时拆解了 recordStats 滥用和频繁读取统计值带来的性能回退。文章以 Java 生态为背景,适用于 2025 年常见的 Java 8/11/17 与 Guava Cache 23+ 版本,结合示例代码和监控指标(cache.size原创 2025-12-09 10:42:21 · 1734 阅读 · 3 评论 -
Java-187 Guava Cache 并发参数与 refreshAfterWrite 实战:LoadingCache 动态加载与自定义 LRU 全解析
concurrencyLevel、refreshAfterWrite 与 LoadingCache 动态加载的底层行为,并结合自定义 LinkedHashMap LRU 实现进行横向对比。通过 Segment 分段锁与 segmentFor(hash) 调用路径,读者可以理解 Guava 如何在多线程场景下复用 ConcurrentHashMap 思路实现高并发缓存访问,并在此基础上用 Runtime.getRuntime().availableProcessors() 等方式按 CPU 数量合理设置并发级原创 2025-12-09 09:54:51 · 1159 阅读 · 0 评论
分享