Comprensión dos corredores de mensaxes. Aprende a mecánica da mensaxería con ActiveMQ e Kafka. Capítulo 1

Ola a todos!

Comecei a traducir un pequeno libro:
«Comprensión dos corredores de mensaxes«,
autor: Jakub Korab, editor: O'Reilly Media, Inc., data de publicación: xuño de 2017, ISBN: 9781492049296.

Da introdución ao libro:
"... Este libro ensinarache a pensar nos sistemas de mensaxería de intermediarios, comparando e contrastando dúas tecnoloxías de corretores populares: Apache ActiveMQ e Apache Kafka. Describirá os casos de uso e os incentivos de desenvolvemento que levaron aos seus desenvolvedores a adoptar enfoques moi diferentes para a mesma área: mensaxes entre sistemas cun corredor intermedio. Observaremos estas tecnoloxías desde cero e destacaremos o impacto de varias opcións de deseño ao longo do camiño. Adquirirá unha comprensión profunda de ambos os produtos, unha comprensión de como deben usarse e non, e unha comprensión de que buscar ao considerar outras tecnoloxías de mensaxería no futuro. ... »

Partes traducidas ata agora:
Capítulo 1. Introdución
Capítulo 3. Kafka

Publicarei capítulos completados a medida que se traduzan.

CAPÍTULO 1

Introdución

A mensaxería de sistema a sistema é unha das áreas menos entendidas das TI. Como programador ou arquitecto, podes estar moi familiarizado con varios frameworks e bases de datos. Non obstante, é probable que só teñas unha familiaridade pasaxeira sobre como funcionan as tecnoloxías de mensaxería baseadas no corredor. Se te sentes así, non te preocupes, estás en boa compañía.

A xente adoita ter un contacto moi limitado coa infraestrutura de mensaxería. Adoitan conectarse a un sistema creado hai moito tempo, ou descargan unha distribución de Internet, instálana en PROM e comezan a escribir código para el. Despois de executar a infraestrutura en PROM, os resultados pódense mesturar: as mensaxes pérdense debido a fallos, o envío non funciona como esperabas ou os corredores "colgan" aos teus produtores ou non envían mensaxes aos teus consumidores.

Parece familiar?

Un escenario común é onde o teu código de mensaxería funciona moi ben, polo momento. Ata que deixe de funcionar. Este período adormece a garda nunha falsa sensación de seguridade, o que leva a máis código baseado en falsas crenzas sobre o comportamento fundamental da tecnoloxía. Cando as cousas comezan a saír mal, atópase ante unha verdade inconveniente: que non entendeu realmente o comportamento subxacente do produto ou as compensacións escollidas polos autores, como o rendemento fronte á fiabilidade ou a transacción fronte á escalabilidade horizontal. .

Sen unha comprensión profunda de como traballan os corredores, a xente fai declaracións aparentemente razoables sobre os seus sistemas de mensaxería, como:

  • O sistema nunca perderá mensaxes
  • As mensaxes procesaranse secuencialmente
  • Engadir consumidores fará que o sistema sexa máis rápido
  • As mensaxes só se entregarán unha vez

Desafortunadamente, algunhas destas afirmacións baséanse en suposicións que só se aplican en determinadas circunstancias, mentres que outras son simplemente incorrectas.

Este libro ensinarache a pensar nos sistemas de mensaxería baseados en intermediarios, comparando e contrastando dúas tecnoloxías de corretores populares: Apache ActiveMQ e Apache Kafka. Describirá os casos de uso e os incentivos de desenvolvemento que levaron aos seus desenvolvedores a adoptar enfoques moi diferentes para a mesma área: mensaxes entre sistemas cun corredor intermedio. Observaremos estas tecnoloxías desde cero e destacaremos o impacto de varias opcións de deseño ao longo do camiño. Adquirirá unha comprensión profunda de ambos os produtos, unha comprensión de como deben e non se deben usar e unha comprensión de que buscar ao considerar outras tecnoloxías de mensaxería no futuro.

Antes de comezar, repasemos o básico.

Que é un sistema de mensaxería e por que é necesario?

Para que dúas aplicacións se comuniquen entre si, primeiro deben definir unha interface. Definir esta interface implica seleccionar un transporte ou protocolo, como HTTP, MQTT ou SMTP, e negociar os formatos de mensaxe que se intercambiarán entre os sistemas. Este pode ser un proceso estrito, como definir un esquema XML con requisitos de custo de carga útil de mensaxes, ou pode ser moito menos formal, como un acordo entre dous desenvolvedores de que algunha parte da solicitude HTTP conterá o identificador do cliente .

Sempre que o formato das mensaxes e a orde na que se envían sexan consistentes entre os sistemas, poden comunicarse entre si sen preocuparse pola implementación do outro sistema. Os elementos internos destes sistemas, como a linguaxe de programación ou o marco utilizado, poden cambiar co paso do tempo. Mentres se manteña o propio contrato, a interacción pode continuar sen cambios do outro lado. Os dous sistemas están efectivamente desacoplados (separados) por esta interface.

Os sistemas de mensaxería normalmente implican un intermediario entre dous sistemas que interactúan para desvincular (separar) aínda máis o remitente do destinatario ou dos destinatarios. Neste caso, o sistema de mensaxería permite ao remitente enviar unha mensaxe sen saber onde está o destinatario, se está activo ou cantas instancias hai.

Vexamos un par de analoxías para os tipos de problemas que resolve un sistema de mensaxería e introduzamos algúns termos básicos.

Punto a Punto

