聊聊PowerJob的Evaluator

1 月 12 日
阅读 3 分钟
170
序本文主要研究一下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 分钟
283
序本文主要研究一下PowerJob的LockServiceLockServicetech/powerjob/server/extension/LockService.java {代码...} LockService接口定义了tryLock、unlock方法DatabaseLockServicetech/powerjob/server/extension/defaultimpl/DatabaseLockService.java {代码...} DatabaseLockService基于数据库实现了LockService,其构...

聊聊PowerJob的IdGenerateService

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

聊聊PowerJob的TimingStrategyHandler

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

聊聊PowerJob的DatabaseMonitorAspect

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

聊聊jvm的mapped buffer的统计

1 月 7 日
阅读 4 分钟
1.7k
序本文主要研究一下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 分钟
779
序本文主要研究一下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 分钟
317
序本文主要研究一下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 分钟
260
tech/powerjob/official/processors/impl/script/AbstractScriptProcessor.java

聊聊PowerJob的AbstractSqlProcessor

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

聊聊PowerJob的FileCleanupProcessor

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

2023年终总结

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

聊聊PowerJob的HeavyTaskTracker的dispatchTask

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

聊聊PowerJob的StoreStrategy

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

聊聊PowerJob的LightTaskTracker

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

聊聊PowerJob的RemoteEngine

2023-12-26
阅读 17 分钟
323
序本文主要研究一下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 分钟
326
WorkerHealthReporter实现了Runnable接口,其run方法先获取currentServer,再获取systemMetrics,接着构建WorkerHeartbeat,最后通过TransportUtils.reportWorkerHeartbeat上报

聊聊PowerJob的OmsLogHandler

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

聊聊PowerJob的ServerDiscoveryService

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

聊聊PowerJob的ProcessorLoader

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

聊聊PowerJobAutoConfiguration

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

聊聊如何在应用代码里捕获线程堆栈

2023-12-20
阅读 3 分钟
364
h2的Profiler的getRunnableStackTraces方法通过Thread.getAllStackTraces()来收集线程堆栈

聊聊LoggingEventAsyncDisruptorAppender

2023-12-19
阅读 18 分钟
392
LoggingEventAsyncDisruptorAppender继承了DelegatingAsyncDisruptorAppender,它定义了includeCallerData属性,其prepareForDeferredProcessing在includeCallerData为true时执行event.getCallerData()

聊聊reactor-logback的AsyncAppender

2023-12-18
阅读 5 分钟
255
AsyncAppender继承了ContextAwareBase,同时实现了Appender、AppenderAttachable、CoreSubscriber接口

聊聊AsyncHttpClient的ListenableFuture

2023-12-17
阅读 10 分钟
7.5k
ListenableFuture继承了java.util.concurrent.Future,它定义了done、abort、touch、addListener、toCompletableFuture方法

聊聊AsyncHttpClient的SignatureCalculator

2023-12-16
阅读 7 分钟
276
SignatureCalculator定义了calculateAndAddSignature接口,它首先计算签名,然后添加到requestBuilder

聊聊AsyncHttpClient的ClientStats

2023-12-15
阅读 5 分钟
252
ClientStats通过Map<String, HostStats>维护了每个host对应的统计;它提供了getStatsPerHost、getTotalConnectionCount、getTotalActiveConnectionCount、getTotalIdleConnectionCount方法

聊聊AsyncHttpClient的TimeoutTimerTask

2023-12-14
阅读 12 分钟
223
序本文主要研究一下AsyncHttpClient的TimeoutTimerTaskTimerTaskio/netty/util/TimerTask.java {代码...} netty的TimerTask接口定义了run方法,其入参为TimeoutTimeoutio/netty/util/Timeout.java {代码...} Timeout接口定义了timer()、task()、isExpired()、isCancelled()、cancel()方法TimeoutTimerTaskorg/asynchttpc...