聊聊PowerJob的HeavyTaskTracker的dispatchTask

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

聊聊PowerJob的StoreStrategy

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

聊聊PowerJob的LightTaskTracker

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

聊聊PowerJob的RemoteEngine

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

聊聊PowerJob的OmsLogHandler

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

聊聊PowerJob的ServerDiscoveryService

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

聊聊PowerJob的ProcessorLoader

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

聊聊PowerJobAutoConfiguration

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

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

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

聊聊LoggingEventAsyncDisruptorAppender

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

聊聊reactor-logback的AsyncAppender

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

聊聊AsyncHttpClient的ListenableFuture

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

聊聊AsyncHttpClient的SignatureCalculator

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

聊聊AsyncHttpClient的ClientStats

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

聊聊AsyncHttpClient的TimeoutTimerTask

2023-12-14
阅读 12 分钟
97
序本文主要研究一下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 分钟
149
序本文主要研究一下AsyncHttpClient的IOExceptionFilterIOExceptionFilterorg/asynchttpclient/filter/IOExceptionFilter.java {代码...} IOExceptionFilter接口定义了filter方法,在捕获到IOException的时候执行ResumableIOExceptionFilterorg/asynchttpclient/handler/resumable/ResumableIOExceptionFilter.java {代...

聊聊AsyncHttpClient的RequestFilter

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

聊聊AsyncHttpClient的KeepAliveStrategy

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

聊聊AsyncHttpClient的exception

2023-12-10
阅读 5 分钟
201
序本文主要研究一下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 分钟
145
org/springframework/boot/autoconfigure/web/servlet/WebMvcProperties.java

聊聊AsyncHttpClient的ChannelPool

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

聊聊AsyncHttpClient的ConnectionSemaphore

2023-12-07
阅读 14 分钟
168
ConnectionSemaphore主要用于控制连接的maxConnections及maxConnectionsPerHost;它定义了freeChannels表示可用连接的信号量,定义了freeChannelsPerHost维护每个host的可用连接新用量,类型是NonBlockingSemaphoreLike;它提供了tryAcquireGlobal用于获取全局的空闲连接,tryAcquirePerHost用于获取指定host的空闲连接...

聊聊AsyncHttpClient的默认配置

2023-12-06
阅读 10 分钟
223
AsyncHttpClientConfig接口定义了一系列获取配置的接口,比如getMaxConnections、getConnectTimeout、getReadTimeout、getPooledConnectionIdleTimeout等

聊聊nginx的keepalive_time参数

2023-12-05
阅读 9 分钟
266
nginx的1.19.10版本新增了keepalive_time参数,用于限制一个keep-alive连接处理请求的最长时间。当达到这个时间后,连接会在后续请求处理完成后关闭。

聊聊nginx的keepalive相关参数

2023-12-04
阅读 6 分钟
276
默认是75s,客户端的一个keep-alive连接在服务端保持open的时间,为0表示禁用keep-alive,可选指定header_timeout,若有指定则response header会有Keep-Alive: timeout=time,该header能被Mozilla和Konqueror浏览器识别,MSIE浏览器大概在60s会关闭keep-alive连接

聊聊logback的ThrowableProxyConverter

2023-12-03
阅读 8 分钟
202
ThrowableHandlingConverter继承了ClassicConverter,其handlesThrowable方法返回true

聊聊springboot的logging.group

2023-12-02
阅读 10 分钟
121
序本文主要研究一下springboot的logging.groupLoggersEndpointorg/springframework/boot/actuate/logging/LoggersEndpoint.java {代码...} LoggersEndpoint提供了loggers、loggerLevels、configureLogLevel方法LoggerGroupsorg/springframework/boot/logging/LoggerGroups.java {代码...} LoggerGroups实现了Iterable接...

聊聊springboot的http.server.requests

2023-12-01
阅读 25 分钟
190
org/springframework/boot/actuate/autoconfigure/metrics/MetricsProperties.java