Alexandra vai á oficina de correos para enviarlle un paquete a Adam. Ela vai á fiestra e dálle o paquete á empregada. O empregado colle o paquete e dálle a Alexandra un recibo. Adam non necesita estar na casa cando se envía o paquete. Alexandra confía en que o paquete lle sexa entregado a Adam nalgún momento no futuro e poida seguir facendo os seus negocios. Máis tarde nalgún momento Adam recibe un paquete.

Este é un exemplo de modelo de mensaxería punto a punto. A oficina de correos actúa aquí como un mecanismo de distribución de paquetes, garantindo que cada paquete sexa entregado unha vez. Usar unha oficina de correos separa o acto de enviar un paquete da entrega do paquete.
Nos sistemas de mensaxería clásicos, o modelo punto a punto implícase a través colas. A cola actúa como un buffer FIFO (primeiro en entrar, primeiro en saír) ao que un ou máis consumidores poden subscribir. Cada mensaxe só se envía a un dos consumidores subscritos. As colas adoitan tentar distribuír mensaxes de forma xusta entre os consumidores. Só un consumidor recibirá esta mensaxe.

O termo "durable" aplícase ás filas. Confianza é unha propiedade de servizo que garante que o sistema de mensaxería persiste as mensaxes en ausencia de subscritores activos ata que un consumidor se subscriba á cola para a entrega de mensaxes.

Confúndese a miúdo coa fiabilidade persistencia e aínda que os dous termos se usan indistintamente, cumpren funcións diferentes. A persistencia determina se o sistema de mensaxería escribe unha mensaxe nalgún tipo de almacenamento entre a recepción e o envío ao consumidor. As mensaxes enviadas á cola poden ser persistentes ou non.
A mensaxería punto a punto úsase cando o caso de uso require unha acción única sobre a mensaxe. Os exemplos inclúen depositar fondos nunha conta ou completar unha orde de entrega. Máis tarde comentaremos por que o sistema de mensaxería por si só non pode ofrecer unha entrega única e por que as colas poden, no mellor dos casos, ofrecer garantía de entrega. polo menos unha vez.

Editor-Subscriptor

Gabriella marca o número da conferencia. Mentres está conectada á conferencia, escoita todo o que di o orador, xunto co resto dos participantes da chamada. Cando se desconecta, perde o que se di. Cando se volve conectar, ela segue escoitando o que se di.

Este é un exemplo de modelo de mensaxería publicar-subscribir. A chamada en conferencia actúa como un mecanismo de transmisión. A persoa que fala non lle importa cantas persoas están actualmente na chamada: o sistema garante que calquera persoa conectada escoitará o que se está a dicir.
Nos sistemas de mensaxería clásicos, implícase o modelo de mensaxería de publicación-subscrición tops. O tema ofrece o mesmo método de difusión que o mecanismo de conferencia. Cando se envía unha mensaxe a un tema, distribúese para todos os usuarios subscritos.

Os temas adoitan ser pouco fiable (non duradeiro). Do mesmo xeito que un oínte que non pode escoitar o que se di nunha conferencia telefónica cando o oínte se desconecta, os subscritores do tema perden as mensaxes que se envían mentres están sen conexión. Por este motivo, podemos dicir que os temas ofrecen garantía de entrega non máis dunha vez para todos os consumidores.

As mensaxes de publicación e subscrición adoitan usarse cando as mensaxes son de natureza informativa e a perda dunha mensaxe non é especialmente significativa. Por exemplo, un tema pode transmitir lecturas de temperatura dun grupo de sensores unha vez por segundo. Un sistema que estea interesado na temperatura actual e que se subscriba a un tema non se preocupará se perde unha mensaxe: outro chegará nun futuro próximo.

modelos híbridos

O sitio web da tenda coloca mensaxes de pedido nunha "cola de mensaxes". O principal consumidor destas mensaxes é o sistema executivo. Ademais, o sistema de auditoría debería ter copias destas mensaxes de pedido para o seu seguimento posterior. Ambos sistemas non poden permitir o paso de mensaxes, aínda que os propios sistemas non estean dispoñibles durante algún tempo. O sitio web non debe ter coñecemento doutros sistemas.

Os casos de uso adoitan requirir unha combinación de modelos de publicación-subscrición e de mensaxería punto a punto, como cando varios sistemas requiren unha copia dunha mensaxe e son necesarias tanto a fiabilidade como a persistencia para evitar a perda de mensaxes.

Estes casos requiren dun destino (termo xeral para as colas e os temas) que distribúa as mensaxes basicamente como tema, de xeito que cada mensaxe se envía a un sistema separado interesado nesas mensaxes, pero tamén no que cada sistema pode definir varios consumidores que reciben entradas. mensaxes, que se parece máis a unha cola. O tipo de lectura neste caso é unha vez por cada interesado. Estes destinos híbridos adoitan necesitar durabilidade para que, se un consumidor se desconecta, as mensaxes que se envían nese momento recíbense despois de que o consumidor volva conectarse.

Os modelos híbridos non son novos e pódense utilizar na maioría dos sistemas de mensaxería, incluíndo tanto ActiveMQ (a través de destinos virtuais ou compostos que combinan temas e filas) como Kafka (implícitamente, como unha propiedade fundamental do deseño do seu destino).

Agora que temos algo de terminoloxía básica e entendemos para que poderiamos usar un sistema de mensaxería, imos ata os detalles.

Tradución feita: tele.gg/middle_java

A seguinte parte traducida: Capítulo 3. Kafka

Continuar ...

Fonte: www.habr.com

Engadir un comentario