02 2021 档案

摘要:最近一个服务上线一个月后出现某个时间段响应延迟的问题,先看下监控数据: 这里有一点,单台实例的并发最高达到200是因为没修改spring boot中tomcat默认的最大线程数(默认是200)。 从上图可以看出21点—24点以及第二天08点—11点服务的延迟已经达到s级别,甚至严重时已经达到30多s 阅读全文
posted @ 2021-02-24 20:37 jingyi_up 阅读(341) 评论(0) 推荐(0) 编辑
摘要:对于RPC的性能收集,以微博的motan和阿里的dubbo为例,也是通过intercept去做的。 motan的性能指标收集:使用的是motan中的扩展机制 //此处的spi使用的是weibo.com中的扩展 @SpiMeta(name = "pepperProfiler") @Activation 阅读全文
posted @ 2021-02-09 11:33 jingyi_up 阅读(488) 评论(0) 推荐(0) 编辑
摘要:所有的性能收集其实都是基于aop的,对于jedisCluster性能(jedis的一样)的收集,因为其并没有提供类似于mybatis的intercept机制,所以只能手动实现可供收集性能数据的切面。 说到切面,第一个就会想到代理,接下来就通过cglib实现对jedisCluster的代理。 动态代理 阅读全文
posted @ 2021-02-08 18:23 jingyi_up 阅读(313) 评论(0) 推荐(0) 编辑
摘要:mybatis的性能指标统计与Http类似,也是基于aop的方式,利用mybatis提供的intercept机制。直接看下Interceptor的定义: @Intercepts( value = { @Signature (type=Executor.class, method="update", 阅读全文
posted @ 2021-02-08 15:05 jingyi_up 阅读(506) 评论(0) 推荐(0) 编辑
摘要:这一篇主要是介绍一种使用Prometheus收集服务健康状态指标的案例,以常用的Druid数据源为例。 先看几个公共类的定义: HealthStats:其中定义了MeterRegistry和namespace(用来区分不同的统计对象) public class HealthStats { priva 阅读全文
posted @ 2021-02-08 14:25 jingyi_up 阅读(1740) 评论(0) 推荐(0) 编辑
摘要:1、ImportBeanDefinitionRegistrar接口 该接口用来实现动态注入Bean,可以实现该接口,但是还要利用@Import进行导入才能实现Bean的注入。使用示例如下: 定义一个注解: @Retention(RetentionPolicy.RUNTIME) @Target(Ele 阅读全文
posted @ 2021-02-08 11:04 jingyi_up 阅读(91) 评论(0) 推荐(0) 编辑
摘要:一、springBoot生命周期伴随的事件 springBoot的启动过程就是通过事件机制驱动的,可以通过监听这些事件做一些定制化的功能。因为springBoot已经成为众多中间件和框架的基础,所以了解其整个生命周期是很必要的,接下来就从源码的角度去分析它的整个启动流程。 二、源码分析 1、实例化S 阅读全文
posted @ 2021-02-08 11:03 jingyi_up 阅读(129) 评论(0) 推荐(0) 编辑
摘要:这一篇看一下Prometheus对http请求的指标收集,先来看两个指标定义: (1)使用的指标类型: 这三种指标类型的特性在之前推荐的一篇关于Prometheus介绍的文章里有详细说明,这里简单回顾一下,gauge可以进行加减操作,反映指标的当前状态;counter只能增不能减,反映指标的计数,如 阅读全文
posted @ 2021-02-07 10:59 jingyi_up 阅读(1684) 评论(0) 推荐(0) 编辑
摘要:因为Prometheus是通过http接口的形式来采集数据的,所以需要向Prometheus server暴露端点。spring boot2.x版本在Actuator中集成了Prometheus,此外也可以手动向其暴露端点。接下来就说第二种。 @Spi public interface MeterR 阅读全文
posted @ 2021-02-06 17:58 jingyi_up 阅读(943) 评论(0) 推荐(0) 编辑
摘要:这是一篇非常好的关于Prometheus的介绍文章,包括其架构、工作模式、数据模型等。 https://www.ipyker.com/2019/01/12/prometheus.html 阅读全文
posted @ 2021-02-06 15:53 jingyi_up 阅读(57) 评论(0) 推荐(0) 编辑
摘要:java也有自己的SPI实现,但是有很多小毛病,比如:会一次性加载所有扩展实现,不能支持一些复杂的元数据表达,据说多了类加载器同时加载会有并发问题(没有考证过)。所以很多框架都提供了SPI机制供使用者自己扩展,例如Dubbo,使用SPI还可以实现按需加载扩展点。之前看过Dubbo的SPI实现,其实它 阅读全文
posted @ 2021-02-05 20:18 jingyi_up 阅读(129) 评论(0) 推荐(0) 编辑
摘要:Motan是新浪微博研发并开源的一个RPC框架,与Dubbo相比,他更轻量级一些,代码也更少一些,但也五脏俱全。 Motan在GitHub上的项目地址:https://github.com/weibocom/motan 关于Motan的使用,可以看官方Wiki:https://github.com/ 阅读全文
posted @ 2021-02-03 18:11 jingyi_up 阅读(186) 评论(0) 推荐(0) 编辑
摘要:业务需求:为了防止业务中关键接口被刷(对于网赚类业务,提现和收益类接口属于关键接口),客户端和服务端采用非对称加密进行安全校验。 思路:1、为不影响产品使用体验,仅对关键接口(关键接口一般非频繁操作)进行加密 2、将时间戳作为加密项之一,防止同一个签名可以使用多次 3、服务端对定义的关键接口请求做校 阅读全文
posted @ 2021-02-03 16:54 jingyi_up 阅读(458) 评论(0) 推荐(0) 编辑
摘要:场景:前端在request body中传了多个参数,为了方便使用@RequestBody映射成相应的参数对象。 @PostMapping(value = "/game/sync") public WebMessage gameMsgReport(UserInfo userInfo,@RequestB 阅读全文
posted @ 2021-02-03 15:49 jingyi_up 阅读(516) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示