课程名称:Java架构师-十项全能
课程章节:
性能治理、依赖治理
主讲老师:
书生
课程内容:
性能治理:
解决性能问题:
解决流量的问题, 流量很高,或者不均衡。
解决热点问题。
解决数据问题:表设计。
优化日志打印,消耗性能,IO是很大的瓶颈。
面对流量问题:最核心的是缓存建设,是抗住流量最关键的一点;缓存预热;流量整形,削峰填谷;异步化解决同步代码或者同步请求中不着急的业务由异步来完成。
面对热点问题:分散热点数据,不要让所有热点数据都打到某一张表或某一行数据,大家都去修改,大大降低了系统的性能。
面对数据问题:大key,造长短缓存,更新不频繁的用长缓存。更新频繁的做短缓存。表拆分,mysql的表过百万性能就下降了。治理慢SQL。
打印日志:只打关键日志。对于线上问题,通过流量回放重新打印日志来解决。使用日志异步化。
准备工作:(在流量到来之前的准备)
热点数据:热点分散
缓存建设:超时管理、长短缓存
缓存预热:建立链路缓存、刷新超时时间
流量约束:(在流量到来时处理)
流量整形:令牌桶、流量缓存
流量控制:限流、熔断
依赖治理
依赖带来提效,也带来风险
依赖分直接依赖、间接依赖、循环依赖
依赖保护:熔断保护、兜底方案、依赖安全
依赖治理:临时包问题、依赖升级、依赖冲突、依赖瘦身、私有依赖
在依赖管理中:
用正式包替换临时包,即SNAPSHOT治理
对于问题版本、漏洞版本,进行问题依赖版本升级
对能力升级、历史清退,进行依赖升级功能改造
对间接依赖、循环依赖,进行依赖冲突管理
对向下兼容和稳定保证,是作为依赖的基本要求
依赖瘦身:
使用命令去除未使用依赖和重复依赖
maven helper插件, 帮助分析依赖树
maven dependency:tree 定位冲突依赖, 进行一一排除