聊聊PowerJob的MapReduceProcessor

2024-01-26
阅读 4 分钟
395
序本文主要研究一下PowerJob的MapReduceProcessorMapReduceProcessor {代码...} MapReduceProcessor继承了MapProcessor,它新增了reduce方法TaskResulttech/powerjob/worker/core/processor/TaskResult.java {代码...} TaskResult定义了taskId、success、result属性handleLastTasktech/powerjob/worker/core/processor/r...

聊聊PowerJob的ProcessorTracker

2024-01-25
阅读 8 分钟
491
ProcessorTracker接收TaskTrackerStartTaskReq参数,然后初始化线程池、初始化定时任务、初始化processorBean,它提供了submitTask、destroy方法

聊聊PowerJob的MapProcessor

2024-01-24
阅读 15 分钟
596
MapProcessor接口继承了BasicProcessor,它提供了默认的map方法用于分发子任务,它主要是构造了ProcessorMapTaskRequest,通过TransportUtils.reliableMapTask发送请求;它还提供了isRootTask方法用于判断当前任务是不是根任务

聊聊PowerJob的ThreadPoolConfig

2024-01-23
阅读 5 分钟
452
ThreadPoolConfig定义了PowerJobTimingPool、PowerJobBackgroundPool、PowerJobLocalDbPool四个线程池,以及一个taskScheduler,这里使用的是spring的ThreadPoolTaskExecutor及ThreadPoolTaskScheduler,他们都继承了ExecutorConfigurationSupport

聊聊PowerJob的HashedWheelTimer

2024-01-22
阅读 12 分钟
307
Timer接口定义了schedule方法,用于在指定时间之后调度TimerTask,它返回TimerFuture;stop方法返回未处理的TimerTask

聊聊PowerJob的UserService

2024-01-21
阅读 4 分钟
269
序本文主要研究一下PowerJob的UserServiceUserServicetech/powerjob/server/core/service/UserService.java {代码...} UserService提供了save及fetchNotifyUserList方法,基于UserInfoRepository来实现UserInfoDOtech/powerjob/server/persistence/remote/model/UserInfoDO.java {代码...} UserInfoDO定义了username、em...

聊聊PowerJob的AliOssService

2024-01-20
阅读 7 分钟
334
序本文主要研究一下PowerJob的AliOssServiceDFsServicetech/powerjob/server/extension/dfs/DFsService.java {代码...} DFsService接口定义了store、download、fetchFileMeta、cleanExpiredFiles方法AbstractDFsServicetech/powerjob/server/persistence/storage/AbstractDFsService.java {代码...} AbstractDFsService...

聊聊PowerJob的GridFsManager

2024-01-19
阅读 6 分钟
346
GridFsManager实现了InitializingBean接口,其afterPropertiesSet从environment读取oms.mongodb.enable配置,默认为false;其构造器注入mongoTemplate,若为null则available为false;其getBucket方法则根据bucketName缓存到bucketCache,若不存在则通过GridFSBuckets.create创建

聊聊PowerJob的OhMyClassLoader

2024-01-18
阅读 7 分钟
279
OhMyClassLoader继承了URLClassLoader,它定义了load方法,遍历urls,挨个根据url创建JarFile,然后遍历jarFile.entries(),找到.class结尾的entry,判断是否是packageName开头的,是则执行父类的loadClass方法

聊聊PowerJob的DesignateServer

2024-01-17
阅读 4 分钟
398
tech/powerjob/server/remote/server/redirector/DesignateServerAspect.java

聊聊PowerJob的TransportServiceAware

2024-01-16
阅读 3 分钟
326
序本文主要研究一下PowerJob的TransportServiceAwareTransportServiceAwaretech/powerjob/server/remote/aware/TransportServiceAware.java {代码...} TransportServiceAware继承了PowerJobAware,它定义了setTransportService方法FriendActortech/powerjob/server/remote/server/FriendActor.java {代码...} FriendActo...

聊聊PowerJob的QueryConvertUtils

2024-01-15
阅读 7 分钟
316
QueryConvertUtils提供了toSpecification静态方法,用于将PowerQuery转换为jpa的Specification

聊聊PowerJob的Alarmable

2024-01-14
阅读 7 分钟
285
Alarm定义了fetchTitle方法,提供了fetchContent默认方法,它有两个实现类分别是JobInstanceAlarm、WorkflowInstanceAlarm

聊聊PowerJob的UseCacheLock

2024-01-13
阅读 4 分钟
285
序本文主要研究一下PowerJob的UseCacheLockUseCacheLocktech/powerjob/server/core/lock/UseCacheLock.java {代码...} UseCacheLock注解定义了type、key、concurrencyLevel属性UseCacheLockAspecttech/powerjob/server/core/lock/UseCacheLockAspect.java {代码...} UseCacheLockAspect拦截@UseCacheLock注解,它定义了l...

聊聊PowerJob的Evaluator

2024-01-12
阅读 3 分钟
276
序本文主要研究一下PowerJob的EvaluatorEvaluatortech/powerjob/server/core/evaluator/Evaluator.java {代码...} Evaluator接口定义了evaluate方法,它有expression和input两个参数,返回计算结果GroovyEvaluatortech/powerjob/server/core/evaluator/GroovyEvaluator.java {代码...} GroovyEvaluator实现了Evaluator,...

聊聊PowerJob的LockService

2024-01-11
阅读 6 分钟
396
序本文主要研究一下PowerJob的LockServiceLockServicetech/powerjob/server/extension/LockService.java {代码...} LockService接口定义了tryLock、unlock方法DatabaseLockServicetech/powerjob/server/extension/defaultimpl/DatabaseLockService.java {代码...} DatabaseLockService基于数据库实现了LockService,其构...

