Comunicación en Micro-Servicios

41
Comunicación en Micro-Servicios Latino .Net Online sábado, 22 de agosto de 2020 Fernando Sonego Solution Architect en Algeiba

Transcript of Comunicación en Micro-Servicios

Page 1: Comunicación en Micro-Servicios

Comunicación en Micro-Servicios

Latino .Net Onlinesábado, 22 de agosto de 2020

Fernando SonegoSolution Architect en Algeiba

Page 2: Comunicación en Micro-Servicios

Agenda

• Comunicación Sincrónica• Introducción a RPC• Stateless y Stateful RPCs• Rendimiento de comunicaciones asincrónicas

• Comunicación Asincrónica• Introducción• Características de diseño• Flujo de la comunicación• Transacciones distribuidas• Patrones: Saga y Routing Slip

Page 3: Comunicación en Micro-Servicios

SincrónicaArquitectura de Comunicación

Page 4: Comunicación en Micro-Servicios

Introducción a RPC

Client Server

Guarda estos datos

Guardados

Page 5: Comunicación en Micro-Servicios

RPCsPropiedades• Argumentos• Devuelve un valor• Se ejecuta inmediatamente• El cliente controla la

comunicación• 2 Externos involucrados• El cliente espera la respuesta

del server.

Ejemplos• Trafico Http

• “web server envíame un html”• Consultas SQL

• “Dame todos los clientes de la compañía”

• Servicios• Crear un nuevo cliente con el

nombre Lautaro

Page 6: Comunicación en Micro-Servicios
Page 7: Comunicación en Micro-Servicios

RPCs son sincronicos

• Cliente siempre espera al servidor

• No usar async / await in c# or Javascript

• El cliente necesita resultados desde el servidor

• Son poderosos en:• Simplicidad• Fáciles de pensar• Fácil de utilizar pruebas

automáticas.

Page 8: Comunicación en Micro-Servicios

RPCs en microservicios

Un lenguaje de

programación

Web Framework

Http endpoints

Microservicio RPC API

Page 9: Comunicación en Micro-Servicios

RPC: Stateless y Stateful

Page 10: Comunicación en Micro-Servicios

RPC: Stateless

Client Server

Crea PDF

archivo

Page 11: Comunicación en Micro-Servicios

API Gateway

API Gateway

AppServices

OtherServices

Page 12: Comunicación en Micro-Servicios

API Gateway

API Gateway

AppServices

OtherServices

Page 13: Comunicación en Micro-Servicios

Coordinación de RPCs

Page 14: Comunicación en Micro-Servicios

Resumen: Remote Procedure Call

Cliente envía datos Cliente Espera Servidor EjecutaServidor envía el

resultado

StatelessSimple

FuncionalPortable

• Los servicios pueden tener manejo de fallas y baja latencia.• Latencia y Disponibilidad difícil de coordinar, mejorar uno, dañar el

otro

StatefulIdempotenciaTransacciones DistribuidasModos de falla

Page 15: Comunicación en Micro-Servicios

AsincrónicoArquitectura de Comunicación

Page 16: Comunicación en Micro-Servicios

Múltiples consumidores

Message Bus

Consumer ConsumerConsumer

Page 17: Comunicación en Micro-Servicios

Cola de mensajería

"Sé que no sabes si puedes hacerlo o no

ahora, pero confía en mí, en tiempo de

ejecución todo estará bien"

Message Bus

Page 18: Comunicación en Micro-Servicios

Un post en RPCGrabar

Notificar

Cobrar

Recomendar

Page 19: Comunicación en Micro-Servicios

Un post con un Bus

Grabar

Notificar

Cobrar

Recomendar

Mes

sage

Bus

Beneficios del Bus

• Rápido, no hay que esperar.• Fácil de desplegar, poco tiempo de corte de

servicio.• Puede absorber picos de consumo.• Aislado de otros servicios• Fácil de agregar nuevos servicios o cambios en

los existentes.

Page 20: Comunicación en Micro-Servicios

MensajesEstructura• Peña unidad de datos• Solo información relevante

del negocio• Headers

• Timestamp• Información del quien envía.• Id de Correlación• Información de errores• Header personalizados

Tiene que ser pequeños• Mensajes grandes afectan el

rendimiento• Grande generan una oportunidad de

fracaso.• Límites de tamaño.• Descargas grandes en

almacenamiento externo

Definición Topic• Post Liked, Post Created, Message

Sent

Page 21: Comunicación en Micro-Servicios

