首页
学习
活动
专区
工具
TVP
发布

kl的专栏

专栏作者
263
文章
161085
阅读量
51
订阅数
ratelimiter-spring-boot-starter 开箱即用的限流器
基于 redis 的偏业务应用的分布式限流组件,使得项目拥有分布式限流能力变得很简单。限流的场景有很多,常说的限流一般指网关限流,控制好洪峰流量,以免打垮后方应用。这里突出偏业务应用的分布式限流的原因,是因为区别于网关限流,业务侧限流可以轻松根据业务性质做到细粒度的流量控制。比如如下场景,
kl博主
2023-11-18
2120
spring boot metrics使用指南
针对应用监控指标暴露,spring boot有一套完整的解决方案,并且内置了好很多的指标收集器,如tomcat、jvm、cpu、kafka、DataSource、spring mvc(缺少直方图的数据)等。基于micrometer技术,几乎支持所有主流的监控服务的指标数据收集,这其中就包含了我们线上使用的Prometheus,这份指南旨在最快速接入boot的metrics功能,暴露prometheus的数据监控指标服务。
kl博主
2023-11-18
3430
给gRPC-spring-boot-starter一个pr的说明
为了更好的说明给gRPC-spring-boot-starter项目提交bug修复的pr的原因,解答作者的问题。以博文的形式记录了整个过程的上下文,目前pr未合并还在沟通处理中,希望此博文可以更清楚描述问题
kl博主
2023-11-18
2250
spring boot应用优化,6s内启动,内存减半
taptap-developer是一个spring boot框架驱动的纯Grpc服务,所以,只用了四步,移除了web和spring cloud相关的模块后,启动速度就稳稳的保持在了6s内。除了启动速度提升外,在服务待机状态下,内存锐减了50%左右,从500M左右的内存占用,缩减到了250M不到。
kl博主
2023-11-18
2150
Quarkus的Spring扩展,快速改造Spring项目(14)
博主上个礼拜,已经实现了quarkus的native image应用的上线,经过两天的监控下来,一切运行指标良好,就是内存升到了100M了,这个后续继续跟进观察。今天聊点老的spring应用改造成quarkus的问题。一个新的框架是否可以顺利的在一个公司落地,除了本身优秀的设计和优异的性能外,框架的生态和上手的难度以及对现有框架的兼容性都是非常重要的考量因素,在quarkus之前,使用最广泛的web框架就是spring webmvc框架了,数据访问层用的多的也是spring data jpa等。quarkus充分考虑了这种spring用户的需求,官方出品了多个针对spring环境的迁移扩展包,有了这些spring扩展,可以非常轻松的从spring应用迁移到quarkus平台上来。
kl博主
2023-11-18
2780
Spring Boot中建议关闭Open-EntityManager-in-view
一天,开发突然找过来说KLock分布式锁失效了,高并发情况下没有锁住请求,导致数据库抛乐观锁的异常。一开始我是不信的,KLock是经过线上大量验证的,怎么会出现这么低级的问题呢?然后,协助开发一起排查了一下午,最后经过不懈努力和一探到底的摸索精神最终查明不是KLock锁的问题,问题出在Spring Data Jpa的Open-EntityManager-in-view这个配置上,这里先建议各位看官关闭Open-EntityManager-in-view,具体缘由下面慢慢道来
kl博主
2023-11-18
1410
spring boot集成p6spy的最佳实践-p6spy-spring-boot-starter
P6Spy是一个框架,它可以无缝地拦截和记录数据库活动,而无需更改现有应用程序的代码。一般我们使用的比较多的是使用p6spy打印我们最后执行的sql语句。常用的数据框架也会自带打印sql的功能,比如jpa,mybatis等,但是一般都会有缺陷,比如打印的sql是不带执行参数拼接的sql,这种sql不完整,不具有直接可执行性。所以,p6spy就派上用场了。常见集成p6spy的方式是在资源目录下新增spy.properties配置文件,然后通过驱动装载。这种方式已经非常简单易用了,但是还有更简单的方式,通过spring boot autoconfig的特性,可以做到自动装配。博主已经封装了一个自动装配的spring boot starter项目并已开源,地址如下:
kl博主
2023-11-18
7520
Spring Data Jpa最佳实践
Spring Data Jpa框架的目标是显著减少实现各种持久性存储的数据访问层所需的样板代码量。Spring Data Jpa存储库抽象中的中央接口是Repository。它需要领域实体类以及领域实体ID类型作为类型参数来进行管理。该接口主要用作标记接口,以捕获要使用的类型并帮助您发现扩展该接口的接口。CrudRepository、JpaRepository是更具体的数据操作抽象,一般我们在项目中使用的时候定义我们的领域接口然后继承CrudRepository或JpaRepository即可实现实现基础的CURD方法了,但是这种用法有局限性,不能处理超复杂的查询,而且稍微复杂的查询代码写起来也不是很优雅,所以下面看看怎么最优雅的解决这个问题。
kl博主
2023-11-18
2140
Spring WebFlux的设计及工作原理剖析
Spring 5发布有两年了,随Spring 5一起发布了一个和Spring WebMvc同级的Spring WebFlux。这是一个支持反应式编程模型的新框架体系。反应式模型区别于传统的MVC最大的不同是异步的、事件驱动的、非阻塞的,这使得应用程序的并发性能会大大提高,单位时间能够处理更多的请求。这里不讲WebFlux是怎么用的,有什么用,这类文章网上有太多了,而且都写的非常不错。下面主要看下WebFlux是怎么从无到有,框架怎么设计的,已期能够更灵活的使用WebFlux。
kl博主
2023-11-18
3440
spring-boot-actuator中health的工作原理解析
最近在一个webflux项目中使用spring-boot-actuator提供的健康检查端点时出了点问题,故对spring-boot-actuator的项目构造,工作原理进行了全面的梳理,标题之所以写明health的工作原理,是因为spring-boot-actuator着实是个大工程,除了提供health端点,还包含了env,log,dump等诸多功能,下面会侧重health健康检查部分,详细探索下。
kl博主
2023-11-18
7830
IDEA导入Spring-kafka项目Gradle编译失败
最近在弄kafka相关的东东,因为是spring boot工程,所以用到了Spring-kafka,一个包含了kafka-producer和kafka-consumer自动装配的依赖。为了进一步研究spring是如何封装的kafka官方客户端的细节,所以从github上拉到了源码准备研究下,在导入到IDEA中时,因为Spring-kafka工程使用的是Gradle,导入时就编译失败了,导入工程失败。
kl博主
2023-11-18
1450
Spring原生Rpc六种实现的正确打开方式
在java生态圈谈到Rpc,很多人可能就会想到Dubbo、Motan、Grpc等框架。但是你知道吗?作为Java编程全家桶的Spring已经内置了多种RPC的实现方式,可以直接使用。存在即合理,有些场景下其实并不需要Dubbo,Grpc等重量级的RPC组件,那么Spring的轻量封装就可以派上用场了。下面就来探索下Spring中的RPC的实现方式以及如何使用的。
kl博主
2023-11-18
2360
apollo升级1.2版本后Spring Security导致的问题
首先说下背景,博主公司有大概30多个大小应用将配置信息托管在apollo上,因公司业务复杂环境众多,导致idc的配置多达七八个,因为早期apollo(0.8.x)版本不支持idc,namespace等的管理,故今天升级了下apollo到1.2.。升级后发现有的客户端在通过config service meta接口获取接口信息的时候抛rg.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL was not normalized.这个异常,而有的客户端可以正常的拿到接口信息,异常详情如下:
kl博主
2023-11-18
1450
spring内置的RPC使用大全
什么是rpc? rpc(Remote Procedure Call)封装了内部实现的远程调用过程就是rpc,rpc主要为了简化远程服务调用。java体系的rpc,除了dubbo,集java大成者spring还默认提供了如下等Rpc组件支持。本项目就是这些Rpc组件的接入使用示例,基础环境使用spring boot2.x版本
kl博主
2023-11-18
1570
spring batch线上问题定位纪实
最近线上spring batch的一个问题围绕博主近两周时间,甚是扰神。具体现象为,spring batch执行中莫名其妙线程就卡住了,不往下走了。下面会详细描述整个问题的排查过程
kl博主
2023-11-18
1840
spring boot集成WebSocket实时输出日志到web页面
前言碎语 今天来做个有趣的东西,就是实时将系统日志输出的前端web页面,因为是实时输出,所有第一时间就想到了使用webSocket,而且在spring boot中,使用websocket超级方便,阅读本文,你会接触到以下关键词相关技术,WebSocket(stopmp服务端),stomp协议,sockjs.min.js,stomp.min.js(stomp客户端),本文使用到的其实就是使用spring boot自带的webSocket模块提供stomp的服务端,前端使用stomp.min.js做stomp的客户端,使用sockjs来链接,前端订阅后端日志端点的消息,后端实时推送,达到日志实时输出到web页面的目的,效果如下图
kl博主
2023-11-18
4370
spring boot整合mongo查询抛converter的异常
使用过spring boot的人都知道spring boot约定优于配置的理念给我们开发中集成相关技术框架提供了很多的便利,集成mongo也是相当的简单,但是通过约定的配置信息来集成mongo有些问题。当你的字段包含Timestamp这种类型时,读取数据的时候会抛一个类型转换的异常,如No converter found capable of converting from type [java.util.Date] to type [java.sql.Timestamp],是因为,mongo本身时间类型为Date,在做结果映射的时候Date并不能强转成Timestamp,这是其中的一个点,当然还有很多类似的数据转换问题可以通过这个举一反三的来解决。所以,我们需要自定义的转换器,而spring boot约定的MongoProperties并没有配置转换器一项,我们不能简单的通过application.properties来达到我们的配置。
kl博主
2023-11-18
2330
spring boot之retry方法调用失败重试
很多场景会用到重试的机制,比如:rpc服务调用失败重试,文件上传oss失败重试,http接口调用失败重试,支付回调失败重试等等,一切因为网络,非逻辑性错误等不确定因素引起的失败都可以加上重试的机制,来增强系统的健壮性,博主也处理过文件上传到第三方oss服务失败增加重试的事例,在这之前不知道spring有个spring-retry项目,所以采用的是限制次数的递归调用的方式来解决的。现在我们来看看spring boot项目中怎么使用spring-retry来处理是失败重试的问题
kl博主
2023-11-18
1520
spring boot通过MQ消费log4j2的日志
  当系统的并发比较高的时候,日志的处理输出也是一种性能的开销负担,所以,选择一个中间件来处理消费日志必不可少!下面是spring boot整合log4j2结合spring amqp来消费处理系统日志的实例,只需要简单的三步
kl博主
2023-11-18
1330
spring boot优雅整合activiti
本文描述的是怎么将activiti优雅的整合进你的spring boot应用,并增强你的activiti管理功能,此文流程性不强,有spring boot和activiti使用经验的阅读最佳,仅供参考
kl博主
2023-11-18
1620
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档