嘉兴城乡建设厅网站,58同城机械加工订单,建设一个电商网站的流程,怎样用jsp做网站 新手教程今天简单介绍一下Eureka server 的缓存机制吧✌️✌️✌️
一、先来个小剧场#xff1a;服务发现的拖延症
想象你是个外卖小哥#xff08;客户端#xff09;#xff0c;每次接单都要打电话问调度中心#xff08;Eureka Server#xff09;#xff1a;“现在…今天简单介绍一下Eureka server 的缓存机制吧✌️✌️✌️
一、先来个小剧场服务发现的拖延症
想象你是个外卖小哥客户端每次接单都要打电话问调度中心Eureka Server“现在哪个餐馆服务还开着啊” 如果每次都打电话问调度中心会被烦死。于是Eureka说“别老问了我给你个小本本缓存每30秒自己更新一次吧”
这就是Eureka缓存的初心——用空间换时间用缓存换太平。 二、缓存藏宝图客户端和服务端都有小金库
1. 客户端的小抽屉应用层缓存
// 这就是你代码里常见的那个小本本
ListServiceInstance instances discoveryClient.getInstances(PAYMENT-SERVICE);第一次访问老老实实去Eureka Server查通讯录 后续请求直接翻自己的小本本默认每30秒刷新一次⚠️ 小坑如果这时候有新餐馆开张你得等30秒后才知道
2. 客户端的保险箱本地缓存 就算Eureka Server挂了还能用上次记住的餐馆列表⏳ 默认存活时间30分钟就像冷冻食品的保质期
3. 服务端的VIP包厢响应缓存 会把查询结果存在内存里默认180秒 下次同样查询直接给缓存快得像闪电 三、缓存套娃Eureka的俄罗斯娃娃结构 第一层注册表大仓库读写分离 写操作新餐馆注册直接进小黑屋写缓存读操作从明亮的展示厅读缓存拿数据 第二层定时更新的展示柜 每30秒把小黑屋里的新数据搬到展示厅默认值像商场每天补货一样规律 第三层客户端的小抄本 每家外卖站客户端都有自己的进货清单定期去总店服务端核对最新清单 四、当缓存变成双刃剑那些年我们踩过的坑
场景1新餐馆开张没人知 现象上线新服务后其他服务过会儿才看到️ 解法调小client.refresh.interval别小于30秒
场景2关店告示贴得慢 现象服务挂了但客户端还在调用️ 防御启用健康检查 调小server.eviction-interval-timer-in-ms
场景3缓存雪崩
❄️ 风险所有客户端同时刷新缓存把服务端压垮 妙招设置随机抖动jitter让刷新时间错开 五、手把手教你玩转缓存开关
# 客户端配置让你掌控刷新节奏
eureka:client:registry-fetch-interval-seconds: 30 # 刷新间隔disable-delta: false # 是否用增量更新# 服务端配置控制缓存寿命
eureka:server:response-cache-update-interval-ms: 30000 # 响应缓存更新间隔六、缓存冷知识你可能不知道的彩蛋
紧急逃生口通过/eureka/apps接口能直接看到原始数据记忆清除术调用DiscoveryClient.refresh()强制刷新时间魔法服务端的注册表其实是三层时间戳结构注册时间、续约时间、心跳时间 最后缓存机制的源码分析下一篇出感谢老铁们的一键三连收徒ing