接口超时引起系统雪崩原因反思

笔者亲身经历的一次线上服务雪崩,可谓刻骨铭心…经过此次故障,不断反思,不断复盘,成长颇多。


一种使用自定义注解+切面统一收集审计日志的方式

最近在做一个审计模块,想要实现的是为微服务各个模块提供一个审计日志服务,即各个微服务模块收集日志 + 日志存储在db/elk/hive,然后针对存储的审计日志做展示或者分析的一个服务。可以看出实现一个审计服务的三个关键地方是:

  • 收集日志
  • 存储日志
  • 展示/分析日志

第一个关键地方是收集日志, 本文也想探讨下如何更低耦合的收集日志。


Git子模块实践

应用背景

Git 子模块的使用场景是多个项目都使用了一个公共的项目,为了节省开发成本并且减少出错几率,我们想要实现:每个使用公共项目的外部项目如果更改了这个公共项目,这些更新都可以同步到其他使用了这个公共项目的项目中。Git提供了「子模块」这个工具。


责任链模式实践

最近参与的项目开发了大量RPC接口,并且需要针对所有RPC接口开发接入公司方法监控的埋点代码。开发RPC方法的监控埋点代码有两种方式:

1、在每个RPC方法体内添加埋点代码。

这是最简单直观的开发方式,但是会造成大量重复冗余的代码。假设项目有m个RPC类,每个类有n个方法,就要开发m*n个监控埋点代码,而监控埋点代码除了方法监控key之外没有任何不同的。显然这种方式并不优雅,耦合度很高。

2、使用责任链模式处理所有RPC的调用请求。


JVM调试工具入门

上周末连续两天凌晨都收到了系统的内存使用率过高报警,在分析监控系统记录的内存使用率曲线和内存使用情况后发现,主要是因为在老年代迟迟没有触发full gc导致监控系统连续多次监测到可用内存过低,而触发的报警。在系统触发一次full gc之后,内存使用率会显著下降,报警也没有持续下去。由于无法复现问题,具体原因仍未找到,但是通过此过程,学习到的内存分析工具与方法,却值得记录一番。


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×