摘要:
1、依赖传递的概念 pom.xml 中引入的依赖,在构建或运行时所有必要的类和资源都会自动添加到项目的 classpath 中。 Maven 中的依赖是有传递(Transitive)性的,默认会包含传递的依赖,这样就不用手动引用每一个依赖了。比如下面这个依赖关系中,A 依赖 B,B 依赖了 C……, 阅读全文
摘要:
虽然一直在使用kafka,但是还没有系统的整理过kafka的原理,学习每个框架都要掌握其应用、原理和设计理念,这样才能举一反三,学为所用。今天就整理一些kafka相关的知识,一是为了加强记忆,二是通过整理再次回顾一下作者的设计思想。 kafka的定位:消息中间件、分布式实时流处理平台:(1)结合ha 阅读全文
摘要:
目前分库分表除了应用层基于业务逻辑的方式,在技术层面主要两种方式:一种是中间件代理,例如mycat和sharding-proxy,对于应用是比较透明的,支持的语言也多;第二种是侵入式,也就是数据库直连,例如sharding-jdbc。sharding-proxy和sharding-jdbc已经整合到 阅读全文
摘要:
一个安静的晚上突然被群里报警打断,然后果断不情愿的爬起来找问题,通过监控发现一个服务的QPS暴增,接口响应延迟也上来了,达到s级别了,所以赶紧找问题。 因为应用很依赖redis,第一时间先看是不是它,果然还真是它,看下图: 确定了问题的方向就该找具体原因了,进一步查看Zabbix发现其中一台redi 阅读全文
摘要:
最近一个服务上线一个月后出现某个时间段响应延迟的问题,先看下监控数据: 这里有一点,单台实例的并发最高达到200是因为没修改spring boot中tomcat默认的最大线程数(默认是200)。 从上图可以看出21点—24点以及第二天08点—11点服务的延迟已经达到s级别,甚至严重时已经达到30多s 阅读全文
摘要:
对于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 阅读全文
摘要:
1、ImportBeanDefinitionRegistrar接口 该接口用来实现动态注入Bean,可以实现该接口,但是还要利用@Import进行导入才能实现Bean的注入。使用示例如下: 定义一个注解: @Retention(RetentionPolicy.RUNTIME) @Target(Ele 阅读全文