Websocket: [pregunta] Ayúdame a elegir entre Gorilla / RabbitMQ

Creado en 29 jul. 2019  ·  8Comentarios  ·  Fuente: gorilla/websocket

Hola todos,

Estaba buscando una solución que me ayudara a implementar websockets en mi proyecto ... primero estaba pensando en usar RabbitMQ pero desafortunadamente no soportaba no pasar la prueba de autobahn, sinceramente ya integré en mi proyecto uno aleatorio solo para hacer algunos trabajos y no pegarme a esto.

Ahora que tengo que obtener la mejor solución que cubra mi necesidad, por cierto, mi necesidad es solo el sistema PubSub ... tengo que elegir la solución más rápida y de baja latencia ... haciendo una búsqueda en Google, descubrí que ¡Puede manejar 1Millones de solicitudes / segundo con solo 1 Go de RAM!

Entonces, estoy realmente interesado en saber más sobre usted y especialmente si usar su solución dará mejores resultados que RabbitMQ.

Otra pregunta, ¿Gorilla admite subprocesos múltiples?

Gracias de antemano por su ayuda.

question

Todos 8 comentarios

Hola -

Probablemente valga la pena aclarar algunos puntos:

• WebSockets es un protocolo para transmitir pequeños mensajes a través de HTTP, pero
no proporcionan capacidades de "PubSub" inherentes. Almacenamiento en búfer de mensajes para clientes,
replicación, reenvío, autenticación, distribución a múltiples suscriptores

  • eso depende de usted para implementarlo en la parte superior.

• RabbitMQ es un bus de mensajes diseñado para persistir y enviar eventos
entre sistemas. Gran parte de la semántica a nivel de aplicación (autenticación,
replicación, etc.) están incorporados, con la salvedad de que no funciona en un
entorno del navegador (por eso existen WebSockets). RabbitMQ no pasa
las pruebas de autobahn ya que esas pruebas son para validar el soporte de estándares de
WebSockets .

¿Qué estás intentando construir? ¿Son sus clientes dispositivos IoT basados ​​en navegador,
o ?

El domingo, 28 de julio de 2019 a las 7:43 p.m., bcashier [email protected] escribió:

Hola todos,

Estaba buscando una solución que me ayude a implementar websockets en mi
proyecto ... primero estaba pensando en usar RabbitMQ pero desafortunadamente no
apoyando no pasar la prueba de autobahn, sinceramente ya me integro a mi
proyecte uno al azar solo para hacer algunos trabajos y no atascarse en esto.

Ahora que tengo que conseguir la mejor solución que satisfaga mis necesidades, por cierto
mi necesidad es solo el sistema PubSub ... tengo que elegir el más rápido y bajo
solución de latencia ... haciendo una búsqueda en Google, descubrí que puedes
¡Maneja 1Millones de solicitudes / segundo con solo 1 Go de RAM!

Así que estoy realmente interesado en saber más sobre ti y especialmente si usas
su solución dará mejores resultados que RabbitMQ?

Gracias de antemano por su ayuda.

-
Estás recibiendo esto porque estás suscrito a este hilo.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/gorilla/websocket/issues/527?email_source=notifications&email_token=AAAEQ4DP2S6HEKJXTSHLDZ3QBZKOFA5CNFSM4IHOGJW2YY3PNVWWK3TUL52HS4DFUVEXGG45HBMWW57 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAAEQ4BF2VIQOVII7EFKKQ3QBZKOFANCNFSM4IHOGJWQ
.

@elithrar ¡ Hola señor! Y gracias por tu respuesta :)

Mis clientes se basan en un navegador.

Los clientes se suscriben a un tema específico desde el navegador usando autobahn (javascript).

Y publique un mensaje desde el servidor para notificarles sobre nuevos cambios, actualizar los datos en el navegador, etc.

Esperando su respuesta y gracias de antemano :)

Si sus clientes están basados ​​en un navegador, entonces no puede (fácilmente) usar RabbitMQ.

WebSockets le dará una ruta para transmitir datos entre clientes y
servidor, pero los conceptos de "temas", cambios, esquema de datos, etc.
tú.

La otra opción sería utilizar un servicio de proveedor en la nube como PubSub de GCP
o AWS Kinesis.

El lunes, 29 de julio de 2019 a las 11:27 a.m., bcashier [email protected] escribió:

@elithrar https://github.com/elithrar ¡ Hola, señor! Y gracias por tu
respuesta :)

Mis clientes se basan en un navegador.

