Am scris unui consumator Kafka să consume fluxul de date criptate (~ 1 MB) și să le decripteze înainte de a le adăuga la compartimentul S3. Este nevoie de ~20 de minute pentru a procesa 1000 de înregistrări, iar dacă elimin logica de criptare și rulez la fel, durează mai puțin de 3 minute pentru a procesa 1000 de înregistrări.
Următoarele sunt configurațiile pe care le folosesc în prezent.
allow.auto.create.topics = adevărat
auto.commit.interval.ms = 5000
auto.offset.reset = cel mai recent
check.crcs = adevărat
client.dns.lookup = use_all_dns_ips
connections.max.idle.ms = 540000
default.api.timeout.ms = 60000
enable.auto.commit = adevărat
exclude.internal.topics = adevărat
fetch.max.bytes = 52428800
fetch.max.wait.ms = 500
fetch.min.bytes = 1
group.instance.id = nul
heartbeat.interval.ms = 3000
interceptor.classes = []
intern.leave.group.on.close = adevărat
internal.throw.on.fetch.stable.offset.unsupported = fals
isolation.level = read_uncommitted
key.deserializer = clasa org.apache.kafka.common.serialization.StringDeserializer
max.partition.fetch.bytes = 1000000
max.poll.interval.ms = 300000
max.poll.records = 500
metadata.max.age.ms = 300000
metric.reporters = []
metrics.num.samples = 2
metrics.recording.level = INFO
metrics.sample.window.ms = 30000
partition.assignment.strategy = [clasa org.apache.kafka.clients.consumer.RangeAssignor]
receive.buffer.bytes = 655360
reconnect.backoff.max.ms = 1000
reconnect.backoff.ms = 50
request.timeout.ms = 30000
retry.backoff.ms = 100
send.buffer.bytes = 131072
session.timeout.ms = 10000
value.deserializer = clasa org.apache.kafka.common.serialization.StringDeserializer
Subiectul are 10 partiții. Am consumat cu mai mulți consumatori (1-10) atribuindu-i aceluiași grup de consumatori. Dar indiferent câți consumatori folosesc, a consumat aceeași cantitate de date în timpul dat.
Cum fac consumatorii mai rapid? Și poate ajuta Apache Spark în asta?