Umas das grandes dúvidas ao utilizar o Kafka é saber quantas partições são necessárias ao criar novos tópicos. Bem, não existe uma fórmula geral, o que temos é uma aproximação detalhada neste excelente artigo How to choose the number of topics/partitions in a Kafka cluster?, escrito por Jun Rao. Outro artigo muito relevante é o Benchmarking Apache Kafka: 2 Million Writes Per Second, escrito por Jay Kreps. Nele são revelados resultados importantes sobre a taxa de transferência para producers e consumers.
Então, com base no artigo de Jun Rao, temos a fórmula aproximada para determinar o número de partições:
MAX(t/p, t/c)
Onde:
-
t
: taxa de transferência desejada -
p
: taxa de transferência do producer -
c
: taxa de transferência do consumer
Como o artigo sugere, o valor para a taxa de transferência do consumer depende de como ele processa os registros e por esse motivo devemos realizar nossas próprias medições ao invés de utilizar o valor-base descrito no artigo de Jay Kreps. Já para o valor referente ao producer, podemos tomar como base àquele revelado pelo artigo.
Uma dica é você realizar todas as medições, assim você também entenderá como é a sua infra kafka.
Aplicando a fórmula
Primeiro temos de definir qual é a unidade da nossa taxa de transferência, que poderia ser MB/s ou Mensagens/s. Mas as mensagens tem tamanhos variados e utilizá-las nas medições talvez não conduza a resultados realistas, então, MB/s
é uma boa unidade de medida para aplicação da fórmula.
- Unidade:
MB/s
(megabytes por segundo)
A medição é realizada empregando um producer e um tópico com apenas uma partição. Então, digamos que o resultado para nosso p
, foi:
89 MB/s
A medição para taxa de transferência do consumer é similar, ou seja, apenas um tópico com uma única partição. Então, digamos que o valor de c
é:
75 MB/s
Imagine que nosso alvo com relação a taxa de transferência seja 450 MB/s
. Aplicando a fórmula de aproximação temos:
p = 89
c = 75
t = 450
MAX(450/89, 450/75)
MAX(5.1, 6) = 6
Portanto, o número de partições é 6
.
Notadamente, não trata-se de uma fórmula para qualquer caso de uso, porém, agora temos um ponto de partida e não somente números mágicos.
Realize testes e coloque nos comentários quais foram os resultados, suas observações são valiósas.
Até o próximo artigo!
Top comments (3)
Excelente!
Obrigado Álvaro!
Some comments may only be visible to logged-in visitors. Sign in to view all comments.