2012-02-14 16 views
8

¿Qué tan escalable es ZeroMQ? Estoy especialmente interesado en comprender su potencial para funcionar en un gran número (10,000 - 15,000) de núcleos.¿Qué tan escalable es ZeroMQ?

+0

http://stackoverflow.com/questions/8361738/is-zeromq-reallyble-and-scalable –

Respuesta

9

Hemos intentado que sea lo más escalable como sea posible, pero yo personalmente probado sólo en hasta 16 cajas de machos. Hasta ese límite, hemos visto escalas casi lineales.

5

en cuenta que aunque ZeroMQ es multiproceso internamente, puede que no sea aconsejable confiar únicamente en que para ampliarlo a un gran número de núcleos. Sin embargo, debido a que ZeroMQ usa la misma API para la comunicación entre máquinas, entre procesos y entre hilos, es fácil escribir una aplicación usando ZeroMQ que se puede mover sin problemas en un escenario de un proceso por núcleo o en una estructura de red de muchas, muchas máquinas.

ZeroMQ ya tiene una reputación de ser el protocolo de mensajería estructurado más rápido, por lo que si tuviera que hacer pruebas para elegir una tecnología, definitivamente ZeroMQ debería ser una de ellas.

Las dos razones principales para usar ZeroMQ son su API de varios idiomas fácil de usar (vea todos los ejemplos en el sitio de la Guía ZeroMQ) y su baja sobrecarga tanto en términos de bytes en el cable, como en términos de estado latente. Por ejemplo, ZeroMQ puede aprovechar la multidifusión UDP para ejecutarse más rápido que cualquier protocolo TCP, pero el programador de la aplicación no necesita aprender una nueva API. Está todo incluido.

10

Usted no menciona si sus 10k o 15k núcleos están en la misma caja o no.

Vamos a suponer que son. Cada dos años, el número de núcleos en una caja puede, teóricamente, duplicarse. Entonces, si hoy tenemos cajas de 16 núcleos, serán núcleos de 16K en 20 años.

Así que ahora, la pregunta es, tal vez, "se ZeroMQ ayudar a mi escala de aplicación a este tipo de un gran número de núcleos, por lo que se escala en los próximos 20 años?" La respuesta es "sí, pero solo si la usa correctamente". Esto significa diseñar su aplicación usando sockets de procuración y patrones que dividen de manera adecuada el trabajo y el flujo de datos. Tendrá que ajustar la arquitectura a lo largo del tiempo.

Si su pregunta es: "¿Puedo utilizar provechosamente que muchos núcleos entre múltiples aplicaciones", la respuesta se encuentra con su O/S más de ZeroMQ. ¿Su capa de E/S puede manejar la carga? Probablemente si.

Y si su pregunta es: "¿Puedo usar ZeroMQ en una nube de cajas de 10K-16K?", Entonces la respuesta es "sí, esto ya se ha demostrado en la práctica".

+0

Gracias Pieter, me refiero a núcleos repartidos en varias cajas. ¿Conoce algún documento que debata este nivel de escalabilidad o cualquier sitio de referencia de este tamaño? –

+0

Así que incluso con OpenAMQ escalamos en producción a cajas de 3K-4K (cada uno de núcleos múltiples), hablando con un solo intermediario. Este es el nivel básico de escala de cualquier flujo 1-N en 0MQ: limitado solo por el número de sockets que su sistema operativo puede manejar. –