Tengo datos de ticks en tiempo real que provienen de Bloomberg B-PIPE para miles de acciones y opciones de capital. Tengo múltiples instancias de docker con subprocesos múltiples, cada una procesando un subconjunto de los ticks. Los datos procesados se envían a un canal utilizando redis pub/sub. También uso redis para almacenar los ticks antes de publicarlos. Tengo un script que toma una instantánea de esos datos cada un minuto y los almacena en postgresql para luego usarlos si es necesario.
Tengo otro microservicio que escucha ese canal de redis y realiza cálculos de PNL para cada cartera que contiene el ticker con la actualización.
Estoy pensando en cambiar de redis pub/sub a algo diferente. El problema que enfrento con redis pub/sub ahora es que si tengo múltiples instancias escuchando el mismo canal, podría estar procesando la misma información del ticker varias veces. ¿Existe alguna forma de solucionar esto o es hora de usar kafka, lo cual sería complicado de configurar? Y si uso kafka, ¿tendría más sentido tener un canal/tema para cada ticker individual?
Me encantaría seguir usando redis para almacenar los datos de ticks intradiarios. Estoy usando redis enterprise en Azure y me encanta el paquete de series temporales. Es muy fácil recuperar los datos en mi sistema frontal y hacer análisis. Tengo un plan de nivel bajo y no estoy seguro de si es factible actualizar a un nivel más alto ya que se vuelve mucho más caro. Ahora el servidor se ralentiza de vez en cuando e incluso se cae cerca del cierre del mercado con solo 10,000 ops/seg. ¿Existen alternativas más económicas? Espero que la estrategia siga creciendo en tamaño y procesando muchos más ticks.
Agradecería cualquier ayuda de aquellos de ustedes que tengan experiencia construyendo sistemas similares.