Spring Cloud与微服务总结Spring Cloud 常见优化项的总结
程序员文章站
2022-03-26 18:05:58
用undertow替换tomcat,因为undertow是基于NIO非阻塞式请求。也可以用最新的tomcat8.5版本的NIO模式,当然使用场景也有区分,undertow完全支持webrocket,适合IO密集型请求的情况。Feign优化,用okhttp替换httpclient,原因主要是简单高效。有okhttp可以设置连接池,减少请求延迟,可以共享Socket,减少对服务器的请求次数,其他比如自动处理Gzip压缩,有缓存相应数据,减少重复请求。可以在生产环境关闭Zipkin链路追踪,因为占用CPU...
- 用undertow替换tomcat,因为undertow是基于NIO非阻塞式请求。也可以用最新的tomcat8.5版本的NIO模式,当然使用场景也有区分,undertow完全支持webrocket,适合IO密集型请求的情况。
- Feign优化,用okhttp替换httpclient,原因主要是简单高效。有okhttp可以设置连接池,减少请求延迟,可以共享Socket,减少对服务器的请求次数,其他比如自动处理Gzip压缩,有缓存相应数据,减少重复请求。
- 可以在生产环境关闭Zipkin链路追踪,因为占用CPU很多。也可自己用消息队列方案自己实现。
- 代码逻辑优化,比如用消息队列优化业务逻辑,把异步处理的任务剥离出来,查询慢的地方,考虑用ES类索引服务。
- Nacos(阿里的方案)可以替换eruka,K8s集群有时会造成注册中心注册失败,nacos在性能和稳定性上都更优。
- redis缓存、ES索引
- 数据库的索引优化,数据库垂直分(微服务分库),读写分离,水平分,分布式数据库。(方案有ID求余分库,热点分库,分布式索引)
- 增加服务器,做负载均衡
- Hystrix线程池的大小和超时时间我们都是可以设置的,线上环境,我们需要对这些参数进行调整,该如何调整呢?假设你的系统B,预计QPS是30,每秒请求响应时间是200ms,那么可以算出30*0.2=6,然后再加点缓冲空间,比如4,那么总共就是6+4=10的线程数量,当然这个4你可以自己调整,这是为了防止突然增大的流量给个缓冲的余地。当然这个缓存增加的线程数量对设置超时时间是有参考意义的,比如上面我如果设置了10条线程,此时的超时时间该设置多少?并不是越多越好哦,应该是这么算:10/30=0.333,那么也就是在300ms左右,10是线程池数目,30是你预计的QPS。想象下,如果超时时间设为500ms,当很多请求都变为500ms时,也就是10/0.5=20,你的QPS变成了20,那么多余的请求就不会不断堆积,导致线程卡死,线程卡死后的恢复速度会是比较慢的,所以要合理设置线程池和超时时间
本文地址:https://blog.csdn.net/u012562943/article/details/107498805
上一篇: Redis实现分布式锁用图说话