Spring Cloud Gateway中的令牌桶限流浅析

Spring Cloud Gateway中的令牌桶限流浅析

前言 在一个分布式高并发的系统设计中,限流是一个不可忽视的功能点。如果不对系统进行有效的流量访问限制,在双十一和抢票这种流量洪峰的场景下,很容易就会把我们的系统打垮。而作为系统服务的卫兵的网关组件,作为系统服务的统一入口,更需要考虑流量的限制。Spring Cloud Gateway的实现中,就提供了限流的功能,下面主要分析下Spring Cloud Gateway中是如何实现限流功能了。 回...

阅读全文 »

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集成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...

阅读全文 »

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

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

阅读全文 »

spring内置的RPC使用大全

spring-rpc 什么是rpc? rpc(Remote Procedure Call)封装了内部实现的远程调用过程就是rpc,rpc主要为了简化远程服务调用。java体系的rpc,除了dubbo,集java大成者spring还默认提供了如下等Rpc组件支持。本项目就是这些Rpc组件的接入使用示例,基础环境使用spring boot2.x版本 spring-rmi-rpc spring-hessian-rpc spring-http-rpc spring-jms-rpc spring-amqp-rpc spring-ws-rpc 基础环境 spring boot 2.0.5.RELEASE activemq (spring-jms-rpc使...

阅读全文 »

Apollo应用之动态调整线上数据源(DataSource)

Apollo应用之动态调整线上数据源(DataSource)

前言碎语 博主之前写过使用apollo的配置动态推送能力来动态修改线上环境的日志输出级别,具体可见《 spring boot动态调整线上日志级别 》,今天来实现一个类似的应用场景,动态变更线上数据源。主要应用场景如:测试时不重启服务切换数据源,准生产无缝切换生产环境,应用端读写分离策略动态化等等,更多的使用场景欢迎在留言区补充。 实现思路 通过对主流数据源(c3p0,dbcp2,tomc...

阅读全文 »