Pregunta ¿Cómo se estructuran las colas distribuidas?


¿Qué son los patrones arquitectónicos / soluciones que hacen que las colas distribuidas marquen?

Por favor, comparta para los tipos ordenados y no ordenados.


5
2018-03-10 09:56


origen


Respuestas:


Puede pensar en el backend de una cola como una base de datos replicada. (Supongo que las colas de las que está hablando se consideran a sí mismas como durable: cuando aceptan un mensaje, garantizan al menos una vez entregada.)

Como una base de datos replicada, el backend de cola de mensajes utiliza un protocolo de replicación para asegurarse de que el mensaje esté al menos norte hosts antes de acusar recibo al remitente. Los protocolos de replicación comunes son 2PC, 3PC y protocolos de consenso como Raft, Multi-Paxos y Chain Replication.

Para enviar un mensaje a un receptor, tiene que hacer casi la misma replicación con un arrendamiento de mensaje. El servidor de cola reserva el mensaje por un cierto período de tiempo; envía el mensaje al receptor, y si / cuando el receptor reconoce la recepción del mensaje, el servidor borra el mensaje. De lo contrario, los servidores reenviarán el mensaje al siguiente receptor disponible.

Algunas colas de mensajes se detienen allí, otras agregan muchas campanas y silbidos. SQS es una implementación de cola que no agrega muchos sonidos y silbidos para que pueda escalar más. Les permite, por ejemplo, dividir la cola para que una cola SQS esté formada por muchas, incluso miles, de estas colas como se describió anteriormente. Como nota aparte, una vez escuché a un desarrollador de SQS preguntar a otro "¿Qué significa 'ordenar'? media ¿Cuándo estás aceptando millones de mensajes por segundo?

Dicho esto, algunas colas hacer Proporcionar fuertes garantías de pedido. (He implementado un par de estos tipos de sistemas.) El costo de esto es menor capacidad de escalar. Para mantener el orden, la complejidad de la cola sube mucho. La cola debe mantener un registro ordenado de todos los mensajes y tener el mismo orden replicado en todos sus servidores. Esto es mucho más difícil que la replicación desordenada. Los sistemas de cola ordenados suelen elegir un dominar Para mantener el orden y todos los mensajes se enrutan al maestro. También tienden a usar los protocolos más complejos para la replicación.


8
2018-03-11 02:23