聊聊PowerJob的GridFsManager

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

聊聊PowerJob的OhMyClassLoader

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

聊聊PowerJob的DesignateServer

1 月 17 日
阅读 4 分钟
67
tech/powerjob/server/remote/server/redirector/DesignateServerAspect.java

聊聊PowerJob的TransportServiceAware

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

聊聊PowerJob的QueryConvertUtils

1 月 15 日
阅读 7 分钟
69
QueryConvertUtils提供了toSpecification静态方法,用于将PowerQuery转换为jpa的Specification

聊聊PowerJob的Alarmable

1 月 14 日
阅读 7 分钟
53
Alarm定义了fetchTitle方法,提供了fetchContent默认方法,它有两个实现类分别是JobInstanceAlarm、WorkflowInstanceAlarm

聊聊PowerJob的UseCacheLock

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

聊聊PowerJob的Evaluator

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

聊聊PowerJob的LockService

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

聊聊PowerJob的IdGenerateService

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

聊聊PowerJob的TimingStrategyHandler

1 月 9 日
阅读 16 分钟
87
tech/powerjob/server/core/scheduler/auxiliary/TimingStrategyHandler.java

聊聊PowerJob的DatabaseMonitorAspect

1 月 8 日
阅读 4 分钟
104
wrapperMonitor主要是构建DatabaseEvent,成功时获取effectRows,异常时获取erroMsg,最后计算耗时,执行monitorService.monitor

聊聊jvm的mapped buffer的统计

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

聊聊jvm的direct buffer统计

1 月 7 日
阅读 10 分钟
289
序本文主要研究一下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

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

聊聊PowerJob的AbstractScriptProcessor

1 月 4 日
阅读 8 分钟
122
tech/powerjob/official/processors/impl/script/AbstractScriptProcessor.java

聊聊PowerJob的AbstractSqlProcessor

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

聊聊PowerJob的FileCleanupProcessor

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

聊聊PowerJob的HttpProcessor

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

2023年终总结

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

聊聊PowerJob的HeavyTaskTracker的dispatchTask

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

聊聊PowerJob的StoreStrategy

2023-12-29
阅读 4 分钟
79
序本文主要研究一下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 分钟
65
HeavyTaskTracker继承了TaskTracker,它也是个抽象类,其构造器主要是创建了ProcessorTrackerStatusHolder、taskId2BriefInfo、SegmentLock;它定义了抽象方法initTaskTracker;它提供了updateAppendedWfContext、updateTaskStatus、submitTask、receiveProcessorTrackerHeartbeat、broadcast方法;它实现了destroy、sto...

聊聊PowerJob的LightTaskTracker

2023-12-27
阅读 18 分钟
79
TaskTracker是个抽象类,其构造器接收ServerScheduleJobReq、WorkerRuntime,然后根据ServerScheduleJobReq构建InstanceInfo;它定义了destroy、stopTask、fetchRunningStatus抽象方法

聊聊PowerJob的RemoteEngine

2023-12-26
阅读 17 分钟
102
序本文主要研究一下PowerJob的RemoteEngineRemoteEnginetech/powerjob/remote/framework/engine/RemoteEngine.java {代码...} RemoteEngine定义了start及close方法,其中start接收EngineConfig参数返回EngineOutputEngineConfigtech/powerjob/remote/framework/engine/EngineConfig.java {代码...} EngineConfig定义了se...

聊聊PowerJob的WorkerHealthReporter

2023-12-25
阅读 10 分钟
83
WorkerHealthReporter实现了Runnable接口,其run方法先获取currentServer,再获取systemMetrics,接着构建WorkerHeartbeat,最后通过TransportUtils.reportWorkerHeartbeat上报

聊聊PowerJob的OmsLogHandler

2023-12-24
阅读 9 分钟
86
OmsLogHandler提供了submitLog方法,它先判断logQueue大小是否超过REPORT_SIZE(1024),超过则通过异步线程执行logSubmitter;接着将内容包装为InstanceLogContent,然后放入到logQueue

聊聊PowerJob的ServerDiscoveryService

2023-12-23
阅读 9 分钟
124
ServerDiscoveryService定义了currentServerAddress、ip2Address、服务发现url模版,失败次数,最大失败次数

聊聊PowerJob的ProcessorLoader

2023-12-22
阅读 13 分钟
81
序本文主要研究一下PowerJob的ProcessorLoaderProcessorLoadertech/powerjob/worker/processor/ProcessorLoader.java {代码...} ProcessorLoader定义了load方法,用于根据ProcessorDefinition加载ProcessorBeanProcessorDefinitiontech/powerjob/worker/extension/processor/ProcessorDefinition.java {代码...} Process...

聊聊PowerJobAutoConfiguration

2023-12-21
阅读 17 分钟
74
Worker定义了enabled、appName、port(默认27777)、serverAddress(支持多个ip:port用逗号分隔)、protocol(默认为akka,也支持http)、storeStrategy(默认为disk,也支持memory,主要是配置H2数据库的存储模式)、maxResultLength(返回结果的最大长度,默认为8192)、enableTestMode(默认为false,主要用于没有部署server的场...