笔者亲身经历的一次线上服务雪崩,可谓刻骨铭心…经过此次故障,不断反思,不断复盘,成长颇多。
最近在做一个审计模块,想要实现的是为微服务各个模块提供一个审计日志服务,即各个微服务模块收集日志 + 日志存储在db/elk/hive,然后针对存储的审计日志做展示或者分析的一个服务。可以看出实现一个审计服务的三个关键地方是:
第一个关键地方是收集日志, 本文也想探讨下如何更低耦合的收集日志。
最近参与的项目开发了大量RPC接口,并且需要针对所有RPC接口开发接入公司方法监控的埋点代码。开发RPC方法的监控埋点代码有两种方式:
1、在每个RPC方法体内添加埋点代码。
这是最简单直观的开发方式,但是会造成大量重复冗余的代码。假设项目有m个RPC类,每个类有n个方法,就要开发m*n个监控埋点代码,而监控埋点代码除了方法监控key之外没有任何不同的。显然这种方式并不优雅,耦合度很高。
2、使用责任链模式处理所有RPC的调用请求。
Update your browser to view this website correctly. Update my browser now