Хороший принцип — ориентироваться на количество читателей.
Скорость чтения конкретного consumer’а — это скорость чтения одной партиции. Например, если в один топик записывается 10 МБ/с, а consumer способен читать только 2 МБ/с, значит, потребуется минимум 5 партиций.
Но количество партиций лучше увеличивать еще и с запасом на лаг. Например, если consumer несколько часов по какой-то причине не работал, потом ему придется догонять накопившиеся данные. Для этого желательно иметь запас производительности, например, в два раза.
Если читателей пока нет и ориентироваться не на что, можно смотреть на объем записи.
Практический принцип — не записывать в одну партицию больше 1 МБ/с, потому что такую нагрузку consumer обычно способен стабильно обрабатывать.
Но и заранее создавать слишком много партиций не стоит. Чем больше партиций и данных хранит Kafka, тем сложнее восстановление после сбоев.
В современных версиях Kafka после 4.0 могут существовать миллионы партиций. В старых версиях даже десятки тысяч партиций уже серьезно влияли на скорость восстановления после отказа брокера. Подробнее об этом можно посмотреть
здесь.
Для маленьких топиков часто достаточно одной партиции. А если нагрузка уже сейчас измеряется десятками сообщений в секунду и может вырасти, лучше заранее заложить хотя бы несколько — например, минимум три.