老废物乐园

Spring Cache 抽象与 Redis 集成实践

同事的问题:我加了 @Cacheable,为什么没生效 上周三下午,组里的小杨问我:"我在方法上加了 @Cacheable,压了 100 次,数据库慢查询日志里还是 100 条,Redis 里也看不到 key,是不是缓存没配好?" 我过去看了一眼他的代码: @Service public class

Administrator Administrator 发布于 2021-07-08

一次 Bean 创建死循环:@PostConstruct 里的远程调用

现象:发布到 K8s 之后 Pod 一直在重启 周一上午发了个小版本,只改了几行。结果 K8s 里这个 Pod 一直 CrashLoopBackOff,被杀了五次。 $ kubectl get pod -n prod | grep order order-service-7d9f8b6c5-x2m4

Administrator Administrator 发布于 2021-06-22

Spring Boot 2.4 配置文件变更与迁移注意

升级到 2.4,服务起不来了 6 月初,把一个服务从 Spring Boot 2.3.7 升到 2.4.6。改完 pom 里的版本号,启动,直接炸: *************************** APPLICATION FAILED TO START *******************

Administrator Administrator 发布于 2021-06-05

Spring Cloud Gateway 网关搭建与过滤器链

新同事接手网关,问我的第一个问题:Predicate 和 Filter 到底啥区别 上周把网关交给组里另一个同学维护。他看了半天配置问我:predicates 和 filters 都是配在 route 下面的,凭什么一个叫断言、一个叫过滤器,它们分别什么时候执行? 这个问题挺好,我当年也绕了一阵。这

Administrator Administrator 发布于 2020-06-11

Spring Cloud Netflix 停更之后,我们迁到了 Alibaba 全家桶

周会上定的事:6 周内把 Netflix 那一套换成 Alibaba 3 月底的架构周会,我把一张图投到了屏幕上:Spring Cloud Netflix 的组件里,Hystrix、Zuul 1.x、Ribbon、Archaius、Turbine 五个都挂着"maintenance mode"或者干

Administrator Administrator 发布于 2020-05-08

Nacos 注册中心与配置中心落地实践

改了 Nacos 配置页面,服务怎么没反应 "我把限流阈值从 500 改成 200 了,Nacos 上点了发布,等了五分钟还是没生效。" 这是组内被问过最多的一个问题,我自己也卡过。Nacos 同时做注册中心和配置中心,但这两块的机制完全不同——注册是实时的,配置热更新是有条件的。这篇把我们落地 N

Administrator Administrator 发布于 2020-04-16

Seata 分布式事务 AT 模式踩坑记录

Seata AT 模式上线两周,我们踩了七个坑 订单库拆出去之后,"创建订单"和"扣减库存"就不再同一个数据库事务里了。以前靠一个 @Transactional 保证的事,现在要跨两个服务两个库。 3 月底到 4 月,我用 Seata 1.1.0 把这条链路补上了。这篇记一下选型过程、AT 模式到底

Administrator Administrator 发布于 2020-04-15

Sentinel 限流熔断实战:从 Hystrix 迁移的对比

压测时 Hystrix 的线程切换吃掉 1.4 毫秒,我们换成了 Sentinel 3 月做秒杀压测,QPS 压到 3000 的时候就上不去了。抓了一次火焰图,发现热点不在业务代码,在 HystrixThreadPool 的线程调度上。 我们订单服务上挂了 11 个 @HystrixCommand,

Administrator Administrator 发布于 2020-03-29

Spring Bean 作用域与 prototype 注入失效问题

标了 @Scope("prototype"),为什么拿到的还是同一个对象 3 月上旬,同事遇到个怪事。他写了个导出 Excel 的任务类,因为里面有状态(当前行号、样式缓存),标成了多例: @Component @Scope("prototype") public class ExcelExport

Administrator Administrator 发布于 2020-03-13

OpenFeign 调用超时与重试的正确配置

群里有人问:ReadTimeout 配了 5 秒,为什么 1 秒就超时 那天下午,新来的同事在企业微信群里贴了一段配置和一段报错: ribbon: ConnectTimeout: 3000 ReadTimeout: 5000 com.netflix.hystrix.exception.Hy

Administrator Administrator 发布于 2020-01-29