Los clientes se suscriben a un tema específico desde el navegador usando autobahn
(javascript).

Y publicar un mensaje desde el servidor para notificarles sobre nuevos cambios,
actualizar datos en el navegador, etc.

Esperando su respuesta y gracias de antemano :)

-
Recibes esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/gorilla/websocket/issues/527?email_source=notifications&email_token=AAAEQ4F56X642OVBQ4ESQDDQB4ZBRA5CNFSM4IHOGJW2YY3PNVWWK3TUL52HS4DFVREXP63JWWK3TUL52HS4DFVREXP63JTMVN5 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAAEQ4FWIR3AUJP33VFCHL3QB4ZBRANCNFSM4IHOGJWQ
.

@elithrar

¿Es posible implementar el concepto de Publicar / Suscribirse a un TEMA usando Gorilla?

Si es así, ¿tiene un ejemplo de código ya hecho de esta manera?

Gracias :)

Eche un vistazo al ejemplo de chat:
https://github.com/gorilla/websocket/tree/master/examples/chat - teniendo en cuenta
que los conceptos de salas (temas, en su caso) depende de usted implementar.

El lunes, 29 de julio de 2019 a las 1:12 p.m., bcashier [email protected] escribió:

@elithrar https://github.com/elithrar

¿Es posible implementar el concepto de Publicar / Suscribirse a un TEMA?
usando Gorilla?

Si es así, ¿tiene un ejemplo de código ya hecho de esta manera?

Gracias :)

-
Recibes esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/gorilla/websocket/issues/527?email_source=notifications&email_token=AAAEQ4EBKCI2IXCJOFGJCPLQB5FJNA5CNFSM4IHOGJW2YY3PNVWWK3TUL52HS4DFVREXP63JSMVB5 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAAEQ4AIXUEMDIQTLCPZQB3QB5FJNANCNFSM4IHOGJWQ
.

@elithrar ¿Las actuaciones serán las mismas incluso al usar las habitaciones?

No puedo responder a eso, eso depende de ti.

Mi recomendación es que primero piense en lo que necesita construir y
qué tipo de escala necesita lograr ANTES de centrarse en el rendimiento
números. Parece que tienes que aprender un poco (¡lo cual está bien!)
alrededor de las colas de mensajes y WebSockets antes de preocuparse por más de 1 millón de clientes.

El lunes, 29 de julio de 2019 a las 4:51 p.m., bcashier [email protected] escribió:

@elithrar https://github.com/elithrar ¿Las actuaciones serán las mismas?
incluso mientras usa las habitaciones?

-
Recibes esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/gorilla/websocket/issues/527?email_source=notifications&email_token=AAAEQ4DJE7MJU5QP3UGT5V3QB566ZA5CNFSM4IHOGJW2YY3PNVWWK3TUL52HS4DFVREXWHG43WTZVD
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAAEQ4CLQSE62KTKB2PPXFLQB566ZANCNFSM4IHOGJWQ
.

@elithrar Gracias por tu respuesta :)

Tienes razón sobre mi conocimiento sobre WebSockets, es realmente limitado ... Sinceramente, aprendí solo lo que se necesita para mi proyecto sin tener en cuenta cómo funciona e incluso lo básico.

Mi proyecto necesita el concepto de habitaciones ya que algunos detalles deben transmitirse a un usuario específico después de iniciar sesión (información sensible) ... pero otros pueden ser públicos y compartidos para todos los usuarios / visitantes.

Mi recomendación es que piense en lo que necesita construir primero.

Ya solía terminar el proyecto pero con malos rendimientos, por lo que estoy buscando cambiar a un mejor idioma con baja latencia y sobre todo eligiendo las mejores soluciones que funcionan + da mejores rendimientos que la existente, y sobre todo cuestión de escalabilidad.

preocuparse por más de 1 millón de clientes.

Preocuparme por + 1M de websockets enviados por segundo es mi objetivo en realidad y es la máxima prioridad antes de comenzar a programar en él por segunda vez ... cada día paso una mayor parte de mi tiempo para recopilar las mejores tecnologías de código abierto existentes y esquemas de construcción para una mejor combinación de todos los módulos, etc.

De todos modos muchas gracias por tomarse el tiempo para responder a mi pregunta, apreciado.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

hsdk123 picture hsdk123  ·  3Comentarios

melnikalex picture melnikalex  ·  7Comentarios

fghjhuang picture fghjhuang  ·  4Comentarios

markusthoemmes picture markusthoemmes  ·  7Comentarios

garyburd picture garyburd  ·  36Comentarios