随笔分类 - metric
摘要:对于RPC的性能收集,以微博的motan和阿里的dubbo为例,也是通过intercept去做的。 motan的性能指标收集:使用的是motan中的扩展机制 //此处的spi使用的是weibo.com中的扩展 @SpiMeta(name = "pepperProfiler") @Activation
阅读全文
摘要:所有的性能收集其实都是基于aop的,对于jedisCluster性能(jedis的一样)的收集,因为其并没有提供类似于mybatis的intercept机制,所以只能手动实现可供收集性能数据的切面。 说到切面,第一个就会想到代理,接下来就通过cglib实现对jedisCluster的代理。 动态代理
阅读全文
摘要:mybatis的性能指标统计与Http类似,也是基于aop的方式,利用mybatis提供的intercept机制。直接看下Interceptor的定义: @Intercepts( value = { @Signature (type=Executor.class, method="update",
阅读全文
摘要:这一篇主要是介绍一种使用Prometheus收集服务健康状态指标的案例,以常用的Druid数据源为例。 先看几个公共类的定义: HealthStats:其中定义了MeterRegistry和namespace(用来区分不同的统计对象) public class HealthStats { priva
阅读全文
摘要:这一篇看一下Prometheus对http请求的指标收集,先来看两个指标定义: (1)使用的指标类型: 这三种指标类型的特性在之前推荐的一篇关于Prometheus介绍的文章里有详细说明,这里简单回顾一下,gauge可以进行加减操作,反映指标的当前状态;counter只能增不能减,反映指标的计数,如
阅读全文
摘要:因为Prometheus是通过http接口的形式来采集数据的,所以需要向Prometheus server暴露端点。spring boot2.x版本在Actuator中集成了Prometheus,此外也可以手动向其暴露端点。接下来就说第二种。 @Spi public interface MeterR
阅读全文
摘要:这是一篇非常好的关于Prometheus的介绍文章,包括其架构、工作模式、数据模型等。 https://www.ipyker.com/2019/01/12/prometheus.html
阅读全文
摘要:java也有自己的SPI实现,但是有很多小毛病,比如:会一次性加载所有扩展实现,不能支持一些复杂的元数据表达,据说多了类加载器同时加载会有并发问题(没有考证过)。所以很多框架都提供了SPI机制供使用者自己扩展,例如Dubbo,使用SPI还可以实现按需加载扩展点。之前看过Dubbo的SPI实现,其实它
阅读全文