- 博客(118)
- 资源 (4)
- 收藏
- 关注
原创 sentinel prometheus指标收集及资源规则正则表达式实现
依赖 simpleclient 主要是为了实现自定义Collector:SentinelCollector, SentinelCollector 继承了抽象类 Collector,实现 collect 方法来获取指标样本数据。主要是通过增加 RuleManager 来统一管理普通规则和正则规则,为了减少正则解析/匹配所带来的性能损耗,增加了资源和匹配后的正则限流规则缓存,当获取资源规则时直接从Map 中读取缓存,避免每次都重新进行一次正则匹配。这是一种典型的空间换时间的做法。
2024-03-09 00:59:50
1229
原创 记一次 logback 没有生成独立日志文件问题
问题出在了日志源文件的文件夹创建有问题,使用 IDEA 创建文件夹时,直接像创建 Java package 一样 paas.sendinfo.switch.clinet 创建了文件目录,其实创建出来的文件目录不是。文件夹名称的一级目录。就导致引入日志文件时找不到对应的 sendinfo-paas-switch-client-log.xml 文件,也就没有产生独立的日志文件。在新项目发布后发现日志文件并没有按照期望的方式独立开来,而是都写在了 application.log 文件中。目录分级创建后的效果。
2023-10-31 11:33:57
6402
原创 可观测性介绍
控制理论中的可观测性(observability)是指系统可以由其外部输出推断其其内部状态的程度。系统的可观测性和可控制性是数学上对偶的概念。可观测性最早是匈牙利裔工程师鲁道夫·卡尔曼针对线性动态系统提出的概念。若以信号流图来看,若所有的内部状态都可以输出到输出信号,此系统即有可观测性。一系统具有可观测性当且仅当,针对所有的状态向量及控制向量,都可以在有限时间内,只根据输出信号来识别目前的状态。–维基百科。
2023-02-13 00:24:12
8415
原创 spring cloud gateway 并发问题:java.lang.NullPointerException: null
spring cloud gateway 并发问题:java.lang.NullPointerException: null
2022-03-13 01:28:46
6380
原创 spring boot 项目启动 com.netflix.hystrix.exception.HystrixRuntimeException:timed-out and fallback failed
spring boot 项目启动异常 com.netflix.hystrix.exception.HystrixRuntimeException:timed-out and fallback failed
2022-03-04 15:07:30
1506
原创 Java 线程池抛 RejectedExecutionException 异常时 active threads 值分析
背景介绍系统日志有 RejectedExecutionException 异常,抛异常的线程池是业务程序为了某类处理过程比较慢的请求创建的,线程资源隔离,避免阻塞这个系统。异常信息类似下面输出:java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@56235b8e rejected from java.util.concurrent.ThreadPoolExecutor@49c2faa
2020-12-02 21:04:47
25375
原创 Kubernetes 部署 RabbitMQ 3.7.X 集群遇到的问题
问题描述在 Kubernetes 上部署 RabbitMQ 集群时,我们可以参考 https://github.com/rabbitmq/diy-kubernetes-examples/tree/master/minikube 下面的编排文件部署,使用上述编排文件可以部署一个正确的 RabbitMQ 集群。RabbitMQ 的版本号是 3.8。由于我们公司用的是在 3.7.24 版本上修改过的 RabbitMQ,因此修改 RabbitMQ 版本号部署,但是却遇到了问题(3.8 版本没有问题)。在 sta
2020-11-26 11:25:00
1112
原创 Kubernetes 学习之入门篇
本篇内容是在公司做技术分享时的 PPT,主要内容:Kubernetes & Docker 简介容器技术基础知识介绍Kubernetes 核心设计浅析详细内容请看PPT:https://download.csdn.net/download/u010657094/13078830
2020-10-30 18:30:23
191
原创 Kubernetes Pod 中如何查看动态创建绑定的远程磁盘使用情况
需求背景有时候希望在 pod 中查看挂载的磁盘使用情况,比如说监控磁盘使用率用于报警什么的。对于宿主机的已经确定的磁盘,我们在编排文件中编写相关的 volumes 和 volumeMounts 指定文件挂载目录即可。但是我们很多时候会使用 storageClass 动态创建云服务商的远程磁盘,然后通过云服务商提供的驱动程序自动绑定到宿主机上,那么这时又该怎么获取磁盘使用信息呢?实现其实动态创建绑定的远程磁盘会被挂载到一个特定的目录:/var/lib/kubelet/plugins/kubernetes
2020-10-25 00:05:57
1847
原创 Kubernetes 调度器调度策略配置修改
介绍Kubernetes 调度器的主要作用就是为新创建的 pod ,寻找一个最合适的节点。大概需要经过两个过程:列出所有可以调度的节点。根据不同的断言(Predicates)实现了过滤接口,过滤出能够调度的节点。在能够调度的节点中选出最合适的节点。根据不同的优先级(Priorities)实现了打分接口,选出分数最高的节点。这些打分接口都配有相关的比重,表示在总分数中的占比。默认值可以在源码 kubernetes-release\pkg\scheduler\algorithmprovider\de
2020-10-23 17:12:16
3455
原创 kubernetes 配置 pod 间的反亲和不生效问题
问题描述由于某些原因需要配置 pod 间的反亲和规则,不让两个 pod 调度到同一个节点。但是在配置完反亲和后,两个 pod 还是被调度到了同一个节点上。问题解决问题的关键是没有指定 namespaces 字段。如果不指定 namespaces 字段,或者指定了 namespaces 字段但是为空,那么作用范围将仅限于改 pod 的命名空间。对于同一个资源的不同副本来说,都是同一个命名空间,不存在改问题。但是要想配置不同类型资源 pod 的反亲和,则要指定 namespaces 字段来限定范围。
2020-09-29 19:05:33
1218
原创 深度解析 dubbo 服务调用异常:The service using threads greater than <dubbo:service executes=“128“ /> limited
背景介绍服务在上线一段时间后,就出现了 Dubbo 调用异常,异常信息为: The service using threads greater than <dubbo:service executes=“128” /> limited。这样就导致功能不可用,由于该接口在实际中的并发量并不高,因此很诡异,在经过一段分析后,最终得以解决。问题分析dubbo:service executes=“128” 表示:服务提供者每服务每方法最大可并行执行请求数,可以通过 dubbo.provider.e
2020-08-16 18:08:37
2377
6
原创 设计模式之备忘录模式
定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。通用类图具体实现
2020-06-21 20:13:41
163
原创 为什么程序中突然多了 200 个 Dubbo-thread 线程
背景在某次查看程序线程堆栈信息时,偶然发现有 200 个 Dubbo-thread 线程,而且大部分都处于 WAITING 状态,如下所示:"Dubbo-thread-200" #160932 daemon prio=5 os_prio=0 tid=0x00007f5af9b54800 nid=0x79a6 waiting on condition [0x00007f5a9acd5000] java.lang.Thread.State: WAITING (parking) at sun.misc
2020-06-03 01:46:15
3327
原创 RabbitMQ CPU 占用过高优化
背景服务器上搭建的 RabbitMQ 在并发量不是很大的情况下 CPU 占用竟然达到了 40% 左右,这种情况第一感觉是不科学的,推测应该是使用不当或哪里配置不合理造成的。问题排查首先通过 top 命令查看到 CPU 和 内存使用情况:error_logger 问题然后可以通过 RabbitMQ 提供的插件 rabbitmq_top 来查看详细的各个线程内存和 CPU 的使用情况。首先我们通过命令 rabbitmq-plugins list 查看所有插件及开启情况,然后使用命令 rabbitmq
2020-05-28 00:47:31
10443
2
原创 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
背景服务部署上线启动完成后调用数据库时报错,异常信息如下:12:34:09.975 [DubboServerHandler--thread-10] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
2020-05-22 02:11:39
1429
原创 记一次 OOM 排查过程
背景在后端服务改为在 Docker + Kubernetes 上部署后没多久,程序就由于 java.lang.OutOfMemoryError: Java heap space 原因退出重新启动。问题分析宏观角度分析微观角度分析总结
2020-05-17 19:53:16
527
原创 Java 程序 CPU 占用高问题排查
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2020-05-14 23:39:37
463
1
原创 设计模式之观察者模式
定义观察者模式也叫发布订阅模式,定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。通用类图具体实现观察者模式中有观察者和被观察者角色,他们之间的关系往往是一对多的关系,也就是一个被观察者对应多个观察者,当被观察者状态变化时,要通知其每个观察者对象。被观察者 Subject ,一般是抽象类或者是实现类,主要的职责是管理观察者并通知...
2020-04-12 15:59:16
108
原创 com.mysql.jdbc.NonRegisteringDriver 内存泄漏
问题描述某天监控突然报警服务器的内存占用较高,然后登陆服务器发现一个连接数据库的服务的内存占用很高,而且还在不断地上涨,于是通过 jmap 命令生成堆 dump文件(jmap -dump:format=b,file=rds.bin PID),然后使用 Eclipse 的 Memory Analyzer Tool (MAT) 工具来分析。问题分析表象分析通过 MAT 工具分析发现,第一个可能...
2020-01-19 18:16:50
8102
1
原创 设计模式之责任链模式
定义使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。通用类图具体实现责任链模式的目的是为了让发送者和接收者解耦,发送者不需要知道请求是由哪个接收者处理,只需要把请求给到由多个对象组成的处理链的头节点,抽象处理类 Handler 会判断是否是本节点要处理的请求,是的话处理请求,不是的话把请求传...
2020-01-11 18:14:51
153
原创 分布式系统《弹力设计之熔断、限流、降级》--读书笔记 && 框架选型
目录熔断设计限流设计降级设计框架选型熔断设计熔断器模式是用来防止应用程序不断地尝试执行可能会失败的操作,使得应用程序可以继续执行,而不会浪费 CPU 时间去等待长时间的超时产生。时序图(本图来自 Martin Fowler 的 Circuit Breaker)熔断器的几种状态闭合(Closed)状态:熔断器处于闭合状态时,会有一个基于时间的调用失败计数器,如果在这个时间内...
2020-01-04 14:20:29
553
原创 MySQL表未加索引,引发的线上事故
背景现象公司的APP突然出现响应很慢,并伴有登录不了的情况。服务端架构公司服务端采用分布式架构,服务间通过 RPC 访问,使用公司自研 RPC 框架。问题分析业务日志通过查看日志文件,发现有很多服务间的调用时间消耗在 2s 以上,这些调用基本上都是访问 MySQL 数据库,通过分析发现其中一个更新数据库的方法调用频繁且每次耗时都在 2s 以上。这时就猜测是不是更新的SQL语句wher...
2019-12-28 18:21:50
847
2
翻译 14.7.1 InnoDB Locking
本节主要讲述 InnoDB 引擎使用的锁类型共享锁和排他锁意向锁行锁间隙锁Next-Key Locks插入意向锁自增锁Predicate Locks for Spatial IndexesShared and Exclusive LocksInnoDB implements standard row-level locking where there are two typ...
2019-12-23 11:01:26
15473
2
原创 《Java 并发编程实战》--读书笔记
学习攻略 | 如何才能学好并发编程?注: 极客时间《Java 并发编程实战》–读书笔记GitHub:https://github.com/ByrsH/Reading-notes/blob/master/Concurrency/Java并发编程实战-极客时间.md并发编程领域抽象成三个核心问题:分工,同步和互斥。分工:把一个功能分给不同的线程共同实现同步:当某个条件不满足时,线程需要等待,...
2019-12-10 20:16:10
1391
1
原创 IDEA maven 项目修改代码不生效,mvn clean、install 后才生效
现象正常情况下修改完代码,运行项目就会立即生效的。但是突然有一天发现运行的还是老的代码,新代码根本没有生效。通过 mvn clean、 install 后,再运行就可以了,但是这样明显是不正常的,而且也非常麻烦。解决方案重新 import project 导入项目,就可以解决问题。...
2019-09-24 15:22:26
24951
19
原创 Spring boot 项目提示某一类型的 bean 找不到
现象项目启动输出:Description:Field pushTokenDao in com.bullyun.rule.core.strategy.AppMsgActionStrategy required a bean of type 'com.manniu.rds.api.PushTokenDao' that could not be found.Action:Conside...
2019-09-24 09:19:28
4327
原创 《MySQL实战45讲》--读书笔记
MySQL 实战45讲注: 极客时间《MySQL实战45讲》–读书笔记GitHub:https://github.com/ByrsH/Reading-notes/blob/master/Database/MySQL%E5%AE%9E%E6%88%9845%E8%AE%B2.md1、基础架构:一条SQL查询语句是如何执行的?SQL语句在MySQL各个功能模块中的执行过程:大体来说,MyS...
2019-08-31 16:07:38
3075
原创 设计模式之策略模式
定义定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。通用类图具体实现策略模式就是当满足不同条件时,使用不同的策略执行。主要用到了面向对象的继承和多态机制。抽象的策略角色定义了每个策略或算法必须具有的方法和属性。package com.yrs.strategy;/** * @Author: yangrusheng * @Description: 抽象策略角色 * ...
2019-06-23 18:49:37
174
原创 设计模式之中介者模式
定义用一个中介对象封装一系列的对象交互,中介者使各个对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
2019-03-10 17:20:18
127
原创 《Spring 实战》--读书笔记
1.1.2 依赖注入1.构造器注入:在类的构造器中不自行创建新的对象(任务),而是把对象作为参数传入。这个参数类型可以是一个接口,这样只要某个类实现了该接口,则其类的实例对象可以作为参数传入构造器。这就实现了松耦合,该类不需要知道具体是哪个实现类。1.1.3 应用切面。在XML中配置bean,然后再配置aop。1.1.4 使用模版消除样板式代码1.2 容纳你的BeanSpring自带...
2019-03-07 16:03:44
478
Kubernetes 学习之入门篇
2020-10-30
jsoup-1.8.3.jar
2015-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人