SSE 连接只存在于接受它的那台机器上,浏览器断线后会带着 Last-Event-ID 自动重连;部署成多实例后,推送要跨节点找到连接,重连落到另一台机器时要从共享历史补发,中间代理的缓冲和空闲超时也要处理。
Posts for: #redis
Shopify 把库存预留换回 MySQL,以及 flash sale 防超卖的另外五种做法
Shopify 把 quantity 切成行,让 SKIP LOCKED 各挑各的。顺着这篇往外查,同一个问题另有五种解法:AliSQL 引擎层排队、库存分桶、等候室按速率放行、DynamoDB 撞了重试、Durable Objects 让并发不发生。
Spring Boot 3.5 + Java 25 微服务里,Resilience4j 用在 HTTP、Redis、Kafka、DB 上的边界与最佳实践
结合官方文档、工程资料与技术文章,整理 Spring Boot 3.5 + Java 25 微服务中 Resilience4j 在 HTTP、Redis、Kafka、DB 外部调用上的使用边界与实践建议。
没有 Service Mesh,用 API Gateway 做用户级灰度
没有 Istio/Linkerd 的环境下,Shop Platform 用 Spring Cloud Gateway MVC 的自定义 Predicate + Redis Set + Caffeine 本地缓存,实现按 buyerId 的用户级灰度路由;并讨论配合 OpenFeature 做下游代码路径灰度的演进路径。
电商 Guest-First 购物体验:无需注册也能完整下单
注册门槛往往会抬高结账流失。Shop Platform 现在的做法是 guest JWT 加 Redis 游客购物车(TTL 48 小时),游客订单靠 order_token 追踪,登录后再合并购物车;buyer-portal 和 buyer-app 在这段体验上还有差别。
Spring Boot 3.5 Tracing:接完之后,PII 和采样怎么管
结合一次 Spring Boot 3.5 tracing 接入:自动配置覆盖范围、自定义埋点、Kafka/Redis/DB 组件接入、采样策略、PII 处理,以及用 ArchUnit 约束常见误用。
用 Spring AI + pgvector 给 PSLE 题库做 RAG 检索:新加坡数学 AI 辅导 Phase 2
PSLE 题库接进 Spring AI VectorStore 和 pgvector 之后,RAG 检索能按年级过滤,命中的题目再喂给多 Agent 解题链,重复请求由 Redis 缓存兜住。
Reactive Redis 与 Lettuce SharedLock 的连锁问题:make coverage 卡死排查
集成测试卡在 make coverage 阶段,第一眼看到的是连接池超时,真正让进程挂住的是 Reactive Redis 下 Lettuce SharedLock 的自旋,两层问题得分开修。
Spring Boot 3.5 下的 Redis 用法:Lettuce 连接池、Redisson 锁、Bloom Filter 与 Lua 加载
Redis 在 Shop Platform 里同时承担缓存、限流、分布式锁、Bloom Filter 和 Lua 原子操作,对应要配的是 Lettuce 连接池、序列化策略、Redisson 锁、Bloom Filter 自动配置和 Lua 脚本加载方式。
How a Performance Optimization Caused Cascading Redis Timeouts in Spring WebFlux
A seemingly harmless removal of publishOn(Schedulers.boundedElastic()) led to cascading Redis timeouts in production. This post explains how Spring’s @Cacheable blocks the Netty event loop when used with RedisCacheManager, and why BlockHound failed to catch it.