RUI个人博客 首页>>spring

Spring WebFlux的设计及工作原理剖析

Spring WebFlux的设计及工作原理剖析

前言 Spring 5发布有两年了,随Spring 5一起发布了一个和Spring WebMvc同级的Spring WebFlux。这是一个支持反应式编程模型的新框架体系。反应式模型区别于传统的MVC最大的不同是异步的、事件驱动的、非阻塞的,这使得应用程序的并发性能会大大提高,单位时间能够处理更多的请求。这里不讲WebFlux是怎么用的,有什么用,这类文章网上有太多了,而且都写的非常不错。下面主要看下WebFlux是...

阅读全文 »

spring-boot-actuator中health的工作原理解析

spring-boot-actuator中health的工作原理解析

前言 最近在一个webflux项目中使用spring-boot-actuator提供的健康检查端点时出了点问题,故对spring-boot-actuator的项目构造,工作原理进行了全面的梳理,标题之所以写明health的工作原理,是因为spring-boot-actuator着实是个大工程,除了提供health端点,还包含了env,log,dump等诸多功能,下面会侧重health健康检查部分,详细探索下。 actuator功能和集成分离 一般在spring boot中使用actuator的时候,会引...

阅读全文 »

记spring-boot项目启动卡住问题排查记录

记spring-boot项目启动卡住问题排查记录

问题背景 一个spring boot开发的项目,spring boot版本是1.5.7,携带的spring版本是4.1.3。开发反馈,突然在本地启动不起来了,表象特征就是在本地IDEA上运行时,进程卡住也不退出,应用启动时加载相关组件的日志也不输出。症状如下图: 问题分析 因为没有有用的日志信息,所以不能从日志这个层面上排查问题。但是像这种没有输出日志的话,一般情况下,肯定是程序内部启动流程卡在什...

阅读全文 »

spring boot集成kafka之spring-kafka深入探秘

spring boot集成kafka之spring-kafka深入探秘

前言 kafka是一个消息队列产品,基于Topicpartitions的设计,能达到非常高的消息发送处理性能。Spring创建了一个项目Spring-kafka,封装了Apache 的Kafka-client,用于在Spring项目里快速集成kafka。除了简单的收发消息外,Spring-kafka还提供了很多高级功能,下面我们就来一一探秘这些用法。 项目地址: https://github.com/spring-projects/spring-kafka 简单集成 引入依赖 dependency groupIdorg.springframework.kafka/groupId ar...

阅读全文 »

IDEA导入Spring-kafka项目Gradle编译失败

IDEA导入Spring-kafka项目Gradle编译失败

前言 最近在弄kafka相关的东东,因为是spring boot工程,所以用到了Spring-kafka,一个包含了kafka-producer和kafka- consumer自动装配的依赖。为了进一步研究spring是如何封装的kafka官方客户端的细节,所以从github上拉到了源码准备研究下,在导入到IDEA中时,因为Spring-kafka工程使用的是Gradle,导入时就编译失败了,导入工程失败。 Spring-kafka地址: https://github.com/spring-projects/spring-kafka 异常信息如下...

阅读全文 »

Spring原生Rpc六种实现的正确打开方式

前言 在java生态圈谈到Rpc,很多人可能就会想到Dubbo、Motan、Grpc等框架。但是你知道吗?作为Java编程全家桶的Spring已经内置了多种RPC的实现方式,可以直接使用。存在即合理,有些场景下其实并不需要Dubbo,Grpc等重量级的RPC组件,那么Spring的轻量封装就可以派上用场了。下面就来探索下Spring中的RPC的实现方式以及如何使用的。 文中代码地址: https://gitee.com/kailing/spring-rpc 什么是Rpc? Rpc...

阅读全文 »

apollo升级1.2版本后Spring Security导致的问题

apollo升级1.2版本后Spring Security导致的问题

前言碎语 首先说下背景,博主公司有大概30多个大小应用将配置信息托管在apollo上,因公司业务复杂环境众多,导致idc的配置多达七八个,因为早期apollo(0.8.x)版本不支持idc,namespace等的管理,故今天升级了下apollo到1.2.。升级后发现有的客户端在通过config service mate接口获取接口信息的时候抛rg.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL was not normali...

阅读全文 »