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的时候,会引...

阅读全文 »

Soul Api网关技术选型

前言 最近公司中台api有用到网关的需求,特整理了下网关的基本功能以及Soul网关系统的功能架构设计, 记录于此。 最终选择了Soul网关系统还是因为其架构设计清晰,基于spring boot而且提供了Admin管理后台,而且底层使用spring webflux响应式编程,基于zk的本地缓存设计支持分布式多实例部署,性能问题就不无需多虑了 网关有哪些功能需求? 网关需求 限流 为了保护后端服务的稳定,不...

阅读全文 »

记web.xml中Maven占位符不生效问题

记web.xml中Maven占位符不生效问题

问题背景 开发反馈,一个spring mvc的web项目,在web.xml配置的占位符不生效,编译后还是没有替换成配置的属性,如下: context-param param-namelogbackConfigLocation/param-name param-valueclasspath:${ loagback.xml.path:logback.xml }/param-value /context-param 问题分析 先了解下,为什么在Maven中可以通过${xx}这种占位符的方式在编译期可以获取到Maven中的Properties属性信息呢?因为Maven提供了一个插件在起作用 maven-resource...

阅读全文 »

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

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

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

阅读全文 »

j2Cache线上异常问题排查记录

j2Cache线上异常问题排查记录

问题背景 开发反馈,线上有个服务在运行一段时间后,就会抛异常导致redis缓存不可用。项目使用了j2Caceh,异常是j2Cache的RedisCacheProvider抛出来的,如: Exception in thread \"main\" redis.clients.jedis.exceptions.JedisException: Could not get a resource from the poolat redis.clients.util.Pool.getResource(Pool.java:51)at redis.clients.jedis.JedisPool.getResource(JedisPool.java:99)at net.oschina.j2cache.redis.RedisCacheProvider.getResource(RedisCacheProvider.ja...

阅读全文 »

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 异常信息如下...

阅读全文 »