面试官:什么是Java优雅埋点API的设计思路?
2023-02-18 16:36:24 时间
埋点API的问题
- 主流程隔离 例如旁支逻辑的NPE或者GSON解析异常等
- 支持Debug级别支持Debug级别
- 简洁易用的API
实现思路和方案
- 单个异常的隔离 通过闭包进行trycatch,进行异常的隔离
- 支持不同级别的配置 通过闭包传入配置,实现动态的配置
- 简洁易用的API
Metrics API
- 单个异常的隔离 √
- 支持不同级别的配置 √
- 简洁易用的API √
- 支持局部分片 √
- 支持表达式 √
Metric API
Metric API提供了一系列方法来记录应用程序的埋点数据。
/**
* API demo show
*/
private static void metrics(BiConsumer<Map<String, String>, Map<String, String>> howToShow) {
// Option 1: add metric manually
Metrics.metric(() -> {
// index
index(MetricIndexs.metric_type, "index");
// store
store(MetricStores.context, "store");
// exception
exception(new RuntimeException());
// object
object(new Object());
});
howToShow.accept(Metrics.showIndexs(), Metrics.showStores());
Metrics.build();
// Option 2: add metric by automatic placeholder "$"
Metrics.Log().of(
// index
$(MetricIndexs.metric_type, "index"),
// store
$(MetricStores.context, "store"),
// exception
$(new RuntimeException()),
// object
$(new Object())
);
howToShow.accept(Metrics.showIndexs(), Metrics.showStores());
Metrics.build();
// Also you can use {@code local()} to start a local scope
String local = Metrics.local();
Metrics.Log(local).of(
// Also you can use supplier
() -> $(MetricIndexs.metric_type, "index"),
() -> $(MetricStores.context, "store"),
() -> $(new RuntimeException()),
() -> $(new Object())
);
howToShow.accept(Metrics.showIndexs(), Metrics.showStores());
Metrics.build(local);
}
Maven
<dependency>
<groupId>com.kevinten</groupId>
<artifactId>vrml-metric</artifactId>
<version>1.0.0</version>
</dependency>
相关文章
- 一文带你剖析LiteOS互斥锁Mutex源代码
- Java面向对象系列(8)- Super详解
- Java面向对象系列(7)- 什么是继承
- Java面向对象系列(6)- 封装详解
- Java面向对象系列(5)- 构造器详解
- 想快速重构智慧园区5A系统,这份方案推荐给你
- Java面向对象系列(4)- 类与对象的创建
- 释放千行百业数据价值,华为云DAYU有一套
- Java面向对象系列(3)- 回顾方法的调用
- Java面向对象系列(2)- 回顾方法的定义
- Java面向对象系列(1)- 什么是面向对象
- 如何只用一个小时定制一个行业AI 模型?
- 文字识别:关键信息提取的3种探索方法
- 架构可视化支撑系统演进探索
- 手把手教你写一个spring IOC容器
- 空中交警:借你一双“慧眼”,让你看透这飞机的“黑色十分钟”
- 有了这个框架,平台开发谁还手敲代码?
- 对于数据,科技小白提出了灵魂三问:从哪儿来?到哪儿去?能干什么?
- nsqlookupd:高性能消息中间件 NSQ 解析
- 提升漏洞修复率,DevSecOps真的很有一套