- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 Dubbo RPC只要一个长连接就可以收发所有请求,为什么Spring Cloud不行?
试下这篇能不能把去年写的Dubbo源码分析系列文章重新激活Dubbo RPC使用dubbo协议只需要一个长连接就可以收发所有请求,为什么使用http...
2020-07-29 08:10:00 1211 1
原创 Sentinel与OpenFeign整合实现熔断降级源码分析
Sentinel无论是实现限流还是熔断降级,其实都是通过适配模块去实现拦截方法的执行,在方法执行之前调用所有ProcessorSlot的entry方法,在方法执行之后所有ProcessorSlot的exit方法,使用责任链模式调用。由StatisticSlot这个ProcessorSlot统计请求信息,由DegradeSlot检查当前请求是否需要熔断,由FlowSlot检查当前请求是否需要限流。StatisticSlot的entry方法将资源当前时间窗口的Bucket的请求数自增1,如果需要限...
2020-07-14 08:18:17 1213 1
原创 Sentinel中的责任链模式:Sentinel整体工作流程
Sentinel对性能的消耗如何Sentinel统计QPS使用的是滑动窗口:时间窗口+Bucket,通过循环复用Bucket以减少对内存的占用,在统计QPS时,更是利用当前时间戳定位Bucket,使用LongAdder统计时间窗口内的请求成功数、失败数、总耗时等指标数据优化了并发锁,通过定时任务递增时间戳避免每次都使用System获取当前时间。可以看到Sentinel在性能方面所做出的努力,Sentinel尽最大可能降低自身对应用的影响。Sentinel会为每个资源创建一个保存一分钟内时间窗口为1.
2020-07-13 08:00:00 980
原创 Sentinel核心实现:基于滑动窗口的实时指标数据统计实现
要理解Sentinel实现限流的源码,首先我们要了解其核心,比如如何统计QPS,只要了解核心功能的实现,我们也可以自己实现一个简单的限流器。Sentinel基于滑动窗口实现实时指标数据统计。Sentinel如何统计每秒请求数(QPS)为了简单,我们不直接分析Sentinel的源码,而是分析笔者从Sentinel中摘抄的,且经过改造后的qps-helper的代码。总体上是一样的,笔者去掉了一些不需要的统计数据,以及将Sentinel一些自定义的类替换成JDK提供的类,封装成通用的QPS统计工具包。h.
2020-07-12 16:34:05 1307 1
原创 OpenFeign整合Sentinel实现熔断降级
常用于实现熔断降级的框架有Hystrix、Sentinel,我们常说的Spring Cloud项目说的其实是Spring Cloud Netflix,Hystrix以及前面学习过的Ribbon都是Netflix系的家族成员,所以使用Hystrix可以非常简单的与当前项目中使用到的OpenFeign、Ribbon整合,但笔者并没有选择Hystrix,而是选择阿里系的Sentinel。为什么选择Sentinel而不是Hystrix?从接入简单考虑可能选择Hystrix是不错的选择,但笔者对Hyst...
2020-07-10 08:25:42 6327 2
原创 玩转OpenFeign-续集
上一篇《玩转OpenFeign》介绍了OpenFeign的一些常用配置,不过还漏了点内容。Client连接超时、读超时的配置这篇主要介绍如何为不同的Client配置不同的连接超时、读超时这类参数,并从源码角度分析配置是怎么起作用的,以及都可以配置哪些参数,内容不多。还是要从FeignAutoConfiguration这个自动配置类说起,该配置类使用@EnableConfigurationProperties注册了两个用于装载OpenFeign配置的Bean,分别是FeignClientProp.
2020-07-08 08:00:00 469 1
原创 玩转OpenFeign
经过前面几篇的源码分析,我们对OpenFeign与Ribbon也相对熟悉了。看框架源码的目的就是解决我们的一些疑惑,能够知其然并知其所以然,以及用好框架。很多时候,我们需要在项目中调用一些第三方接口,例如对接支付宝支付、微信支付,调用支付接口。如果项目中引入了OpenFeign,那么我们是否可以使用OpenFeign去调用第三方接口呢?答案肯定是可以的。虽然调用第三方接口不需要服务发现,所以也不需要使用Ribbon实现负载均衡,但我们依然可以单独使用OpenFeign。使用OpenFeign不.
2020-07-07 08:01:30 1213
原创 Spring Cloud Kubernetes动态配置实现原理与源码分析
Spring为Spring Cloud在Bean的生命周期、Bean的BeanPostProcessor以及AOP层面提供实现动态刷新配置的支持,而Spring Cloud则是为使用者提供实现动态加载配置的接口层面支持,封装了复杂的实现逻辑,让第三方配置中心实现整合到Spring Cloud项目提供方便。Spring Cloud Kubernetes也为我们使用原生服务实现动态配置提供支持,它帮我们实现Spring Cloud的动态配置接口,我们只需要在bootstarp.yaml添加简单的配置就...
2020-07-05 22:40:46 1001 1
原创 不得不知的Spring Boot与Spring Cloud应用启动流程
Spring Cloud与Kubernetes系列文章已经更新到第十五篇,而源码分析类的文章笔者是默认大家都已经对Spring的源码所有了解了,至少什么工厂Bean、后置处理器BeanPostProcessor、Bean的生命周期、Spring容器的启动流程等都有所了解。在继续分析Spring Cloud实现动态配置的源码之前,我们需要补充一些Spring Boot和Spring Cloud的基础知识才能继续往下看。本篇我们一起学习Spring Boot与Spring Cloud应用的启动流程。S.
2020-07-03 08:00:00 2268 1
原创 Spring Cloud动态配置实现原理与源码分析
实际项目开发中少不了各种配置,如连接数据库的配置、连接Redis集群的配置等,通常我们也会为一个项目部署到每个环境准备不同的配置文件,例如测试环境配置连接测试的数据库。基本上静态配置就已经满足日常需求,但是静态配置缺少灵活性,一经修改就需要重新构建部署应用,同时也缺少安全性,容易泄漏线上环境的配置,所以我们需要一种更灵活更安全的配置方式:动态配置。动态配置的使用场景并不是为了替换静态配置而出现的,数据库连接配置这些一般都不会改动,所以数据库连接这类配置使用静态配置还是动态配置都没有多大影响。对于那...
2020-07-02 00:00:00 1444 1
原创 当miniexcel遇上adb,报表数据导出性能调优建议
关注“Java艺术”一起来充电吧!报表数据导出是一个常见且令人头疼的问题,该功能主要放在管理后台,系统运营人员经常需要导出一些数据做分析。报表导出遇到的难题,一是数据量大,二是查询耗时,...
2020-07-01 12:11:54 408
IPv4-国家-区域-城市-运营商csv格式数据库-附使用java写的使用demo
2023-10-14
2019年毕业设计-一款情侣APP 附论文、作品视频演示、代码
2023-10-13
2019毕业设计作品-一款支持来电拦截的通讯录APP 附论文核心部分、项目代码
2023-10-12
Java堆外内存使用分析详细
2023-10-12
ArchSummit 2023 全球架构师峰会 北京站 PPT(公开)
2023-10-12
用c#实现的读取rtf格式文件的工具类
2016-01-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人