jasypt 3.0.4 Bug 分析与解决 发表于 2022-12-23 | 分类于 SpringBoot 背景目前项目中使用 jasypt 来做配置项的加解密,但是在实际使用中发现 3.0.4 版本中 ,在配置中心动态刷新后,@ConfigurationProperties 的属性全部变成加密数据(如 ENC(XXX=)) 接下来是源码和部分机制原理分析,如果关心解决方法的话,可以快进到 “解决思路” ... 阅读全文 »
聊聊 Redis 分布式锁 发表于 2022-11-10 | 分类于 Redis 前言Redis 是日常开发中经常使用到的中间件,以优秀的性能著称。但是 Redis 分布式锁可以说是饱受争议,很多人认为 Redis 并不适合作为分布式锁。它确实存在着一些问题,今天我准备聊一聊 Redis 分布式锁如何实现、有什么问题、该如何解决以及它的进阶版本红锁(Red Lock)解决了哪些问 ... 阅读全文 »
Spring Kafka:Retry Topic、DLT 的使用与原理 发表于 2022-08-17 | 分类于 SpringBoot 背景原生 Kafka 是不支持 Retry Topic 和 DLT (Dead Letter Topic,死信队列)。但是 Spring Kafka 在客户端实现了这两个功能。 版本spring-kafka 2.7.14(2.7.x 以下版本不支持 Retry Topic) 默认重试策略默认情况下, ... 阅读全文 »
Spring Cloud Gateway Filter 执行原理刨析 发表于 2022-07-14 | 分类于 SpringCloud 准备工作需要了解响应式编程,推荐阅读 『响应式编程入门之 Project Reactor』 『Project Reactor:OptimizableOperator 原理』 版本Spring Cloud Gateway:2.2.3.RELEASE 本文目标了解 Gateway Filter 内部 ... 阅读全文 »
Project Reactor:OptimizableOperator 原理 发表于 2022-06-15 | 分类于 响应式编程 前言通常来说在响应式编程中 Publisher 的创建到真正的订阅者中间会经过许多的响应式操作符,而大部分的操作符其实都是 OptimizableOperator 的实现。 随便举几个例子,例如:map,flatMap,filter,doOnNext 等等。基本上所有对上游数据做处理的函数都实现了 ... 阅读全文 »
Drools:规则加载 & 动态更新方案 发表于 2022-05-25 | 分类于 Drools 前言本文主要想聊下这几个问题 Drools 的规则资源加载有几种方式 Drools 的规则动态更新有几种方式 版本7.69.0.Final 规则的加载1. 使用 KieClasspathContainer最简单的加载方式,官方的 demo 中使用的也是这种方式,从 classpath 下加载 k ... 阅读全文 »
规则引擎 Drools 执行流程浅析 发表于 2022-04-12 | 分类于 Drools 什么是规则引擎 规则引擎是处理复杂规则集合的引擎。通过输入一些基础事件,以推演或者归纳等方式,得到最终的执行结果。规则引擎的核心作用在于将复杂、易变的规则从系统中抽离出来,由灵活可变的规则来描述业务需求 Drools 简介Drools 是 Java 编写的一款开源规则引擎。Drools 的核心算法 ... 阅读全文 »
SpringCloud NamedContextFactory 原理与使用 发表于 2022-03-01 | 分类于 SpringCloud 最近在阅读 Ribbon 的源码,发现 SpringCloud 中 NamedContextFactory 这个类可以实现子容器。Ribbon 为每个 ServiceName 都拥有自己的 Spring Context 和 Bean 实例(不同服务之间的 LoadBalancer 和其依赖的 Bea ... 阅读全文 »
Spring RestTemplate 设置每次请求的 Timeout 发表于 2022-01-10 | 分类于 SpringBoot 前言在实现这个功能之前,我也上网搜索了一下方案。大多数的解决方法都是定义多个 RestTemplate 设置不同的超时时间。有没有更好的方式呢?带着这个问题,我们一起来深入一下 RestTemplate 的源码 提示:本文包含了大量的源码分析,如果想直接看笔者是如何实现的,直接跳到最后的改造思路 版 ... 阅读全文 »
响应式编程入门之 Project Reactor 发表于 2021-11-12 | 分类于 响应式编程 本文目标 理解响应式编程 前言之前的 《聊聊 IO 多路复用》 中,我们理解了非阻塞 IO 的意义。但是 Spring MVC 并不能完美的应用非阻塞编程,于是 Spring 团队开发了 WebFlux,而 WebFlux 的基础正是本文要讲到的 Project Reactor(下文简称为 Rea ... 阅读全文 »