Java 开发

压测工具 JMeter 实操

Java 开发

线上定时任务全部罢工

Java 开发

异步并发利器:CompletableFuture、parallelStream

Java 开发

@Transactional 事务提交之后执行 @Async 修饰的方法

Java 开发

gradle 项目解决 jar 包冲突

1月27日 · 2020年

通过 Jdbc + Job 解决跨库大表数据迁移

32 0
将 scala 项目重构为 Java 微服务,在进行读迁移时,其中有一块业务数据量是亿级别的,需要进行跨库数据迁移(注意:表结构发生了很大变化),并且在迁移过程中尽量做到不停服迁移。针对亿级别的数据量级,肯定不能使用脚本迁移的方式迁移,更不可能使用 mysqldump 命令进行导入导出进行数据迁移。网上还有以导入导出文件的形式迁移百万级数据,但是这个操作需要修改 mysql 的配置,保险起见,直接 pass ...最终,选择通过 Jdbc 配合 Job 在双写阶段进行数据迁移,待数据迁移基本完毕,并且数据一致性校验没问题后,再进行读迁移的上线(此时,只需要业务方上线,将读切换到现在的微服务即可)。...
1月9日 · 2020年

@Transactional 事务提交之后执行 @Async 修饰的方法

85 0
一个 @Transactional 修饰的方法A 的内部要调用另一个用 @Async 修饰的方法B,并且方法B 要在方法A 的事务提交之后,异步执行,大概就是下面代码这样。方法A 和 方法B 假如在同一个类中,则方法B 的 @Async 注解会失效:首先解释下 @Transactional 注解失效的原因:Spring 在扫描 bean 的时候会扫描方法上是否包含 @Transactional 注解,如果包含.....
12月18日 · 2019年

异步并发利器:CompletableFuture、parallelStream

222 0
生产上 prometheus 频繁告警java.net.SocketTimeoutException: timeout(远程调用超时),首先确定是哪个接口,后查看 Hystrix 的配置,发现 A 服务对 B 服务设置的超时时间是20s(一开始是没有发现未启用这个配置的),故一直在 review B 服务的这个超时的接口,一开始是在整个接口上,接口内部的 IO 操作、MQ 操作上都做了时间差的日志打印操作,发到线上后,发现有的请求达到了10s 多,但是 Hystrix 配置的超时时间是 20s 呀,百思不得其解,眼下做的只能是赶紧优化下 B 服务的这个超时接口了(毕竟耗时太严重了)。...
12月15日 · 2019年

Error running jOOQ code generation tool: com.mysql.cj.jdbc.Driver..

152 0
今天在用 JOOQ 生成代码的时候,即运行 mvn clean install 命令时,出现以下错误,代码中指定的驱动明明是“com.mysql.jdbc.Driver”,但是报错信息中显示的确是驱动“com.mysql.cj.jdbc.Driver”。经搜索,com.mysql.jdbc.Driver 是 mysql-connector-java 5 中的com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6 及以上版本中的.....
12月6日 · 2019年

压测工具 JMeter 实操

238 0
Apache JMeter是一个Apache项目,可以用作负载测试工具,用于分析和衡量各种服务的性能,重点是Web应用程序。 JMeter可用作JDBC数据库连接,FTP,LDAP,Web服务,JMS,HTTP,通用TCP连接和OS本机进程的单元测试工具。...
12月3日 · 2019年

SpringBoot 中 @Scheduled 的执行原理

276 0
前面有篇文章是“线上定时任务全部罢工”,本文主要从代码的角度分析下原因。注解 @Scheduled 的执行原理 1、加载所有使用 @Scheduled 注解的类及方法。Spring 首先会通过类 ScheduledAnnotationBeanPostProcessor 的 postProcessAfterInitialization 方法去初始化 bean,待初始化完 bean 后,就会拦截所有用到“@Scheduled”注解的方法,进行调度处理,具体细节请看下面代码:.....
12月2日 · 2019年

gradle 项目解决 jar 包冲突

215 0
现象:当添加 jar 包 "org.apache.shardingsphere:sharding-jdbc-core:4.0.0-RC2"(仅用作举例) 后,idea给出下方的提示,并且很多类文件报错,去掉这个 jar 包后,又恢复正常。故猜测应该是 jar 包冲突导致的。...
12月1日 · 2019年

线上定时任务全部罢工

273 0
针对某块业务有两个 JOB,一个是全局处理的 JOB(每天0点执行),一个是部分处理的 JOB(每5分钟执行一次)。当晚上线时,由于已经过了0点,也就没有看这个定时任务是否正常执行(查看日志,其它定时任务都在正常执行)。隔天早上,看日志时,发现所有的定时任务全部罢工了,也没有任何报错信息。然后汇报组长问题,组长重启服务后又全部正常了(重启真是万能药呀)。后又看了看测试环境的定时任务是否正常,结果也全部罢工了,很奇怪,当时自测时,每个定时任务都是没问题的(后文揭晓)。但是具体什么原因导致的,当时真的不清楚。...
12月1日 · 2019年

junit5 下 wiremock 正确使用方式

228 0
场景描述 通过 wiremock 方式模拟远程接口调用时,发现注解 @Rule 失效,即下图代码无效:@Rulepublic WireMockRule wireMockRule = new WireMockRule(8080);...
11月30日 · 2019年

分布式主键调研

239 0
近期要对一个亿级别的表分库分表,一个很重要的环节就是要选定一个分布式主键的生成方式,本文主要总结下对分布式主键调研的结果。分布式主键生成方式主要分为两大类:中心化、去中心化。...