Skip to content

fabionaspolini/kafka-playground

Repository files navigation

Kafka Playground

Visão geral

Kafka

SDK .net

Docker compose

Template para subir serviço local.

Fonte: https://github.com/confluentinc/cp-all-in-one

# subir serviço
docker compose up -d

# remover serviço
docker compose down

Benchmark consumidores

.net basic                                      java basic
10 milhões: Concluído em 00:00:10.9476809       10 milhões: Concluído em 00:00:03. Millis: 3.100
50 milhões: Concluído em 00:00:42.3009102       50 milhões: Concluído em 00:00:14. Millis: 14.852

.net avro                                       java avro
10 milhões: Concluído em 00:00:21.0839030       10 milhões: Concluído em 00:00:09. Millis: 9.465
50 milhões: Concluído em 00:01:34.9580854       50 milhões: Concluído em 00:00:38. Millis: 38.270

Avro

Plugin mais antigo, mas sem margem de personalziação que possa causar errors de namespace.

dotnet tool install -g Confluent.Apache.Avro.AvroGen
avrogen -s ./Pessoa.avsc .

Plugin mais atual, porém possui a opção de mudar o namespace do código fonte gerado e isso causa quebra de interoperabilidade entre linguagens.

dotnet tool install --global Apache.Avro.Tools
avrogen -s ./Pessoa.avsc . --namespace "playground.kafka:playground.kafka"

Schema registry

local server: http://localhost:8081/

Rotas:

GET /subjects
GET /subjects/{subject}/versions
GET /subjects/{subject}/versions/{version}
GET /subjects/{subject}/versions/{version}/referencedby
GET /schemas
GET /schemas/ids/{id}
GET /schemas/ids/{id}/versions

http://localhost:8081/subjects/playground.kafka.Pessoa/versions/1

Kafka Configs

Broker

  • log.retention.check.interval.ms: Frequência para verificar se algum log é elegível para exclusão. Default: 5 min (Exclusão ou compactação de acordo com cleanup.policy do tópico)

Scripts

Producers

kafka-console-producer.sh --bootstrap-server localhost:9092 --topic kafka-flow-playground \
	--property parse.key=true \
	--property key.separator=:

Consumers

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kafka-flow-playground \
	--from-beginning \
	--property print.key=true

Excluir consumer groups

kafka-consumer-groups.sh --bootstrap-server localhost:9092 --delete --group dotnet-playground & \
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --delete --group java-playground

Excluir tópicos

kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic basic-playground
kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic avro-playground
kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic kafka-flow-playground

Outros

kafka-topics.sh --bootstrap-server localhost:9092 --topic topic1 --describe

Clean up policy: Compact

# criar tópico - com politica de compactação (parâmetros agressivos para o teste).
kafka-topics.sh --bootstrap-server localhost:9092 --create --topic cadastros \
	--config cleanup.policy=compact \
	--config segment.ms=100 \
	--config min.cleanable.dirty.ratio=0.01

# produzir dados no formato "key:value"
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic cadastros \
	--property parse.key=true \
	--property key.separator=:

# consumer
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic cadastros \
	--from-beginning \
	--property print.key=true \
	--timeout-ms 1000

# excluir
kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic cadastros

Tópico com configuração tradicional de exclusão para efeito de comparação.

kafka-topics.sh --bootstrap-server localhost:9092 --create --topic cadastros \
	--config cleanup.policy=delete \
	--config retention.ms=10000

Outros scripts para os exemplos de código

# consumer para exemplo "05 without-consumer-group"
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic without-consumer-group-playground \
	--from-beginning \
	--property print.key=true \
	--timeout-ms 1000

About

Kafka samples

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published