Qual é o MQ?
MQ chamada de fila de mensagens, ou seja, a mensagem fila de mensagens oriented middleware. Produtor para escrever a mensagem na fila de mensagens, a fila do consumo mensagens podem ser lidas.
Refere-se à utilização de mecanismos de intercâmbio de dados para eficiente e confiável independente de plataforma de mensagens e com base na comunicação de dados em integração de sistemas distribuídos. Transferência e mensagem de filas modelo é fornecido por fornecimento de uma mensagem numa dissociação ambiente de aplicação distribuída,, armazenamento redundante esticável elasticamente, o fluxo de recorte, comunicação assíncrono, a sincronização de dados.
Tal processo é geralmente: um remetente envia uma mensagem para o servidor de mensagens, a mensagem armazenada no servidor de mensagens vários fila / no tópico, quando apropriado, de volta para o servidor de mensagens encaminha a mensagem para o destinatário. Neste processo, o envio e recebimento é assíncrona, isto é, enviar sem espera, e o emissor eo receptor do ciclo de vida não está necessariamente relacionada, em particular, publicar pub / assinatura no modo sub, você também pode muitos completa de comunicação, que permite que uma mensagem tiver vários destinatários.
papel importante MQ
- Asynchronous: o chamador sem esperar que o processamento assíncrono;
- Desacoplamento: resolver o problema das chamadas entre os sistemas de acoplamento;
- Os consumidores de pico: para suportar o fluxo de pico, protegendo o negócio principal;
vantagens e desvantagens MQ
vantagens:
-
Modo de processamento assíncrono: a remetente da mensagem pode enviar uma mensagem sem esperar pela resposta. remetente da mensagem para enviar uma mensagem a um canal virtual (tópico ou fila) em; o destinatário da mensagem ou subscrever adoro ouvir o canal. Uma mensagem pode eventualmente encaminhado para um ou mais do destinatário da mensagem, o destinatário dessas mensagens são sincronizados sem ter que dar uma resposta ao remetente da mensagem. Todo o processo é assíncrona;
-
Dissociação entre o remetente aplicação e receptor não tem que entender um ao outro, apenas uma mensagem de confirmação. A necessidade emissor eo receptor não estar online ao mesmo tempo.
-
Disponível para recorte em alto tráfego, para garantir o bom funcionamento do sistema.
desvantagens:
- Reduzir a disponibilidade do sistema, em geral, as dependências mais externos introduzido, o mais vulnerável do sistema, cada problema de dependência fará com que toda a problemas de ligação de negócios;
- Aumentar a complexidade do sistema, a considerar as várias situações, por exemplo, mensagem de perda de idempotency, mensagem e outra seqüência do consumidor;
- coisas distribuídos, problemas de consistência de dados;
Comparação de vários tipos de MQ
MQ é apenas um conceito, a ideia de voar no céu, deve haver terra para alcançar. Quer Que mensagens middleware, tem as seguintes dimensões técnicas:
Dimensões técnicos | ActiveMQ | RocketMQ | RabbitMQ | Kafka |
---|---|---|---|---|
PRODUTOR-CUMSUMER | apoio | apoio | apoio | apoio |
Publish-Subscribe | apoio | apoio | apoio | apoio |
Solicitação-Resposta | apoio | apoio | apoio | * |
integridade API | alto | (A configuração estática) | alto | alto |
Integridade de documento | alto | em | alto | alto |
Multi-linguagem apoio | Suporte, a prioridade Java | apoio | Idioma-independente | Suporte, a prioridade Java |
Stand-alone throughput | mil Ten | mil Ten | mil Ten | Cem mil |
atraso mensagem | * | * | microssegundo | milisegundo |
disponibilidade | Alta (master-slave) | alto | Alta (master-slave) | Muito alta (Distributed |
perda de mensagens | * | * | baixo | Em teoria, não serão perdidos |
mensagem repeat | * | * | controlável | Em teoria, não será repetido |
Introdução | Tem | não | Tem | Tem |
Primeiro dificuldade de implantação | * | alto | baixo | em |
Linguagem de programação | Java | Java | erlang | scala |
aplicações | Pequenas e projectos de média dimensão | projetos de grande escala, clusters | Em projetos de grande escala | Big Data |