Tema, ruteo y cola

Tema

Page 22: Comunicación en Micro-Servicios

Tema, ruteo y cola

Tema

Tema

Tema

Page 23: Comunicación en Micro-Servicios

Cola de mensajes

• Es un almacenamiento temporal• Fácil recuperación ante un incidente• Manejo de errores

• Políticas de reintentos• Error de ruteo

• Información de errores• Análisis y reprocesamiento

• Letras muertas• Auto generadas• Fácil de reparar

Page 24: Comunicación en Micro-Servicios

Consistencia

Grabar

BusNotificar

Post

Page 25: Comunicación en Micro-Servicios

Tema, ruteo y cola

Grabar

BusNotificar

Post Post Grabado

Page 26: Comunicación en Micro-Servicios

Arquitectura Event-drivenImpulsada por la generación, consumo, detección y reacción a los eventos

Page 27: Comunicación en Micro-Servicios

Transacción Distribuida

Page 28: Comunicación en Micro-Servicios

Transacción Distribuida

Crear Post

Reconocimiento facial

Validaciónmenores

Redimensión de la imagen

Notificaciones a terceros

Proceso de pago y publicidad

Servicio de re-pub social

Page 29: Comunicación en Micro-Servicios

Event-Driven

Redimensión de la imagen

Notificaciones a terceros

Proceso de pago y publicidad

Reconocimiento facial

Validaciónmenores

Servicio de re-pub social

Page 30: Comunicación en Micro-Servicios

Saga y Routing SlipPatrones de administration de mensajes

Page 31: Comunicación en Micro-Servicios

Patrón Saga

• Creado en la universidad de Princeton 1987• Long-lived transactions (LLTs)

• Que pueden durar horas o días• Una base de datos• Transacciones granulares• Compensa la carga de operaciones

• Para sistemas distribuidos extendidos• Se centraliza el estado de la transacción• Se maneja el ruteo de los mensajes• Fácil de tratar fallas

Page 32: Comunicación en Micro-Servicios

Patrón Saga

Creación

ID State

Zxy856 Servicio 1

Dfe785 Servicio 2

Fgt874 Compledo

Page 33: Comunicación en Micro-Servicios

Compensación de fallas

Servicio E

Servicio A Servicio B Servicio C Servicio D

Servicio F Servicio G Servicio H

Complete

Page 34: Comunicación en Micro-Servicios

Patrón Routing Slip• Instrucciones adjuntas al elemento de trabajo

• En que puntos• Tipo de trabajo por punto• Que instrucción

• En cada punto de parada• Hace el trabajo• Pasa al siguiente punto

• Determina los pasos del procesamiento• Va adjunto al mensaje• El mensaje tiene la secuencia de ruteo

Page 35: Comunicación en Micro-Servicios

Patrón Routing Slip

1. Servicio A2. Servicio B3. Servicio C4. Servicio D

1. Servicio A2. Servicio B3. Servicio C4. Servicio D

Page 36: Comunicación en Micro-Servicios

Saga Vs Routing SleepCuando Saga Routing Slip

Ruteo del mensaje Mejor cuando es simple Flexible, especialmente cuando tenemos muchos servicios

Centralización del estado

Perfecto No es posible

Compensación de fallas

Bueno cuando es simple, pero, fácilmente se vuelve complicado

Sencillo

Cancelación Sencillo por la centralización del estado

Requiere una complejidad adición en cada servicio

Paralelizar carga Se puede La mayoría del tiempo debe ser lineal

Page 37: Comunicación en Micro-Servicios

Inconsistencia Eventual

• Algo que lo clientes deben empezar a conocer• Los estados de la información estarán inconsistentes• Servicios independientes• Incomodos para los que les encanta seguir ACID

Page 38: Comunicación en Micro-Servicios

Resumen: Comunicación Asincrónica

Beneficios• Invocadores y receptores están

desacoplados• Aislados para una mejor

administración de carga• Podemos aislar los servicios mas

lentos.• Funcional• Portable

Consistencia• Manejo granular• Secuencia precisa• Prevé estados inconsistentes

Page 39: Comunicación en Micro-Servicios

Comunicación Asincrónica

La arquitectura es compleja

Page 40: Comunicación en Micro-Servicios

Conclusiones y Preguntas

Page 41: Comunicación en Micro-Servicios

Fernando SonegoSolution Architect

[email protected]

@FernandoSonego

www.withoutdebugger.com

Dale dinamismo a tu código C#sábado, 27 de marzo de 2020