What is the best way to horizontally scale an event driven architecture when load increases?
- Many people suggest using
Kakfa
as the message queue source for EDA howeverKafka
only allows one consumer in a consumer group per partition. Repartitioning especially during heavy load situations can be costly and time consuming. - Having many consumers in a consumer group that take work and acknowledge quickly would give some horizontal scaling but now message order needs to be considered as well as load completion.
- With
RabbitMQ
queues can be created and deleted on the fly however that would require an additional orchestrator to help manage and distribute load.
Also none of this addresses the load balancing problem that comes with the territory.
Any help would be appreciated. Thanks