- 博客(107)
- 收藏
- 关注
原创 轻量级 Spring 监测工具——Spring Insight 发布了
这个项目最早只是一篇「还没写代码」的画饼——《一个还没写代码的开源项目,我先来“画个饼”:Spring Insight》。从画饼到0.1.0能装、能跑、能看见调用链,再到0.2.0把数据和门口补上、0.3.0把更多出站和可选告警接进来,中间改过不少需求,也踩过一堆土坑:GPG 签名、PowerShell 拆坏 Maven 参数、Docker 镜像上传……有些坑后来都写进了文档。
2026-09-20 10:38:52
185
原创 前端性能优化实战:用 Sentry + Web Vitals 把 LCP 从 5s 压到 1.5s
前面我们把 Vue 3 项目从代码推到了线上,用 Docker + Nginx + CI/CD 搭建了完整的部署链路。但「能上线」不等于「好用」。用户打开页面要等 5 秒、点按钮没反应、布局突然跳动——这些体验问题会直接导致用户流失。本篇深入前端性能优化的核心指标(LCP / INP / CLS),从「怎么测」到「怎么优化」再到「怎么持续监控」,给你一套完整的实战方案。关注点内容收益性能指标LCP / INP / CLS 定义与测量知道「慢在哪」代码分割路由懒加载 + 组件动态导入。
2026-10-17 16:22:21
155
原创 前端项目部署全流程:Docker + Nginx + CI/CD 实战
将 Vue 3 项目部署上线全流程实战:编写 Dockerfile 与 docker-compose.yml 实现容器化,配置 Nginx 反向代理与静态资源服务,接入 GitHub Actions 完成 CI/CD 自动化构建发布,从本地到生产环境一步到位,配套脚本开箱即用。
2026-10-17 16:04:41
273
原创 如何让 AI 解释失败也不拖垮控制台
Spring Insight 通过 gateOrNull、completeExplain 与统一降级响应机制,实现 AI 解释能力的柔性降级:开关关闭、配置缺失或模型返回草稿时,仍返回 200 状态码并标记 degraded=true,保障主流程不中断。关键在于“解释失败也不影响系统可用”,前端仅依赖 degraded 字段展示提示,而非状态码。代码层面采用结构化解析容错与 Java 14 箭头语法提升可读性。项目轻量易集成,欢迎关注 GitHub。
2026-10-16 19:00:59
133
原创 如何给 AI 调用做滑动窗口限流
Deque是双端队列:头上删过期,尾上追加本次。LinkedList也能干这事,但告警线程和用户点「解释」可能同时进来,普通LinkedList没有并发约定。从 Java 7 就有,无界、无锁(CAS),peekFirstpollFirstaddLast都是线程安全的单次操作。这里不需要那种「队列满了就等」——限流失败要立刻返回,让告警走只推指标的分支。同一套结构还用在:最近 100 条 AI 调用记录,addFirst新的,超了removeLast挤掉最旧的。
2026-10-16 09:29:26
221
原创 Spring Insight:跨服务调用链路是怎么串起来的?
分布式系统排障时,最怕的是:我明明调了,可观测里却只看到某个下游接口。业务侧加一个 Starter,旁边起一个 insight-server,用 Span + W3C把一次请求串成一条 Trace。本文围绕一条真实链路(经网关访问)。
2026-10-15 16:43:26
139
原创 从零搭建 Vue 3 工程化项目:Vite + TypeScript + Pinia + Element Plus 实战
在中,我们把前端技术栈拆成了 12 个模块,解决了「有哪些、各管什么」的问题。但真正动手做项目时,难点往往不是「知不知道 Vite、Pinia」,而是「先装什么、目录怎么分、规范怎么落地、请求怎么封装」。本篇就沿着第 1 篇的脉络,用 Vue 3 技术栈(Vite + TypeScript + Pinia + Vue Router + Element Plus)串一条完整的落地链路。读完你应该能独立搭出一个能开发、能规范、能构建的项目骨架,而不是停留在会用某个 API。关注点选型理由构建工具。
2026-10-14 22:01:57
945
原创 收藏向 | 2026 前端开发知识体系:React、Vue、Next.js、Nuxt 全解析
前端开发早就不再是"写写页面、调调样式"那么简单的事了。今天的一名前端工程师,需要围绕语言基础、框架生态、构建工程化、路由与数据、状态管理、样式与 UI、测试、性能、安全、部署这一整条链路建立起完整的知识体系。技术更新很快,但底层结构其实相对稳定:HTML 管结构、CSS 管表现、JavaScript 管交互、TypeScript 管类型安全;框架负责把 UI 组件化,工程化工具负责把代码变成可运行的产物,测试和性能负责保证质量。本文的目的是做。下面正式开始。语言基础决定了你能理解到什么深度。
2026-10-13 18:44:33
398
原创 Redis 完结篇——Redis 热点问题在 Spring Boot 项目中实战
前面 Redis 系列文章,为了方便和使用 Redis 命令,我用的是 redis-cli 进行实操,SET、GET、Lua、Bloom、HOTKEYS,一条条敲过去,先练练手感。Redis 能当缓存、队列、锁、限流器、甚至向量检索,但每一个都要记得:它是单线程执行的内存服务,大 Key、热 Key、慢脚本、错误的过期策略,都会把整站拖进同一条阻塞队列。应该已经没了,再 GET 接口,会回源库、把 3900 写回去。左侧七个菜单:商品与缓存、穿透、击穿、雪崩、超卖、限流、大 Key / 热 Key。
2026-10-13 16:42:06
334
原创 常见的 Redis 面试题
下期预告:Redis 完结篇,把线上真正扎手的那些问题放到项目路径里:热点商品、大 Hash、缓存和 DB 打架、瞬间打满连接。写:先更新 DB,再删 Redis 的 Key(让下次读回填),不要先改缓存再改库——库失败了缓存就是脏的。:有人访问这个 Key,发现 TTL 过了,当场删,返回空。抽不中的,继续等下一次,或等被访问时惰性删。面试里别说“生产必须双开”,缓存丢了能回源 DB,可以只开 RDB,甚至关持久化换性能。加节点、迁数据,搬的是槽,不是“把某个前缀的 Key 手动拷过去”。
2026-10-12 18:00:09
342
原创 Redis Streams——有确认、能回溯的消息队列
还记得 List 做队列吗?BRPOP一把把消息拿走,消费者这时候挂了,这条就没了。Streams 不这么干。
2026-10-10 17:18:06
207
原创 Redis 事务与 Pipeline:批量操作的正确姿势
Lettuce、Redisson 都有对应的 pipeline / batch API,思路一样:攒命令、一次 flush、再读回复。延迟 1ms 的机房里,1000 条命令从约 1 秒变成几毫秒,这才是 Pipeline 存在的理由。Redis 把这些排除在事务模型之外——内存数据库,命令要么能执行,要么是你调用姿势不对。Jedis、Lettuce、go-redis 里的事务 API,底层都是这么干的。执行期间,别的客户端的命令插不进来。的手感:Pipeline 是给程序用的,不是给手敲用的。
2026-10-09 17:04:21
301
原创 Redis Lua 脚本与 Redis Functions:服务端逻辑
加锁、解锁、续期三条,缺一不可。Key 名如果藏在 ARGV 里、或者在脚本里拼接出来,集群就傻了,单机现在不报错,以后上集群会咬你一口。:Redis 7+ 的生产代码,限流、解锁、扣库存这类会反复调用、还不能丢的逻辑,用 Functions。不是 Redis 闲得慌,集群模式下,Redis 靠你声明的 Key 算槽位,决定这条命令去哪个节点。每次都把整段脚本发到 Redis,脚本一长、调用一频繁,带宽就浪费在重复的源码上。这就是官方说的原子性,语义上跟事务差不多:要么这串逻辑还没开始,要么已经全部跑完。
2026-10-08 16:46:07
134
原创 Spring Insight 里如何把 Span 画成瀑布时间线
Spring Insight 是给 Spring Boot / Spring Cloud 用的轻量监测工具:业务服务加上报,旁边跑一个,控制台就能看服务拓扑和链路详情。仓库在这:🔗GitHub用得上的话欢迎 Star,遇到问题直接开 Issue。
2026-09-18 11:29:11
210
原创 Spring Insight 里如何把 Span 收成一条链路
一次跨服务调用会留下多条 Span:Gateway 进站、Gateway 出站、order 进站、order 调 user、order 调 product……它们共享同一个traceId把树串起来。列表如果按 Span 展示,刷新一次能刷出几十上百行,其中很多是同一次下单。打开页面的人想找的通常是:刚才那次请求慢不慢、有没有 ERROR、入口是哪个服务。字段含义traceId这一次请求的 ID根 Span 所在服务,当作入口根 Span 的操作名startTime这棵树里最早的开始时间。
2026-09-17 18:26:06
338
原创 Spring Insight中的监控链路如何画出服务拓扑
如果你对轻量监测、Spring Boot Starter、链路埋点感兴趣,欢迎看看这个还在打磨的小项目:🔗GitHub当前形态很朴素:业务服务加,旁边单独跑看拓扑和链路。能力有限,代码也还糙,适合当练手和对照。你的 Star 是对我最大的鼓励。
2026-09-10 15:29:58
199
原创 Spring Insight 里如何对 Span 进行清洗
如果你对轻量监测、Spring Boot Starter、链路埋点感兴趣,欢迎看看这个还在打磨的小项目:🔗GitHub当前形态很朴素:业务服务加,旁边单独跑看拓扑和链路。能力有限,代码也还糙,适合当练手和对照。你的 Star 是对我最大的鼓励。
2026-09-09 21:01:11
81
原创 Spring Insight 里收到的 Span 是怎么存下来的
如果你对轻量监测、Spring Boot Starter、链路埋点感兴趣,欢迎看看这个还在打磨的小项目:🔗GitHub当前形态很朴素:业务服务加,旁边单独跑看拓扑和链路。能力有限,代码也还糙,适合当练手和对照。你的 Star 是对我最大的鼓励。
2026-09-08 17:07:39
147
原创 Spring Insight 里上报 Span 为什么用 JDK HttpClient 而不是 RestTemplate
如果你对轻量监测、Spring Boot Starter、链路埋点感兴趣,欢迎看看这个还在打磨的小项目:🔗GitHub当前形态很朴素:业务服务加,旁边单独跑看拓扑和链路。能力有限,代码也还糙,适合当练手和对照。你的 Star 是对我最大的鼓励。
2026-09-07 19:14:54
156
原创 BlockingQueue:异步批量上报
如果你对「轻量监测 / Spring Boot Starter / 链路埋点」感兴趣,欢迎看看这个还在打磨的小项目:🔗GitHub当前形态很朴素:业务服务加,旁边单独跑看拓扑和链路。能力有限,代码也还糙,适合当练手和对照。你的 Star 是对我最大的鼓励。
2026-09-07 15:58:03
253
原创 BeanPostProcessor:包装 Feign Client
如果你对「轻量监测 / Spring Boot Starter / 链路埋点」感兴趣,欢迎看看这个还在打磨的小项目:🔗GitHub当前形态很朴素:业务服务加,旁边单独跑看拓扑和链路。能力有限,代码也还糙,适合当练手和对照。你的 Star 是对我最大的鼓励。
2026-09-03 11:25:02
222
原创 HandlerInterceptor 和 WebFilter:两套 HTTP 请求拦截
如果你对「轻量监测 / Spring Boot Starter / 链路埋点」感兴趣,欢迎看看这个还在打磨的小项目:🔗GitHub当前形态很朴素:业务服务加,旁边单独跑看拓扑和链路。能力有限,代码也还糙,适合当练手和对照。你的 Star 是对我最大的鼓励。
2026-09-02 19:27:00
343
原创 DeferredImportSelector:按条件导入配置类
如果你对「轻量监测 / Spring Boot Starter / 链路埋点」感兴趣,欢迎看看这个还在打磨的小项目:🔗GitHub当前形态很朴素:业务服务加,旁边单独跑看拓扑和链路。能力有限,代码也还糙,适合当练手和对照。你的 Star 是对我最大的鼓励。🌍 微信公众号:「苏渡苇」⭐ 掘金 / 知乎 / CSDN:「苏渡苇」
2026-08-27 17:11:22
302
原创 加个依赖就生效?一行搞定 Spring Boot Starter 自动装配
如果你对「轻量监测 / Spring Boot Starter / 链路埋点」感兴趣,欢迎看看这个还在打磨的小项目:🔗GitHub当前形态很朴素:业务服务加,旁边单独跑看拓扑和链路。能力有限,代码也还糙,适合当练手和对照。你的 Star 是对我最大的鼓励。🌍 微信公众号:「苏渡苇」⭐ 掘金 / 知乎 / CSDN:「苏渡苇」
2026-08-25 19:13:52
225
原创 Redis 性能优化——内存、慢查询、Big Key 与 Hot Key
String 类型值 > 10 KBHash / Set / List / Sorted Set 元素个数 > 5000某个 Key 被大量请求访问,比如爆款商品信息、热门微博、秒杀库存。
2026-06-13 11:27:51
419
原创 Redis 核心数据结构(四)——Set 与 Sorted Set,去重与排名神器
集合帮你自动去重,有序集合还能帮你排个名——排行榜、共同好友、标签系统,Set / Sorted Set 一把搞定!
2026-06-01 10:07:58
547
原创 分布式事务解决方案之 Seata(二):Seata AT 模式
对应模块 15-seata-at;Seata Server 部署见 14-seata-deploy。通过上一篇文章对分布式事务解决方案的介绍,我们已经对两阶段提交TCC及基于MQ的最终一致性有所了解了。Seata提供了ATTCCSAGA和XA事务模式,他是一站式的分布式解决方案。本文将先介绍Seata的AT模式,他是基于两阶段提交的演变。Seata AT 模式是一种非侵入式的分布式事务解决方案,在 AT 模式下,我们只需关注自己的业务 SQL业务 SQL。
2026-06-01 09:53:27
545
原创 Seata 番外篇:使用 docker-compose 部署 Seata Server(TC)及 K8S 部署 Seata 高可用
本文安装的 Seata Server 是以 Nacos 为注册中心,DB 为数据存储的模式。按照本文的安装步骤安装,你大概率不会踩坑,因为坑已经被我踩过了:)
2026-05-31 17:22:38
238
原创 分布式事务解决方案之 Seata(一):分布式事务的常见解决方案及 Seata 简介
支付回调就是类似的原理,支付接口都需要一个回调地址,在支付成功后,支付接口提供方会将支付结果返回到我们的回调地址,如果没有收到支付成功的通知,支付接口提供方会重复调用我们的接口,直到通知指定次数后不再通知。比如,Jack 向 Rose 转钱,首先需要将 Jack 和 Rose 的账户锁住,即将账户资源预留出来,然后进行转账操作,对双方的账户进行加减操作,如果操作失败,则解冻账户,无事发生。)来保证自己的事务处理,但是在分布式环境下,涉及的就是多个不同的服务不同的数据库,单一的事务处理是无法满足此要求的。
2026-05-31 16:27:55
185
原创 Spring Cloud Sleuth 整合 Zipkin 进行服务链路追踪
业务要求整个下单的请求要在 1s 内完成,测试发现请求下单接口耗时超过 2s ,这时我们就需要去定位发现是调用链路上的哪个环节耗时异常,进而去解决问题。,如果请求量比较大,这种方式其实性能是比较低的,一般情况下我们都是通过消息中间件来发送,比如。在一个微服务系统架构中,一个完整的请求可能涉及到多个微服务的调用,这个调用形成一个链路。可以对每个微服务进行链路追踪,从而帮助我们分析服务间调用关系以及调用耗费的时间。我们可以直观的查看调用链路,并且可以方便的看出服务之间的调用关系以及调用耗时。
2026-05-31 15:46:22
361
原创 Spring Cloud Gateway 网关限流
网关 Spring Cloud Gateway - API 调用的组织者已经通过案例实现了通过网关调用服务 API,并已经了解了Gatewayroutespredicatesfilters。这几个核心概念串起来就是Gateway的执行流程:客户端发请求,通过断言predicates进行匹配,若匹配上了则请求就会被发送到网关处理程序,并执行特定的请求过滤器链fliters。提供了多种断言predicate工厂和过滤器filter工厂,也可以自定义断言工厂和过滤器工厂。使用的过滤器工厂基于Redis。
2026-05-29 10:45:36
751
原创 网关 Spring Cloud Gateway - API 调用的组织者
本文介绍了API网关在微服务架构中的核心作用,通过大禹治水的比喻形象说明网关如何统一管理服务请求流向。重点解析了Spring Cloud Gateway的核心组件:Route(路由规则)、Predicate(匹配条件)、Filter(请求过滤器),并阐述了其工作原理——通过断言匹配路由后,执行过滤器链实现请求转发。文章提供了实战案例,演示如何搭建网关服务并配置路由规则(如将/user/**请求转发至用户服务),验证了网关作为流量枢纽的能力。通过网关可有效解决微服务系统API调用的复杂度问题,实现请求的集中管
2026-05-29 10:32:23
204
原创 强强联合:OpenFeign 整合 Sentinel
微服务间的远程接口调用:OpenFeign 的使用当项目中使用了OpenFeign后,可以很方便的进行远程服务调用,现在有个问题,假如远程服务出现故障了,调不了远程的接口,这边又着急等着返回结果,怎么办呢?当然是使用服务降级,本篇就使用OpenFeign进行远程调用,并结合Sentinel对出现的异常、故障等问题进行服务降级。
2026-05-28 18:29:54
688
原创 微服务间的远程接口调用:OpenFeign 的使用
OpenFeign是一种声明式、模板化的 HTTP 客户端。在 Spring Cloud 中使用 OpenFeign ,可以做到使用 HTTP 请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问 HTTP 请求。其用法就是编写一个接口,在接口上添加注解。如此就能轻而易举的调用远程服务。有如此强大的东西,我们肯定不能放过使用的机会,就像有时你有特殊的要求必须拉别的女孩的手,而此时有个中间人能帮你实现这个愿望,你拉别的女孩子的手就像拉自己女朋友的手一样方便!
2026-05-28 12:01:08
361
原创 Sentinel限流降级如何优雅的返回?SentinelResource注解之blockHander和fallback
本篇文章填上次将 Sentinel 熔断限流规则持久化到 Nacos 配置中心提到的一个问题:之前我们访问接口进行限流或者降级后,直接返回500错误,或者提示flow limit之类的东西:这样显得很不优雅,透漏着不专业,那么进行限流或者降级后该如何进行优雅的返回呢?本章从 Sentinel 的热点参数限流着手,使用注解的和fallback来实现限流后优雅的返回。
2026-05-27 11:00:43
561
原创 Spring Cloud Alibaba:将 Sentinel 熔断限流规则持久化到 Nacos 配置中心
两篇关于如何使用 Sentinel 的介绍,我们已经知道如何从 Sentinel 控制台配置限流、熔断规则,但是实际操作的过程中你会发现,每次项目重启后,配置的限流规则都没有了!这是因为,在上配置的规则只存在缓存中,当项目重启,这些规则自然就消失了。实际生产环境中,我们是不允许这种情况存在的,那么如何进行 Sentinel 配置规则的持久化呢?Sentinel 提供多种不同的数据源来持久化规则配置,包括FileRedisNacosZooKeeper等。前面我已经整过Nacos数据持久化。
2026-05-27 10:42:18
430
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