RUI个人博客 首页>>spring

记阿里Druid数据连接池引发的线上血案

记阿里Druid数据连接池引发的线上血案

前言碎语 事件起因:项目使用了activiti工作流,系统是由老的spring mvc项目改造成的spring boot项目,数据库链接池从dbcp切换到druid,新系统上线后,同事多次系统隔一段时间后数据查询就很慢,基本出不来。由此开始了线上bug排查之路。这个问题从一开始就模糊定位到数据库层面的问题,因为只有和数据相关的操作会很慢,其他服务不受影响,并且在中午休息时没有问题,在下午刚上班...

阅读全文 »

spring boot集成WebSocket实时输出日志到web页面

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做sto...

阅读全文 »

springMvc DeferredResult的long polling应用

1.了解servlet以及spring mvc中的异步? Spring MVC 3.2开始引入了基于Servlet 3的异步请求处理。相比以前,控制器方法已经不一定需要返回一个值,而是可以返回一个java.util.concurrent.Callable的对象,并通过Spring MVC所管理的线程来产生返回值。与此同时,Servlet容器的主线程则可以退出并释放其资源了,同时也允许容器去处理其他的请求。通过一个TaskExecutor,Spring MVC可以在另外的线程中调用Callabl...

阅读全文 »

spring boot集成redisson的最佳实践

spring boot集成redisson的最佳实践

前言碎语 redisson是redis的java客户端程序,使用度比较广,在和spring的集成中官方给出的实例也是比较多,比较方便,具体可查看我之前的一篇博文 《spring集成redis客户端jedis以及redisson 》 ,可以提供yaml,json配置文件来实例化redissonClient,如果我们的程序是spring boot,一般都是使用application.properties来配置我们应用配置参数,如何使用application.properties的方式配置redisson呢,请看下文? 1....

阅读全文 »

Apollo分布式集中配置

Apollo分布式集中配置

1、What is Apollo 1.1 背景 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址…… 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制…… 在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。 Apollo配置中心应运而生! 1.2 Apoll...

阅读全文 »

spring boot整合mongo查询抛converter的异常

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,在...

阅读全文 »

spring boot之retry方法调用失败重试

spring boot之retry方法调用失败重试

前言碎语 很多场景会用到重试的机制,比如:rpc服务调用失败重试,文件上传oss失败重试,http接口调用失败重试,支付回调失败重试等等,一切因为网络,非逻辑性错误等不确定因素引起的失败都可以加上重试的机制,来增强系统的健壮性,博主也处理过文件上传到第三方oss服务失败增加重试的事例,在这之前不知道spring有个spring-retry项目,所以采用的是限制次数的递归调用的方式...

阅读全文 »