karafka 2.0.0.beta2 → 2.0.0.beta5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/ci.yml +18 -15
- data/CHANGELOG.md +49 -0
- data/Gemfile.lock +8 -8
- data/bin/benchmarks +2 -2
- data/bin/integrations +44 -15
- data/bin/scenario +29 -0
- data/bin/{stress → stress_many} +0 -0
- data/bin/stress_one +13 -0
- data/bin/wait_for_kafka +20 -0
- data/docker-compose.yml +28 -11
- data/karafka.gemspec +2 -2
- data/lib/karafka/active_job/routing/extensions.rb +12 -2
- data/lib/karafka/app.rb +2 -1
- data/lib/karafka/base_consumer.rb +75 -45
- data/lib/karafka/connection/client.rb +88 -22
- data/lib/karafka/connection/listener.rb +60 -18
- data/lib/karafka/connection/pauses_manager.rb +8 -0
- data/lib/karafka/connection/rebalance_manager.rb +20 -19
- data/lib/karafka/contracts/config.rb +17 -3
- data/lib/karafka/contracts/server_cli_options.rb +1 -1
- data/lib/karafka/errors.rb +3 -0
- data/lib/karafka/instrumentation/logger_listener.rb +34 -10
- data/lib/karafka/instrumentation/monitor.rb +3 -1
- data/lib/karafka/licenser.rb +26 -7
- data/lib/karafka/pro/active_job/consumer.rb +30 -9
- data/lib/karafka/pro/active_job/dispatcher.rb +9 -9
- data/lib/karafka/pro/active_job/job_options_contract.rb +9 -9
- data/lib/karafka/pro/base_consumer.rb +73 -0
- data/lib/karafka/pro/loader.rb +38 -20
- data/lib/karafka/pro/performance_tracker.rb +9 -9
- data/lib/karafka/pro/processing/coordinator.rb +12 -0
- data/lib/karafka/pro/processing/jobs/consume_non_blocking.rb +10 -11
- data/lib/karafka/pro/processing/jobs_builder.rb +32 -0
- data/lib/karafka/pro/processing/scheduler.rb +56 -0
- data/lib/karafka/pro/routing/extensions.rb +32 -0
- data/lib/karafka/processing/coordinator.rb +84 -0
- data/lib/karafka/processing/coordinators_buffer.rb +58 -0
- data/lib/karafka/processing/executor.rb +23 -9
- data/lib/karafka/processing/executors_buffer.rb +46 -15
- data/lib/karafka/processing/jobs/base.rb +8 -3
- data/lib/karafka/processing/jobs/consume.rb +11 -4
- data/lib/karafka/processing/jobs_builder.rb +29 -0
- data/lib/karafka/processing/result.rb +29 -0
- data/lib/karafka/processing/scheduler.rb +22 -0
- data/lib/karafka/processing/worker.rb +17 -9
- data/lib/karafka/routing/consumer_group.rb +1 -1
- data/lib/karafka/routing/subscription_group.rb +1 -1
- data/lib/karafka/routing/topic.rb +14 -0
- data/lib/karafka/setup/config.rb +19 -9
- data/lib/karafka/status.rb +1 -3
- data/lib/karafka/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +19 -7
- metadata.gz.sig +0 -0
- data/lib/karafka/pro/scheduler.rb +0 -54
- data/lib/karafka/scheduler.rb +0 -20
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: karafka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.beta5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maciej Mensfeld
|
@@ -34,7 +34,7 @@ cert_chain:
|
|
34
34
|
R2P11bWoCtr70BsccVrN8jEhzwXngMyI2gVt750Y+dbTu1KgRqZKp/ECe7ZzPzXj
|
35
35
|
pIy9vHxTANKYVyI4qj8OrFdEM5BQNu8oQpL0iQ==
|
36
36
|
-----END CERTIFICATE-----
|
37
|
-
date: 2022-
|
37
|
+
date: 2022-07-05 00:00:00.000000000 Z
|
38
38
|
dependencies:
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: dry-configurable
|
@@ -112,7 +112,7 @@ dependencies:
|
|
112
112
|
requirements:
|
113
113
|
- - ">="
|
114
114
|
- !ruby/object:Gem::Version
|
115
|
-
version: 2.3.
|
115
|
+
version: 2.3.1
|
116
116
|
- - "<"
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: 3.0.0
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
requirements:
|
123
123
|
- - ">="
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version: 2.3.
|
125
|
+
version: 2.3.1
|
126
126
|
- - "<"
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: 3.0.0
|
@@ -171,7 +171,10 @@ files:
|
|
171
171
|
- bin/create_token
|
172
172
|
- bin/integrations
|
173
173
|
- bin/karafka
|
174
|
-
- bin/
|
174
|
+
- bin/scenario
|
175
|
+
- bin/stress_many
|
176
|
+
- bin/stress_one
|
177
|
+
- bin/wait_for_kafka
|
175
178
|
- certs/karafka-pro.pem
|
176
179
|
- certs/mensfeld.pem
|
177
180
|
- config/errors.yml
|
@@ -231,18 +234,27 @@ files:
|
|
231
234
|
- lib/karafka/pro/active_job/consumer.rb
|
232
235
|
- lib/karafka/pro/active_job/dispatcher.rb
|
233
236
|
- lib/karafka/pro/active_job/job_options_contract.rb
|
237
|
+
- lib/karafka/pro/base_consumer.rb
|
234
238
|
- lib/karafka/pro/loader.rb
|
235
239
|
- lib/karafka/pro/performance_tracker.rb
|
240
|
+
- lib/karafka/pro/processing/coordinator.rb
|
236
241
|
- lib/karafka/pro/processing/jobs/consume_non_blocking.rb
|
237
|
-
- lib/karafka/pro/
|
242
|
+
- lib/karafka/pro/processing/jobs_builder.rb
|
243
|
+
- lib/karafka/pro/processing/scheduler.rb
|
244
|
+
- lib/karafka/pro/routing/extensions.rb
|
238
245
|
- lib/karafka/process.rb
|
246
|
+
- lib/karafka/processing/coordinator.rb
|
247
|
+
- lib/karafka/processing/coordinators_buffer.rb
|
239
248
|
- lib/karafka/processing/executor.rb
|
240
249
|
- lib/karafka/processing/executors_buffer.rb
|
241
250
|
- lib/karafka/processing/jobs/base.rb
|
242
251
|
- lib/karafka/processing/jobs/consume.rb
|
243
252
|
- lib/karafka/processing/jobs/revoked.rb
|
244
253
|
- lib/karafka/processing/jobs/shutdown.rb
|
254
|
+
- lib/karafka/processing/jobs_builder.rb
|
245
255
|
- lib/karafka/processing/jobs_queue.rb
|
256
|
+
- lib/karafka/processing/result.rb
|
257
|
+
- lib/karafka/processing/scheduler.rb
|
246
258
|
- lib/karafka/processing/worker.rb
|
247
259
|
- lib/karafka/processing/workers_batch.rb
|
248
260
|
- lib/karafka/railtie.rb
|
@@ -256,7 +268,6 @@ files:
|
|
256
268
|
- lib/karafka/routing/topic.rb
|
257
269
|
- lib/karafka/routing/topics.rb
|
258
270
|
- lib/karafka/runner.rb
|
259
|
-
- lib/karafka/scheduler.rb
|
260
271
|
- lib/karafka/serialization/json/deserializer.rb
|
261
272
|
- lib/karafka/server.rb
|
262
273
|
- lib/karafka/setup/config.rb
|
@@ -273,6 +284,7 @@ files:
|
|
273
284
|
homepage: https://karafka.io
|
274
285
|
licenses:
|
275
286
|
- LGPL-3.0
|
287
|
+
- Commercial
|
276
288
|
metadata:
|
277
289
|
source_code_uri: https://github.com/karafka/karafka
|
278
290
|
rubygems_mfa_required: 'true'
|
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Karafka
|
4
|
-
module Pro
|
5
|
-
# This Karafka component is a Pro component.
|
6
|
-
# All of the commercial components are present in the lib/karafka/pro directory of this
|
7
|
-
# repository and their usage requires commercial license agreement.
|
8
|
-
#
|
9
|
-
# Karafka has also commercial-friendly license, commercial support and commercial components.
|
10
|
-
#
|
11
|
-
# By sending a pull request to the pro components, you are agreeing to transfer the copyright
|
12
|
-
# of your code to Maciej Mensfeld.
|
13
|
-
|
14
|
-
# Optimizes scheduler that takes into consideration of execution time needed to process
|
15
|
-
# messages from given topics partitions. It uses the non-preemptive LJF algorithm
|
16
|
-
#
|
17
|
-
# This scheduler is designed to optimize execution times on jobs that perform IO operations as
|
18
|
-
# when taking IO into consideration, the can achieve optimized parallel processing.
|
19
|
-
#
|
20
|
-
# This scheduler can also work with virtual partitions.
|
21
|
-
#
|
22
|
-
# Aside from consumption jobs, other jobs do not run often, thus we can leave them with
|
23
|
-
# default FIFO scheduler from the default Karafka scheduler
|
24
|
-
class Scheduler < ::Karafka::Scheduler
|
25
|
-
# Schedules jobs in the LJF order for consumption
|
26
|
-
#
|
27
|
-
# @param queue [Karafka::Processing::JobsQueue] queue where we want to put the jobs
|
28
|
-
# @param jobs_array [Array<Karafka::Processing::Jobs::Base>] jobs we want to schedule
|
29
|
-
#
|
30
|
-
def schedule_consumption(queue, jobs_array)
|
31
|
-
pt = PerformanceTracker.instance
|
32
|
-
|
33
|
-
ordered = []
|
34
|
-
|
35
|
-
jobs_array.each do |job|
|
36
|
-
messages = job.messages
|
37
|
-
message = messages.first
|
38
|
-
|
39
|
-
cost = pt.processing_time_p95(message.topic, message.partition) * messages.size
|
40
|
-
|
41
|
-
ordered << [job, cost]
|
42
|
-
end
|
43
|
-
|
44
|
-
ordered.sort_by!(&:last)
|
45
|
-
ordered.reverse!
|
46
|
-
ordered.map!(&:first)
|
47
|
-
|
48
|
-
ordered.each do |job|
|
49
|
-
queue << job
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
data/lib/karafka/scheduler.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Karafka
|
4
|
-
# FIFO scheduler for messages coming from various topics and partitions
|
5
|
-
class Scheduler
|
6
|
-
# Schedules jobs in the fifo order
|
7
|
-
#
|
8
|
-
# @param queue [Karafka::Processing::JobsQueue] queue where we want to put the jobs
|
9
|
-
# @param jobs_array [Array<Karafka::Processing::Jobs::Base>] jobs we want to schedule
|
10
|
-
def schedule_consumption(queue, jobs_array)
|
11
|
-
jobs_array.each do |job|
|
12
|
-
queue << job
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
# Both revocation and shutdown jobs can also run in fifo by default
|
17
|
-
alias schedule_revocation schedule_consumption
|
18
|
-
alias schedule_shutdown schedule_consumption
|
19
|
-
end
|
20
|
-
end
|