springboot 启动速度优化备忘 有更新!
目前我们的微服务启动速度都谈不上快. 在添加了预热之后启动速度会更加的感人. 这个原因通过研究以及行业相关的解决方案大概有:
- 升级 springBoot到2.x
- JarIndex来自己重写classLoader来提升搜索速度.
- 直接用原生的mainClass启动
目前我们的微服务启动速度都谈不上快. 在添加了预热之后启动速度会更加的感人. 这个原因通过研究以及行业相关的解决方案大概有:
当在传输大文件,或者是从另外一个流获取数据再通过Thrift传输到RPC Server端时, 时常会想. 如果Thrfit支持流传输就好了. 但是目前并没有支持. 具体请看正文.
从Spring6和SpringBoot3开始, Spring框架支持通过注解的形式将远程HTTP服务代理为Java接口. 类似于Feign
和Retrofit
.
声明式的HTTP接口包括请求的方式等信息.这样我们可以使用带注解的Java接口简单地表达远程API的细节.让Spring生成一个实现该接口并执行请求的代理. 这样可以有效的减少模板代码.
对于TOMCAT来说,NIO与BIO实际并没有太大的区别. 原因在于Servlet规范导致了整体的协议处理都基本是阻塞读的. 除了Header部分以及长链接中的连接复用时的read next request等待.
此篇文章简单介绍了小猿口算的拍照检查服务的图片处理过程遇到的问题. 我们简单分析了链路中一些可能存在的问题. 主要在于
multipart/form-data
方式图片上传可能存在的阻塞点以及可能的性能问题.List<Byte>
这个会进一步的降低程序性能. 在数据拷贝时性能会较差.本文对Google的Guava包的Ratelimiter原理进行了详细而深入的分析. 旨在梳理其实现基本原理与代码逻辑. 着重对突发型限流(Burst)与平滑限流器的原理进行了深入介绍.
有的时候你的业务系统会对外提供一些服务. 比如HTTP服务. 这样使用方可能是我们C端用户,也有可能是我们的QA同学. 特别是在反馈问题的时候我们希望能够有一个统一的唯一标识符能够提供给用户. 让用户在反馈问题的时候,能够带上一个关键字, 比如相应的请求的带上的时间戳(
timestamp
). 或者是请求号(requestNo
)这样在定位问题的时候能够比较快速的确定问题上下文.进而进行排查. 当然还有比这里刚刚说的两个参数更通用的办法.那就是使用TraceID
; 而这篇备忘性质的文章主要是记录基本的处理办法和一部分技术细节.
注意: 此篇文章的方法已经不适用于最新版本的skywalking ,如果你在使用如大于8.2.0版本的代码.请确认是否其它方法