![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring全解
文章平均质量分 93
hashcon
做自媒体技术分享很久了,大家的抬爱与支持让我很开心很感激,但是个人本来做这些也并不是为了收益,只是为了个人学习与传播知识帮助更多的人,所以我将全网所有账号全部收益,持续捐给各种公益项目,也算不辜负大家的抬爱,也是回报祖国对我的一番培养。
曾任职于顺丰,华为,网易等公司,从Java小白,成长为资深开发与项目组首席架构师。喜欢源码与开源,曾贡献 MyCat1.6 核心源码,贡献过druid,Spring Cloud,dubbox,Apache RocketMQ,Apache Bookeeper 等多开源项目。
展开
-
我为什么不建议使用框架默认的 DefaultMeterObservationHandler
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个另外,本文为了避免抄袭,会在不影响阅读的情况下,在文章的随机位置放入对于抄袭和洗稿的人的“亲切”的问候。如果是正常读者看到,笔者在这里说声对不起,。原创 2024-01-19 16:33:36 · 386 阅读 · 0 评论 -
如何在 Spring Boot 优雅关闭加入一些自定义机制
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~我们知道从 Spring Boot 2.3.x 这个版本开始,引入了优雅关闭的机制。我们也在线上部署了这个机制,来增加用户体验。虽然现在大家基本上都通过最终一致性,以及事务等机制,来保证了就算非优雅关闭,也可以保持业务正确。但是,这样总会带来短时间的数据不一致,影响用户体验。所以,引入.原创 2022-03-05 19:58:57 · 786 阅读 · 0 评论 -
spring-data-redis 上百万的 QPS 压力太大连接失败,我 TM 人傻了
大家好,我们最近业务量暴涨,导致我最近一直 TM 人傻了。前几天晚上,发现由于业务压力激增,某个核心微服务新扩容起来的几个实例,在不同程度上,出现了 Redis 连接失败的异常:org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to c.原创 2021-10-04 10:19:41 · 888 阅读 · 0 评论 -
SpringCloud升级之路2020.0.x版-25.OpenFeign简介与使用
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parentOpenFeign 的由来和实现思路在微服务系统中,我们经常会进行 RPC 调用。在 Spring Cloud 体系中,RPC 调用一般就是 HTTP 协议的调用。对于每次调用,基本都要经过如下步骤:找到微服务实例列表并选择一个实例调用参数序列化使用 Http 客户端将请求发送出去响应处理,反序列化等等除了这些公共逻辑,业务上只需要定义参数,HTTP 方法,HTTP URI,响应..原创 2021-10-03 20:22:50 · 365 阅读 · 0 评论 -
启用 Spring-Cloud-OpenFeign 配置可刷新,项目无法启动,我 TM 人傻了(下)
本篇文章涉及底层设计以及原理,以及问题定位,比较深入,篇幅较长,所以拆分成上下两篇:上:问题简单描述以及 Spring Cloud RefreshScope 的原理下:当前 spring-cloud-openfeign + spring-cloud-sleuth 带来的 bug 以及如何修复Spring Cloud 中的配置动态刷新其实在测试的程序中,我们已经实现了一个简单的 Bean 刷新的设计。Spring Cloud 的自动刷新中,包含两种元素的刷新,分别是:配置刷新,即 Envir.原创 2021-10-02 08:49:41 · 711 阅读 · 0 评论 -
启用 Spring-Cloud-OpenFeign 配置可刷新,项目无法启动,我 TM 人傻了(上)
本篇文章涉及底层设计以及原理,以及问题定位,比较深入,篇幅较长,所以拆分成上下两篇:上:问题简单描述以及 Spring Cloud RefreshScope 的原理下:当前 spring-cloud-openfeign + spring-cloud-sleuth 带来的 bug 以及如何修复最近在项目中想实现 OpenFeign 的配置可以动态刷新(主要是 Feign 的 Options 配置),例如:feign: client: config: default.原创 2021-10-01 13:22:58 · 540 阅读 · 0 评论 -
Spring Cloud Gateway 雪崩了,我 TM 人傻了
本系列是 我TM人傻了 系列第六期[捂脸],往期精彩回顾:升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了获取异常信息里再出异常就找不到日志了,我TM人傻了spring-data-redis 连接泄漏,我 TM 人傻了spring-data-redis 连接泄漏,我 TM 人傻了大家好,我又人傻了。这次的经验告诉我们,出来写代码偷的懒,迟早要还的。问题现象与背景昨晚我们的网关雪崩了一段时间,现.原创 2021-09-27 21:39:16 · 1559 阅读 · 4 评论 -
Spring Cloud Gateway 没有链路信息,我 TM 人傻了(下)
本系列是 我TM人傻了 系列第五期[捂脸],往期精彩回顾:升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了获取异常信息里再出异常就找不到日志了,我TM人傻了spring-data-redis 连接泄漏,我 TM 人傻了本篇文章涉及底层设计以及原理,以及问题定位和可能的问题点,非常深入,篇幅较长,所以拆分成上中下三篇:上:问题简单描述以及 Spring Cloud Gateway 基本结构和流程以及底层原.原创 2021-09-26 20:48:31 · 892 阅读 · 0 评论 -
Spring Cloud Gateway 没有链路信息,我 TM 人傻了(中)
本系列是 我TM人傻了 系列第五期[捂脸],往期精彩回顾:升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了获取异常信息里再出异常就找不到日志了,我TM人傻了spring-data-redis 连接泄漏,我 TM 人傻了本篇文章涉及底层设计以及原理,以及问题定位和可能的问题点,非常深入,篇幅较长,所以拆分成上中下三篇:上:问题简单描述以及 Spring Cloud Gateway 基本结构和流程以及底层原.原创 2021-09-25 16:34:31 · 620 阅读 · 0 评论 -
spring-data-redis 动态切换数据源
最近遇到了一个麻烦的需求,我们需要一个微服务应用同时访问两个不同的 Redis 集群。一般我们不会这么使用 Redis,但是这两个 Redis 本来是不同业务集群,现在需要一个微服务同时访问。其实我们在实际业务开发的时候,可能还会遇到类似的场景。例如 Redis 读写分离,这个也是 spring-data-redis 没有提供的功能,底层连接池例如 Lettuce 或者 Jedis 都提供了获取只读连接的 API,但是缺陷有两个:上层 spring-data-redis 并没有封装这种接口基于 r.原创 2021-08-31 08:16:32 · 376 阅读 · 0 评论 -
升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了
最近我们项目升级到了 Spring Boot 2.4.6 + Spring Cloud 2020.0.x,通过我的另一系列即可看出:Spring Cloud 升级之路。但是升级后,我们发现 YoungGC 明显增高,分配对象速率明显增高,但是晋升的对象并没有增多,证明都是新创建的对象并且没过多久就可以被回收。我们来看其中一个进程的监控,这时候的 http 请求速率大概在 100 左右:这就很奇怪了,请求速率并没有那么大,但是通过监控可以看出每秒钟分配了将近两个 G 的内存。在升级之前,这个分配速率大..原创 2021-08-06 19:23:13 · 489 阅读 · 0 评论 -
Spring Cloud系列之Commons - 2. 服务发现 - 如何通过配置文件配置服务实例?
Spring Cloud Commons 主要包括如下模块的接口和默认实现:其中的限流策略以及重试策略是没有天然带的,但是其他模块的实现一般会带上这些功能。我们先从服务发现相关接口开始分析服务发现相关核心接口DiscoveryClientDiscoveryClientpublic interface DiscoveryClient extends Ordered { int DEFAULT_ORDER = 0; //描述 String description(); //通过原创 2021-01-27 08:58:49 · 17781 阅读 · 0 评论 -
Spring Cloud系列之Commons - 1. 背景与基础知识准备
本文基于 Spring Cloud 2020.0 发布版的依赖本系列会深入分析 Spring Cloud 的每一个组件,从Spring Cloud Commons这个 Spring Cloud 所有元素的抽象说起,深入设计思路与源码,并结合实际使用例子深入理解。本系列适合有一定 Spring 或者 Spring Boot 使用经验的人阅读。什么是Spring Cloud CommonsSpring Cloud框架包括如下功能:分布式多版本配置管理服务注册与发现路由微服务调用负载均衡断.原创 2021-01-18 10:30:26 · 18908 阅读 · 0 评论 -
Spring全解系列 - @Import注解
本文基于 Spring 5.2.x@Import注解@Import是Spring基于 Java 注解配置的主要组成部分。@Import注解提供了@Bean注解的功能,同时还有原来Spring基于 xml 配置文件里的<import>标签组织多个分散的xml文件的功能,当然在这里是组织多个分散的@Configuration的类。下面将分别说明@Import注解的功能。1. 引入其他的@Configuration假设有如下接口和两个实现类:package com.testinter.原创 2020-06-09 20:17:01 · 3268 阅读 · 0 评论