- 博客(15)
- 收藏
- 关注
原创 服务保护:线程隔离(线程池隔离、信号量隔离)、滑动窗口计数算法、漏桶算法、令牌桶算法
摘要:服务稳定性保障核心技术包括:1)线程隔离(线程池/信号量隔离)防止故障扩散;2)流量控制算法(滑动窗口计数精确保障限流,漏桶算法平稳控制速率,令牌桶算法应对突发流量);3)分布式ID生成(雪花算法)。Sentinel与Gateway限流实现差异明显:Gateway采用Redis令牌桶,Sentinel则综合运用滑动窗口(默认)、漏桶(排队)和令牌桶(热点参数)多种算法,形成多维度保护机制。
2025-11-19 18:56:10
330
原创 注册中心:环境隔离、分级模型、Eureka与Nacos
摘要:Eureka与Nacos在服务注册与发现方面具备基础共性,但Nacos在功能扩展性和治理粒度上优势显著。Eureka采用纯AP模型,专注服务发现;Nacos支持AP/CP动态切换,集成配置管理、服务路由等能力,并通过Namespace-Group五级模型实现精细治理。Nacos的长连接推送、主动健康检查等机制,使其在实时性和可靠性上更优,适用于复杂微服务场景,而Eureka更适合轻量级AP架构。二者的选择需权衡一致性需求、功能完备性与运维复杂度。
2025-11-19 18:52:45
732
原创 分布式事务:CAP和BASE、AT模式脏读问题、TCC模式、最大努力通知
分布式事务通过CAP定理与BASE理论平衡一致性与可用性:CAP定理要求选择CP或AP模式,BASE理论则通过基本可用、软状态和最终一致性实现妥协。AT模式易引发脏写问题,需搭配悲观锁/乐观锁/全局锁解决;TCC模式通过Try-Confirm-Cancel三阶段保障强一致,适合核心业务;最大努力通知模式则适用于非核心业务的最终一致场景。不同锁机制在并发性能、实现复杂度方面各具特点,需根据业务需求选择适配方案。
2025-11-18 14:36:28
416
原创 redis缓存:一致性,穿透,雪崩,击穿
Redis 缓存面临四大核心问题:1)缓存一致性,可通过延时双删和TTL保障;2)缓存穿透,建议布隆过滤器与空对象缓存组合防护;3)缓存雪崩,需错开过期时间并部署高可用架构;4)缓存击穿,对热点数据采用永不过期或互斥锁策略。针对不同场景的读写特性和一致性要求,应选择Cache-Aside模式、异步更新等适配方案,通过多重防护机制确保缓存系统的稳定性和数据准确性。
2025-11-18 14:34:06
709
原创 redis内存回收机制:过期key和内存淘汰策略
Redis内存回收机制通过多层策略协同工作,包括过期Key的三层清理(惰性删除+定期快慢模式+淘汰前清理)和8种内存淘汰策略(含LFU深度优化)。LFU采用频率统计和衰减机制,比LRU更精准识别冷数据。配置需根据业务场景调整,如高频缓存推荐volatile-lfu,全缓存用allkeys-lfu,关键数据存储用noeviction。监控指标应关注内存使用、淘汰Key数和缓存命中率。常见误区包括认为过期Key会立即删除、淘汰策略只删过期Key等。整体实现CPU开销、内存利用和数据可用性的平衡。
2025-11-17 15:19:43
455
6
原创 redis如何判断key在哪个实例?
Redis中判断key所在实例的方法取决于部署架构:单实例情况下直接使用EXISTS命令即可;集群环境下通过哈希槽定位。计算key的哈希槽(CRC16(key)%16384),再使用CLUSTER SLOTS查找槽对应主节点。编程语言可通过客户端库实现同样逻辑。注意哈希标签机制和槽迁移时的动态变化。
2025-11-17 15:15:44
231
原创 Elasticsearch笔记
摘要:本文介绍了在Java中使用Elasticsearch的主要方法,重点讲解了通过Java High Level REST Client进行交互。内容包括环境准备(Maven依赖配置、客户端实例创建)和核心CRUD操作示例(如索引创建与删除)。文中提供了完整的代码示例,并强调了版本匹配、线程安全等最佳实践,为Java开发者提供了Elasticsearch集成的实用指南。(149字)
2025-11-16 06:50:29
693
原创 消费者确认机制
RabbitMQ提供两种消费者确认机制:自动确认(AUTO)和手动确认(MANUAL)。自动确认模式会在消息接收后立即删除,效率高但可靠性差;手动确认需显式调用basicAck()或basicNack(),确保消息处理完成后才删除,适合核心业务。SpringAMQP通过配置AcknowledgeMode和Channel API实现这两种模式,手动确认时需注意避免消息无限重试和队列阻塞问题。开发者应根据业务需求选择合适的确认机制,平衡可靠性和性能。
2025-11-16 06:49:59
609
原创 RabbitMQ笔记
本文介绍了RabbitMQ在Java/Spring Boot应用中的核心使用方式。主要内容包括:1) Maven核心依赖配置;2) 关键application.yml参数设置;3) 交换机、队列和绑定的声明方式;4) 生产者(RabbitTemplate)和消费者(@RabbitListener)的实现示例;5) 消息可靠性保障机制;6) 常见工作模式简介。文章提供了完整的代码示例,涵盖从基础配置到高级特性的实现,并指出可通过15672端口访问管理界面。适用于需要快速掌握RabbitMQ在Spring Bo
2025-11-15 03:57:08
313
原创 解决消息幂等方案
消息幂等性可保障重复消息处理结果一致,避免数据异常。其源于生产者重试、消费者未提交位点等分布式系统不可靠场景,核心思路是 “唯一标识 + 去重存储”。常见方案有:数据库唯一索引(高可靠)、Redis 原子操作(高并发)、业务自身幂等设计(最优)及中间件去重。实践中需确保 ID 唯一、操作原子性,可依并发量与可靠性要求选适配方案。
2025-11-14 21:26:07
656
原创 SpringAMQP实现发送者确认
在RabbitMQ中,发送者确认(Publisher Confirm)机制用于确保生产者发送的消息已被交换机接收,或已被队列持久化,避免消息丢失。SpringAMQP通过封装RabbitMQ的原生确认机制,提供了更简洁的实现方式。
2025-11-14 21:18:25
326
原创 解决Seata容器连MySQL报错Communications link failure!
Seata容器连接MySQL时出现通信失败,排查发现是端口配置错误:MySQL启动用`-p 3308:3306`做主机-容器端口映射(主机3308对应容器3306),但Seata连接URL却写了`mysql:3308`(错用主机端口)。
2025-10-15 18:43:57
492
原创 Nginx笔记
摘要:本文介绍了反向代理和正向代理的区别,反向代理可隐藏真实服务器IP并进行负载均衡。通过增加服务器数量和动静分离(动态/静态页面由不同服务器处理)来提升性能。文章详细说明了Nginx的常用命令、配置文件结构(包括全局块、events块和http块)以及负载均衡策略(轮询、权重、IP哈希等)。同时提供了Tomcat服务器安装、启动和Nginx反向代理配置的具体步骤。
2025-03-21 13:04:23
666
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