聊聊jvm的direct buffer统计

2024-01-07
阅读 10 分钟
1.2k
序本文主要研究一下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 分钟
529
序本文主要研究一下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 分钟
509
tech/powerjob/official/processors/impl/script/AbstractScriptProcessor.java

聊聊PowerJob的AbstractSqlProcessor

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

聊聊PowerJob的FileCleanupProcessor

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

2023年终总结

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

聊聊PowerJob的HeavyTaskTracker的dispatchTask

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

聊聊PowerJob的StoreStrategy

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

聊聊PowerJob的LightTaskTracker

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

聊聊PowerJob的RemoteEngine

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

聊聊PowerJob的OmsLogHandler

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

聊聊PowerJob的ServerDiscoveryService

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

聊聊PowerJob的ProcessorLoader

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

聊聊PowerJobAutoConfiguration

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

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

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

聊聊LoggingEventAsyncDisruptorAppender

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

聊聊reactor-logback的AsyncAppender

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

聊聊AsyncHttpClient的ListenableFuture

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

聊聊AsyncHttpClient的SignatureCalculator

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

聊聊AsyncHttpClient的ClientStats

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

聊聊AsyncHttpClient的TimeoutTimerTask

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

聊聊AsyncHttpClient的IOExceptionFilter

2023-12-13
阅读 6 分钟
410
序本文主要研究一下AsyncHttpClient的IOExceptionFilterIOExceptionFilterorg/asynchttpclient/filter/IOExceptionFilter.java {代码...} IOExceptionFilter接口定义了filter方法,在捕获到IOException的时候执行ResumableIOExceptionFilterorg/asynchttpclient/handler/resumable/ResumableIOExceptionFilter.java {代...

聊聊AsyncHttpClient的RequestFilter

2023-12-12
阅读 6 分钟
466
序本文主要研究一下AsyncHttpClient的RequestFilterRequestFilterorg/asynchttpclient/filter/RequestFilter.java {代码...} RequestFilter定义了filter方法ThrottleRequestFilterorg/asynchttpclient/filter/ThrottleRequestFilter.java {代码...} ThrottleRequestFilter实现了RequestFilter接口,它使用Semaphore来对r...

聊聊AsyncHttpClient的KeepAliveStrategy

2023-12-11
阅读 6 分钟
487
序本文主要研究一下AsyncHttpClient的KeepAliveStrategyKeepAliveStrategyorg/asynchttpclient/channel/KeepAliveStrategy.java {代码...} KeepAliveStrategy接口定义了keepAlive方法用于决定是否对该connection进行keep aliveDefaultKeepAliveStrategyorg/asynchttpclient/channel/DefaultKeepAliveStrategy.java {代码...

聊聊AsyncHttpClient的exception

2023-12-10
阅读 5 分钟
559
序本文主要研究一下AsyncHttpClient的exceptionChannelClosedExceptionorg/asynchttpclient/exception/ChannelClosedException.java {代码...} ChannelClosedException用于表示Channel closed的异常handleUnexpectedClosedChannelorg/asynchttpclient/netty/request/NettyRequestSender.java {代码...} NettyRequestSend...

聊聊spring.mvc.servlet.load-on-startup

2023-12-09
阅读 8 分钟
679
org/springframework/boot/autoconfigure/web/servlet/WebMvcProperties.java

聊聊AsyncHttpClient的ChannelPool

2023-12-08
阅读 13 分钟
394
ChannelPool定义了offer、poll、removeAll、isOpen、destroy、flushPartitions、getIdleChannelCountPerHost方法,它有两个实现类,分别是NoopChannelPool及DefaultChannelPool