
微服务&Spring
文章平均质量分 77
Spring和微服务相关记录
东皋长歌
进一步有进一步的欢喜
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SpringBoot集成ELK
本文介绍了ELK(Elasticsearch+Logstash+Kibana)日志分析平台的部署与SpringBoot集成方案。主要内容包括:1)ELK组件功能说明,其中Elasticsearch负责存储索引,Logstash收集转发日志,Kibana提供可视化界面;2)基于Docker的详细安装步骤,包括docker-compose配置文件编写、目录挂载设置和组件版本一致性控制;3)SpringBoot项目集成方法,通过log4j2配置日志输出到Logstash;4)Kibana基本使用指南,包括索引模式原创 2025-08-22 11:18:12 · 822 阅读 · 0 评论 -
简单实现一个分布式锁
本文介绍基于Redisson实现分布式锁的方案。通过自定义@DistributedLock注解,支持可重入锁、公平锁、读写锁等多种锁类型,并实现SpEL表达式解析key。核心实现包括:1)Redisson配置类;2)锁管理器封装加锁/解锁逻辑;3)AOP切面处理锁获取失败策略(抛异常/返回null/继续执行)。使用时只需在方法上添加注解,通过key参数指定锁标识(支持多参数拼接和对象属性引用),适用于秒杀等高并发场景的库存控制。原创 2025-08-19 15:41:56 · 663 阅读 · 0 评论 -
简单实现监听redis的Key过期事件
本文介绍了如何利用Redis实现订单30分钟未支付自动取消功能。首先需要在redis.conf中配置键空间通知(设置为Ex),然后通过Spring Boot配置Redis消息监听容器和JSON序列化模板。核心实现是继承KeyExpirationEventMessageListener创建监听器,在onMessage方法中处理订单过期事件(以"order_"开头的key)。相比传统的定时任务方案,这种基于Redis键过期事件的方式更加高效可靠。原创 2025-08-19 11:07:16 · 440 阅读 · 0 评论 -
简单实现一个接口限流
本文介绍了基于Spring Boot 3.x使用Resilience4j实现接口限流的方法。首先引入resilience4j-spring-boot3依赖,然后在配置文件中定义限流参数,包括请求限制数量、时间窗口和超时时间。通过@RateLimiter注解标记需要限流的方法,并配置fallback降级方法。当接口在设定时间窗口内超过请求限制时,系统会自动调用降级方法实现限流保护。该方法实现简单,配置灵活,能有效防止系统因突发流量过载。原创 2025-07-17 16:50:47 · 379 阅读 · 0 评论 -
简单手写一个Spring boot starter
SpringBoot自定义Starter开发指南 本文介绍了开发SpringBoot自定义Starter的完整流程。Starter能够简化依赖管理,实现即插即用的功能模块。文章以字符串加前缀功能为例,详细说明了实现步骤:1)创建项目并引入核心依赖spring-boot-autoconfigure;2)编写自动配置类(PrefixAutoConfiguration)和属性类(PrefixProperties);3)实现业务逻辑(PrefixService);4)配置spring.factories或AutoC原创 2025-07-17 16:13:11 · 1052 阅读 · 0 评论 -
基于redis实现API接口访问次数限制
日常开发中会有一个常见的需求,需要限制接口在单位时间内的访问次数,比如说某个免费的接口限制单个IP一分钟内只能访问5次。该怎么实现呢,通常大家都会想到用redis,确实通过redis可以实现这个功能,下面实现一下。/*** @date 2024/11/8 上午9:06*//*** 从请求中获取IP当获取不到时,返回null*//*** 获取请求的真实IP,优先级从高到低为:原创 2024-11-08 11:23:27 · 1191 阅读 · 0 评论 -
SpringBoot优雅下线
当我们需要部署新版本代码的时候,需要重启服务,这个时候可能会出现一些问题,比如之前服务正在处理的请求还在处理,这个时候如果强制的停止服务,会造成数据丢失或者请求失败的情况。那么就需要有一种功能,当我们发出停止指令的时候,停止接收所有外部的请求,然后处理完已经接收的正在处理的请求,之后,再停止服务。这就是优雅下线。原创 2024-10-17 16:03:52 · 1031 阅读 · 0 评论 -
@EqualsAndHashCode注解使用
通过使用 @EqualsAndHashCode,可以显著减少代码量并提高代码的可维护性和一致性。原创 2024-08-30 17:48:39 · 1493 阅读 · 0 评论 -
Nacos配置内容加密实现
因为项目中安全检查的要求,需要将nacos配置的内容进行加密,所以需要实现将配置内容加密处理,这里引入nacos-aes-encryption-plugin插件来完成这一需求。3.2 将项目的yml文件中的"spring.cloud.nacos.config.prefix"改为"cipher-aes-"开头,例:cipher-aes-user。-U参数表示强制更新依赖。进入Nacos控制台,配置内容正常处理,配置名以"cipher-aes-"开头,例:cipher-aes-user。原创 2024-08-13 15:11:10 · 2249 阅读 · 0 评论 -
Spring boot敏感参数加密配置
在项目中很多参数会被配置到配置文件中,比如说密钥,用户名,数据库连接,账号密码之类的,如果用明文配置,会有一定的安全风险。为了减小风险,增加对敏感配置数据的加密配置。# 算法识别前缀(当算法发现配置文件中的值以这前缀开始,后缀结尾时,会使用指定算法解密)// 指定秘钥,和yml配置文件中保持一致。// 指定秘钥,和yml配置文件中保持一致。* @param plaintext 明文。* @param data 加密后数据。密文用指定的前后缀包围: ENC(xxx)# 配置文件加解密配置。原创 2024-08-13 14:49:59 · 1470 阅读 · 0 评论 -
Spring Boot常用注解
Component注解是一个通用的注解,可以用来标注任何Spring管理的bean,像@Service,@Controller,@Repository都是@Component注解的别名。用途:@Data是一个复合注解,集成了@Getter,@Setter,@ToString,@EqualsAndHashCode,@RequiredArgsConstuctor等注解。用途:用于标识控制层组件,是@Component注解的别称,用于标识Spring MVC控制器,处理Web请求并返回视图。原创 2024-08-03 15:51:27 · 2758 阅读 · 1 评论 -
Spring Controller接口地址的骚玩法,很有用!
项目里有一个接口需要对外提供,对方的解析方式有不同的方式,一个是使用流行的json格式,另外一个却是老系统,只能用xml格式,但是接口内部的实现逻辑是完全一样的,为了适配更多调用方的需求,就需要将同样的接口数据用两种格式提供出去,总觉得哪儿不对劲儿,写了不好的代码。刚好发现Spring 5.3之后 之后出现的一个新特性——路径后缀匹配,可以支持同一个接口,根据调用方的需求,自动做转换。4,定义一个接口, 路径中使用.*来做后缀, fmt这段可以随意命名5,默认是支持json格式的,如果需要支原创 2024-08-02 20:22:25 · 435 阅读 · 0 评论 -
Spring实现自定义注解
具体原理网络上一大堆,但是没有看到有人用Spring去实现,其他人实现的基本上都是用了SpringBoot,没有参考意义。希望对你有帮助!原创 2024-08-02 17:15:51 · 456 阅读 · 0 评论 -
Spring Boot 3.x集成FastDFS记录
最近在做一个课程,需要用讲一下SpringBoot 使用文件上传的功能,选择了FastDFS作为文件存储OSS。Spring Boot是最新的3.3.0版本,JDK版本是17,中间有一些坑,下面记录一下。原创 2024-06-04 14:18:33 · 1579 阅读 · 0 评论 -
Spring常用注解(超全面)
EnableCaching:开启注解式的缓存支持;@Resource:由JSR-250提供 @Autowired、@Inject是默认按照类型匹配的,@Resource是按照名称匹配的,@Autowired如果需要按照名称匹配需要和@Qualifier一起使用,@Inject和@Name一起使用。@RestController 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。原创 2024-05-27 20:05:16 · 8972 阅读 · 0 评论 -
Maven查看项目中的pom依赖
安装包路径:/usr/local/opr-platform/opr-platform.jar -> BOOT-INF/lib/commons-compress-1.19.jar。-- 将easyexcel中的低版本commons-compress排除掉,再导入高版本的commons-compress -->但是需要注意的是,并不是所有的升级都适用上面这种,因为可能两个版本不兼容,所以在做上面这样的升级时,需要测试一下是否兼容,功能是否正常。回到背景里提到漏洞,在找到包之后,可以用以下的方法修复。原创 2024-05-27 15:59:09 · 1666 阅读 · 0 评论 -
响应式编程Spring Reactor探索
基本思想是将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程阻塞在多路复用器上,通过轮询或者边缘触发的方式来处理网络I/O事件。Reactor设计模式和响应式编程类似,它们都不主动调用某个请求的API,而是通过注册对应接口,实现事件触发执行。创建Mono,设置超时时间为60秒,将任务交给service层去处理,请求会在这儿挂着,然后可以继续接收新的请求。Spring Reactor框架是响应式编程的一个很好的实践,能帮助开发者快速完成相关的需求,能很好的实现支持背压处理。原创 2024-05-08 11:44:53 · 1121 阅读 · 0 评论 -
Canal+Springboot实现数据同步,全网唯一一个跑通了的案例
下面代码中的canalServerIp是上面部署了canal的那个服务器的IP,端口是默认的11111, destination就是上面dts(模式是example,也可以是你自己取的实例名)-- 查询是否开启了binlog的格式,需要是row,可以在show后面加一个global,查询全局变量。没想到的是,这玩意儿,号称社区活跃,技术成熟,竟然没找到一个博客写清楚了它的部署,全部是跑不起来的。于是,本着有困难上,没困难制造困难上的初心,决定还是挑战一下其他的方案,比如canal。原创 2024-04-28 17:51:17 · 2576 阅读 · 1 评论 -
规则引擎Drools+Nacos实现动态规则
在内部匹配队里里面,优先级越高的规则,执行顺序越靠前。默认的优先级的值是0,优先级的值可以是正数,也可以是负数。项目中有需要根据规则计算不同收费方费用的需求,后面还会有优惠券、满减、限时折扣之类的规则,同时需要配合不同运营活动动态配置,这些需求对计算的灵活性要求比较高。下面是在nacos中的配置: 格式是text, data-id是drools-rule(随意命名, 只要和项目启动文件里的data-id一致就可以)Drools是比较常用的规则引擎,可以自己定义计算规则,简化项目代码中的逻辑。原创 2024-04-16 08:54:43 · 1047 阅读 · 5 评论 -
Spring单元测试+Mockito
单元测试基本上是开发逃不过的一个工作内容,虽然往往因为过于无聊,或者过于麻烦,而停止于项目的迭代之中,不了了之了。其实不是开发们懒,而是上头要求的测试覆盖率高,但是又没有好用的工具,导致工作积压,最后只能舍弃掉这部分。最近发现Spring+junit+mockito很好用,特别是对于DDD架构的项目,可以针对特定的代码层做单元测试,贼好用。2,使用mockito3,覆盖率检测三,实战1,新建测试类idea中在类里ctrl+shift+T注意:只有public方法才能生成原创 2024-03-19 14:56:21 · 1340 阅读 · 0 评论 -
Spring 3升级指导
移除 mybatis-plus-boot-starter 中依赖的 mybatis-spring 2.1.1 版本,单独引入高版本 mybatis-spring 3.0.3 版本。Spring开源多年,已经经过了多次的升级迭代,最新的已经到Spring 6了,但是估计大家最常用的还是Spring 2.x。配置文件里,把spring.redis.xxx.xxx改成spring.data.redis.xxx.xxx。- 删除 log4j-api、slf4j-api 依赖,使用默认依赖和版本。原创 2024-03-19 14:03:09 · 1313 阅读 · 0 评论 -
Springboot和Spring Cloud版本对应
Spring在不断地升级,各个版本存在一些不兼容的地方,为了避免出现问题,最好注意使用正确的版本。原创 2024-03-18 17:37:44 · 977 阅读 · 0 评论 -
分库分表面试必背
按照某些规则,比如说按照年份,对订单数据库进行划分,一年一个数据库,如db_order_2024,db_order_2025,下面的表和表结构完全一致,但是存储的数据不一样,分别归属于不同年份的订单数据。第三层:因为innodb的叶子节点,是直接包含整条mysql数据的,假设每条数据以1kb计算,那么第三层每个节点为16kb,那么每个节点是可以放16个数据的,所以最终mysql可以存储的总数据为。:对于存在逻辑主外键关系的表,如订单表和订单明细表,可以考虑将它们的数据物理上存储在一起,形成一个绑定表。原创 2024-02-19 15:57:57 · 1120 阅读 · 0 评论 -
一次说全COLA应用架构
1,原版COLA 4.0:应用架构的最佳实践_cola实战_程序员万万的博客-优快云博客2,不知道什么的版本COLA 架构_mob649e815da088的技术博客_51CTO博客3,另外一种不知道什么的版本COLA架构 入门-阿里云开发者社区关于定义确实各说各的,我们可以忽略,只要关注一个本质就好了,那就是大家都提到的分层简单来说,就是专一职责,专业的Layer做专业的事儿,解耦,避免臃肿。给 COLA 做减法:应用架构中的“弯弯绕设计”-阿里云开发者社区没有最佳,只有适合。如无必要,勿增实体!原创 2023-10-20 14:43:41 · 1434 阅读 · 0 评论 -
分布式链路追踪系统Skywalking的部署和应用
通过对比可以看到,Pinpoint和Skywalking不相上下,各有优劣,从界面、操作,集成方式来说,Pinpoint更好, 不过因为种种不得已的原因,我们今天还是聚焦在Skywalking上,它的优点是部署难度低,监控范围广、维度多,对代码侵入少,系统性能损失低,还支持接入 ELK 进行存储展示。下图描述的是树结构的Span集合,表示一次完整的跟踪,从请求到服务器开始,服务器返回response结束,跟踪每次rpc调用的耗时,存在唯一标识trace_id。cat: 大众点评开发的实时应用监控平台。原创 2023-10-19 17:49:45 · 1620 阅读 · 0 评论 -
zookeeper可视化工具ZooInspector用法
最近在做银行的项目,用到了thrift,rpc和zookeeper,所有应用都是注册到zookeeper上的,想知道哪些应用注册上了,就用到ZooInspector这个可视化的工具。原创 2023-09-14 19:37:51 · 647 阅读 · 0 评论 -
git拉代码时提示账号密码错误问题解决记录
通常来说执行命令2就可以了,但是有的人本地git版本问题或者其他问题,导致并没有清掉,那么就用命令1,当然两个都执行也可以。Git是常用的代码管理工具,在拉取代码的时候需要配置账号密码信息,如果不对或者需要更换的时候,就需要重新配置一下。命令2:git config --system --unset credential.helper。这样设置之后,后面就只需要配置一次账号信息,不用每次操作git都输密码了。在各个操作的场景下都会触发,输入账号和密码就可以了。步骤二:设置保存账号信息。原创 2023-09-13 16:47:20 · 4828 阅读 · 0 评论 -
RESTful API 面试必问
RESTful API是一种基于 HTTP 协议的 API 设计风格,它提供了一组规范和约束,使得客户端(如 Web 应用程序、移动应用等)和服务端之间的通信更加清晰、简洁和易于理解。原创 2023-08-30 10:54:21 · 1247 阅读 · 0 评论 -
一次讲清楚Linux Cron和 Spring Cron
定时任务是我们日常开发中经常用到的一个功能点,无论是Linux服务器上Crontab还是Spring task schedule,都会使用到cron表达式去实现定时任务的配置。不过,一定要注意,Linux cron表达式和Spring的cron表达式不一样,下面来一次讲清楚。原创 2023-08-29 17:46:19 · 591 阅读 · 0 评论 -
Java实现OTP二次验证
首先简单介绍一下OTP:简单就是说,一个时长30秒的动态密码,和账号绑定了,如果需要做身份验证的话,可以用这个动态码做二次验证。更简单说,就是一个安全要求更高的身份验证方式,一个字,牛!废话不多说,开干!原创 2023-08-21 17:46:12 · 2531 阅读 · 3 评论 -
Freemarker+thymeleaf应用实现打印银行小票
背景:最近项目里有个需求,需要动态配置一个模板,来打印各种不同银行或者其他行业的小票,下面小小记录一下实现过程。关键词:Springboot, thymeleaf, Freemarker,html2image。这里是关键,需要遍历数据,并判断数据中属性。2,组装成需要的数据结构。原创 2023-08-14 17:18:44 · 447 阅读 · 0 评论 -
Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台
内容:完整集成了Spring Gateway, Spring Security, Nacos, OAuth2, RBAC, 手机验证码登录等SSO统一认证平台,全平台唯一,全平台最全,全面细致,已经帮你踩了很多坑,一看就会,可以本地运行,或者直接作为认证平台。适合人群:准备搭建SSO平台的架构师,准备学习OAuth2和Spring Gateway结合的高级开发原创 2023-08-10 14:29:43 · 1486 阅读 · 2 评论 -
Sentinel持久化规则
项目中有用到Sentinel,然后需要将Sentinel上配置的规则做持久化(或者初始化),通过改写Sentinel源码实现了需求,下面记录一下实现过程。原创 2023-07-31 11:25:39 · 560 阅读 · 0 评论 -
流控平台Sentinel搭建和接入教程
流量控制和限流是大型系统必不可少的组成部分,Sentinel是Alibaba提供的一款特别好用的专业工具,属于那种看起来很牛,用起来也很牛的工具原创 2023-07-31 10:21:32 · 1077 阅读 · 0 评论 -
Jenkins搭建最简教程
纠结了一小会儿,到底要不要写这个,最终还是决定简单记录一下,因为Jenkins搭建实在是太简单了,虽然也有坑,但是坑主要在找稳定的版本。先学一个简称,LTS (属实是长见识了,oh yeah!下面是正文部分。原创 2023-07-28 16:28:23 · 955 阅读 · 0 评论 -
Jenkins集成SonarQube保姆级教程
Jenkins是自动化部署平台,一个粗眉大眼的糙汉子!SonarQube是代码扫描平台,一个眉目清秀的小女子!有一天,上天交给我一个任务,去撮合撮合他们!我抬头看了看天,不,天花板。这事儿有戏!原创 2023-07-28 15:05:49 · 3333 阅读 · 7 评论 -
代码扫描平台SonarQube搭建保姆级教程
代码扫描工具SonarQube,想必大家也有了解,就是那种不明觉厉的存在,最近刚好有需求,需要自己搭建,下面就给大家记录下搭建的过程。不了解的,可以先看看有一个初步认识。话不多说,开干!原创 2023-07-28 14:26:10 · 2681 阅读 · 0 评论 -
看完这篇,别再说不会Spring 分库分表了
Springboot + shardingsphere 实现分库分表的需求,比较简单,但是要想真正地投入实用,还有很多路要走,比如实现自定义分库分表规则的算法,自定义分布式表的主键ID,基于分库分表后的排序(默认已实现按分库分表的列进行排序)和分页等等等。t=N6B9Spring多数据源实现https://blog.youkuaiyun.com/wangerrong/article/details/131910740。原创 2023-07-26 11:12:53 · 889 阅读 · 0 评论 -
10分钟搭建链路追踪平台
随着项目越来越多,相互调用越来越复杂,搭建一个可视化的链路追踪平台显得尤为重要,今天给大家介绍的是zipkin,一个轻量级的零侵入的链路追踪平台,看我怎么10分钟给大家搭建出来。3, 在数据库建schema为zipkin的库,并在zipkin库下建相关的表。# zipkin要把sleuth产生的日志,抽取的比例,1.0即100%在服务器上建一个目录,通过下面命令下载zipkin.jar。5,在需要跟踪的项目里配置。4,启动zipkin应用。# zipkin的配置。启动项目,并正常使用。原创 2023-07-25 16:10:20 · 271 阅读 · 0 评论 -
10分钟实现任务调度平台搭建
powerjob是目前最灵活的一个可视化在线调度平台了,支持随时修改立即生效,可随时发起调度,支持告警配置。原创 2023-07-25 15:48:25 · 1268 阅读 · 2 评论