聊聊PowerJob的IdGenerateService

2024-01-10
阅读 9 分钟
388
IdGenerateService的构造器接收ServerInfoService,然后通过serverInfoService.fetchServiceInfo().getId()获取machineId,最后创建SnowFlakeIdGenerator,其DATA_CENTER_ID为0;其allocate返回的是snowFlakeIdGenerator.nextId()

聊聊PowerJob的TimingStrategyHandler

2024-01-09
阅读 16 分钟
512
tech/powerjob/server/core/scheduler/auxiliary/TimingStrategyHandler.java

聊聊PowerJob的DatabaseMonitorAspect

2024-01-08
阅读 4 分钟
378
wrapperMonitor主要是构建DatabaseEvent,成功时获取effectRows,异常时获取erroMsg,最后计算耗时,执行monitorService.monitor

聊聊jvm的mapped buffer的统计

2024-01-07
阅读 4 分钟
1.9k
序本文主要研究一下jvm的mapped buffer的统计示例 {代码...} jvm.buffer.memory.used[链接] {代码...} jvm.buffer.memory.used分了direct和mapped两大类,一共用了384MBmapped[链接] {代码...} 可以看到这里mapped用了128MBdirect[链接] {代码...} 可以看到这里direct用了256MBNative Memory Tracking开启 {代码...} 监...

聊聊jvm的direct buffer统计

2024-01-06
阅读 10 分钟
1k
序本文主要研究一下jvm的direct buffer统计spring boot metricsjvm.memory.used {代码...} jvm.memory.used包括heap和nonheap两大类heap[链接] {代码...} heap的话根据具体的垃圾收集器类型有不同的区分nonheap[链接] {代码...} nonheap这里包括3个,分别是Metaspace、Compressed Class Space、Code Cachejvm.buffer.mem...

聊聊PowerJob的DispatchStrategy

2024-01-05
阅读 6 分钟
444
序本文主要研究一下PowerJob的DispatchStrategyDispatchStrategytech/powerjob/common/enums/DispatchStrategy.java {代码...} DispatchStrategy定义了HEALTH_FIRST、RANDOM两个枚举值getSuitableWorkerstech/powerjob/server/remote/worker/WorkerClusterQueryService.java {代码...} WorkerClusterQueryService的getSu...

聊聊PowerJob的AbstractScriptProcessor

2024-01-04
阅读 8 分钟
408
tech/powerjob/official/processors/impl/script/AbstractScriptProcessor.java

聊聊PowerJob的AbstractSqlProcessor

2024-01-03
阅读 10 分钟
393
AbstractSqlProcessor继承了CommonBasicProcessor,其process0先将入参解析为SqlParams,然后调用validateParams进行参数校验,针对sqlParser不为null的会通过sqlParser进行解析,接着通过validateSql校验sql,最后通过executeSql执行sql;它定义了getConnection抽象方法,提供了setSqlParser、registerSqlValidator方法

聊聊PowerJob的FileCleanupProcessor

2024-01-02
阅读 8 分钟
332
序本文主要研究一下PowerJob的FileCleanupProcessorBroadcastProcessortech/powerjob/worker/core/processor/sdk/BroadcastProcessor.java {代码...} BroadcastProcessor继承了BasicProcessor,它提供了preProcess、postProcess方法FileCleanupProcessortech/powerjob/official/processors/impl/FileCleanupProcessor.ja...

聊聊PowerJob的HttpProcessor

2024-01-01
阅读 8 分钟
547
序本文主要研究一下PowerJob的HttpProcessorBasicProcessortech/powerjob/worker/core/processor/sdk/BasicProcessor.java {代码...} BasicProcessor是适用于单机运行的基础处理器,它定于了process方法CommonBasicProcessortech/powerjob/official/processors/CommonBasicProcessor.java {代码...} CommonBasicProcesso...

2023年终总结

2023-12-31
阅读 1 分钟
655
这两年互联网逐步走下神坛,各种裁员优化的新闻,程序员35岁如果不升到P8或者管理层,基本职业生涯到头了,投简历也差不多无人问津了,现在的职场是95后的天下了,谁还愿意招比自己年纪大,薪资要求又高的老程序员呢,虽然阿里云、语雀、滴滴各个厂分别贡献了降本增笑的谈资,但是现实确实很残酷。35+的一线程序员该何去...

聊聊PowerJob的HeavyTaskTracker的dispatchTask

2023-12-30
阅读 13 分钟
400
HeavyTaskTracker的dispatchTask方法通过TransportUtils.ttStartPtTask将任务派发到ProcessorTracker

聊聊PowerJob的StoreStrategy

2023-12-29
阅读 4 分钟
349
序本文主要研究一下PowerJob的StoreStrategyStoreStrategytech/powerjob/worker/common/constants/StoreStrategy.java {代码...} StoreStrategy枚举定义了DISK、MEMORY两个枚举ConnectionFactorytech/powerjob/worker/persistence/ConnectionFactory.java {代码...} ConnectionFactory在initDatasource的时候会根据Store...

聊聊PowerJob的HeavyTaskTracker

2023-12-28
阅读 25 分钟
459
HeavyTaskTracker继承了TaskTracker,它也是个抽象类,其构造器主要是创建了ProcessorTrackerStatusHolder、taskId2BriefInfo、SegmentLock;它定义了抽象方法initTaskTracker;它提供了updateAppendedWfContext、updateTaskStatus、submitTask、receiveProcessorTrackerHeartbeat、broadcast方法;它实现了destroy、sto...