Тёмный

Implementando el Patrón CQRS con Debezium, Postgresql, Redis, Kafka... 

NullSafe Architect
Подписаться 46 тыс.
Просмотров 16 тыс.
50% 1

Todo sobre el patrón CQRS(Command Query Responsability Segregation) mejora del rendimiento, formas de implementarlo, pros/contras y lo implementamos con Debezium, Postgresql, Redis y SpringBoot con Java.

Опубликовано:

 

16 окт 2022

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 63   
@NullSafeArchitect
@NullSafeArchitect Год назад
Por fin es Viernes! Y aquí tenéis el post sobre el vídeo dedicado a arquitecturas #CQRS con #Debezium www.albertcoronado.com/2022/10/21/implementando-el-patron-cqrs-con-debezium/ y el código ya está publicado en Github github.com/acoronadoc/java-springboot-cqrs-architecture-sample
@jhonrodriguez8070
@jhonrodriguez8070 2 дня назад
Excelente contenido, muchas gracias digital!
@manueljesusgameroquiros3963
Conocía el patrón pero los ejemplos prácticos vistos a vista de pájaro son muy limitados en la red, me ha ayudado a marcar hoja de ruta en algunos flecos en mi conocimiento, muchas gracias por todo el contenido que haces.
@mamisho
@mamisho Год назад
Estos videos son muy avanzados. Es de lo que no hay. Muchas gracias por tu tiempo
@juandavidcorrea5501
@juandavidcorrea5501 Год назад
Está genial. Solo para complementar. Para iniciar, no necesariamente tienes que tener dos bases de datos, también puede ser implementado basado en drivers,libs, etc. Ejemplo en c# : tienes los comandos con entity framework y las queries con dapper(optimizado para lectura)
@benjaminsepulveda1664
@benjaminsepulveda1664 Год назад
Buen video lo de devezium no lo conocía se ve una solución bastante limpia en entornos de alta demanda
@oyepez003
@oyepez003 Год назад
Uno de los contras a tomar en cuenta es que se duplica x2 (aprox) el espacio en disco de la BD. Excelente video
@nigivamu
@nigivamu Год назад
Debes tener en cuenta que el valor agregado de una característica normalmente se requiere pagar con otra. No es una bala de plata. Estás dispuesto a sacrificar espacio por velocidad (y disponibilidad) a consultas? Eso sólo lo da el caso de uso que quieras implementar. Recuerdo una caída de github donde no podías hacer push pero podías consultar y descargar los repos. Un excelente ejemplo donde aplica ésta técnica.
@gutisjd
@gutisjd Год назад
Increíble Albert, magistral el vídeo ❤
@FranFran7895
@FranFran7895 Год назад
Me encanta el logo y nuevo nombre, gracias por todos tu videos, valen oro €€
@FranciscoOrtizC
@FranciscoOrtizC Год назад
Muy buen ejemplo y explicación como siempre. Muchas gracias por estos videos. Esperando los siguientes...
@xxaqploboxx
@xxaqploboxx Год назад
Excelente explicacion profesor, sin duda el mejor contenido en español
@rbarriae
@rbarriae Год назад
¡¡¡ IMPRESIONANTE !!! Saludos desde el sur de Chile.
@santosmarte
@santosmarte Год назад
Creo que tendre que ver el video de nuevo ( esta vez solo el video ). Esta muy interesante el nivel de mejora en rendimiento es buenisimo. Gracias !!!
@Kikoken73
@Kikoken73 Год назад
que buena explicacion , gracias por compartir
@carlospinachomiranda9668
@carlospinachomiranda9668 Год назад
Excelente ejemplo, gracias
@wilfredomartel7781
@wilfredomartel7781 Год назад
Excelente video👏🌞
@pierrerecuay2083
@pierrerecuay2083 Год назад
Genial me quedó claro el patrón
@LTDATA
@LTDATA Год назад
Gracias! Me ha gustado!
@javiercarrillo3437
@javiercarrillo3437 Год назад
Excelente contenido
@13680seba
@13680seba Год назад
Excelente¡ Gracias por compartir¡ :)
@josuegarcia3355
@josuegarcia3355 Год назад
Esta buenísimo 👌
@CamiloCastroEscorcia
@CamiloCastroEscorcia Год назад
Excelente video
@EliberioSoftEC
@EliberioSoftEC Год назад
Excelente explicacion
@skuarch
@skuarch Год назад
que bien vídeo!
@estudiantecool7659
@estudiantecool7659 Год назад
Que buen tutorial
@juanluiscastrovaldez3077
@juanluiscastrovaldez3077 Год назад
Excelente como siempre líder pero creo que esta explicación aplicada a implementar correctamente el Patrón CQRS en Wordpress sería de mucha ayuda para las personas que quieran escalar de mejor manera una solución creada en ese CMS, sé que ese vídeo sería una popular en RU-vid, se puede llamar algo así como: Aprende como hacer tu wordpress 50% más rápido y escalable con CQRS, eso haría popular el vídeo y le sería de mucha ayuda a personas como yo.
@alesofton
@alesofton Год назад
Buen video.
@gerardogutierrez3908
@gerardogutierrez3908 4 месяца назад
👍
@hugoflores7343
@hugoflores7343 Год назад
En las interfaces es opcional poner el modificador public a nivel de métodos.
@josegalarza6628
@josegalarza6628 Год назад
Genial
@davidpratr
@davidpratr Год назад
Interesante vídeo, se encuentra a faltar remarcar que este patrón no es usable en ningún caso de uso que requiera leer respetando la consistencia de las escrituras. En un app social sí que puede ser de gran ayuda para tener mejor rendimiento
@a0z9
@a0z9 Год назад
Eso es un proceso batch de toda la vida
@LODIK77
@LODIK77 Месяц назад
Puedo tener una sola BD pero con dos modelos distintos?? Un modelo relacional que se encargara de los commands.y un modelo con un par de tabla sin constraints donde tendremos los datos replicados del modelo relacional la cual usare para las querys.. La sincronizacion la realizare a traves de triggers...
@jesusnoguera8725
@jesusnoguera8725 2 месяца назад
Hola, al realizar una operación de escritura en la base de datos relacional que se publican los cambios para replicarse en la base de datos no relacional, como sabe a que documento de Redis debe ir para aplicar esos cambios? entiendo que los id en la base de datos para las tablas en la base de datos SQL son unos y los Id de los documentos en Redis son otros, como los relacionas para saber en que documento aplicar los cambios ? Gracias
@demoel
@demoel Год назад
Genial. muy buen tutorial. teórico y practico.
@sockosg
@sockosg 5 месяцев назад
Thanks!
@NullSafeArchitect
@NullSafeArchitect 5 месяцев назад
Mil gracias por el apoyo Samuel!
@sockosg
@sockosg 5 месяцев назад
@@NullSafeArchitectAl contrario, un millon de gracias a ti por compartir tu conocimiento... un saludo.
@juansuarez2469
@juansuarez2469 Год назад
Muy bueno, no conocia este patron. Existe mucha diferencia con balancear los postgres?
@vijb1475
@vijb1475 10 месяцев назад
Buenas tendra un ejemplo de redis geospacial con spring boot
@VictorMeseguer
@VictorMeseguer Год назад
Una duda: ¿Como controlas los datos que si que están persistidos en la PostgreSQL y que por el motivo que sea ya no están en Redis? un ejemplo de esto sería que Redis al ser BBDD en RAM si se reinicia se pierde toda la información y tal como está implementada esa arquitectura, solo se actualiza Redis si se cambian registros en PostgreSQL, en ese momento ambas bases de datos ya no están sincronizadas. Otra cuestión es ¿si la base de datos en PostgreSQL es muy grande?, eso no se puede cargar en RAM siempre via Redis, por lo que igualmente ¿toca estar viendo que datos no estan disponibles en Redis para irlos a buscar a PostgreSQL?, ya que realmente Redis está haciendo como de cache de lectura de Postgre. Yo normalmente he utilizado algo similar, pero directamente usando PostgreSQL cluster (no recuerdo si fue con pg_pool o algo similar) con 1 master y 2 slaves por ejemplo haciendo que las lecturas las resuelvan los slaves, y las escrituras todas al master, y usando los WAL se mantienen la sincronización entre todos En cualquier caso muy interesante. Muchas gracias
@UnDevMas
@UnDevMas 4 месяца назад
HJola, muy interesante, entonces el debezium ya actua como si fuera un server donde realmente yo como developer lo que tengo que llegar a hacer la mayoria de las veces es simplemente configurar la conexion? , o hay ocasiones donde toque mover codigo?¡
@yorozuya6115
@yorozuya6115 11 месяцев назад
tiene el cqrs sentido que los commands como queries lo maneje el mismo servicio? no se puede escalar de forma separada lecturas y escrituras
@LtdJorge
@LtdJorge Год назад
Me pregunto cómo aumentaría el rendimiento teniendo un cluster de CouchDB de lecturas y otro cluster de CouchDB de escritura. La ventaja sería el aclamado sistema de replicación de CouchDB.
@NullSafeArchitect
@NullSafeArchitect Год назад
Sería cuestión de probar...
@marancibia1971
@marancibia1971 Год назад
Excelente video. Muchas gracias. Tengo entendido que CQRS es un patrón que se considera cuando el workload del sistema es un mayor porcentaje de lecturas versus escrituras, ya que opitmizar un único modelo para dicho escenario es muy difícil. Al segregar en dos modelos distintos permite optimizar cada workload por separado, lo que permite usar productos distintos como lo hiciste en el video usando PostgreSQL y Redis. Por otro lado, si no fuera por Debezium capturar los cambios en las bases de datos de forma standard sería complicado. Por último, si bien Kafka es una buena opción como repositorio de mensajes, ¿sería una opcion también usar un broker tradicional como RabittMQ o AMQ, por ejemplo?
@juandavidcorrea5501
@juandavidcorrea5501 Год назад
No sé a qué te refieras con “un broker tradicional” pero, sería cuestión de buscar/construir el conector de rabbit para debezium y no abría problema
@a0z9
@a0z9 Год назад
Pues sacate el mvp de Microsoft
@nicomf7478
@nicomf7478 Год назад
Genial el video 🎉, consideras que se podrías haber evitado incluir la lógica para almacenar el dato en redis, delegando esa responsabilidad a un Kafka connector para redis y de esta forma desentender de esa responsabilidad a tu aplicación, que opinas al respecto ?
@MichaelMartin66
@MichaelMartin66 9 месяцев назад
yo creo que seria lo ideal, ademas que el kafka connector sink de redis es open source
@LewisFlorezRenza
@LewisFlorezRenza Год назад
un jdbc en el restcontroller... ajá arquitectura hexagonal...
@manuel__Youtube
@manuel__Youtube 8 месяцев назад
Command Query Responsibility* Segregation min: 2:05
@davidaguirre7344
@davidaguirre7344 7 месяцев назад
hola me sale este error cuando coloco el script para debezium : {"error_code":400,"message":"Connector configuration is invalid and contains the following 1 error(s): The 'topic.prefix' value is invalid: A value is required You can also find the above list of errors at the endpoint `/connector-plugins/{connectorType}/config/validate`"}%
@papuchin7161
@papuchin7161 7 месяцев назад
Prueba aumentando esto "topic.prefix": "fulfillment"
@sergiocentenero
@sergiocentenero Год назад
No conocia este patron CQRS. Pero me parece muy interesante. Yo en mi trabajo tengo muchisimas inserccionenes de dispositivos IOTS que me mandan información de las sondas cada 5 minutos. Estoy buscando la manera de poder replicar mi base de datos mysql que sea tolerante a fallos y que no sea la tipica base de datos Maestro-Esclavo. Mi insfraestructura la he montado yo en un servidor que tengo a tal efecto (nada de amazonws o google cloud) ¿Alguien por aqui con alguna solución para replicar de forma segura la base de datos reduntante por si en algun momento se cae poder tener una segunda base de datos como si fuese la principal?
@claudioaltamirano389
@claudioaltamirano389 Год назад
gracias!!
@rbarriae
@rbarriae Год назад
¿No has pensado en implementar tu BD en MongoDB? podrías crear un Cluster de servidores de BD y de esa manera ya no tienes el problema de una sola BD que podría fallar. El Cluster mantiene todo siempre andando. Incluso no necesitas que todos los servidores del Cluster estén el mismo lugar físico (que es lo recomendable).
@rbarriae
@rbarriae Год назад
MoongoDB es solo un ejemplo, también se puede hacer con CouchDB, etc.
@areku2012
@areku2012 2 месяца назад
realice la prueba y no funciona
@JamsMendez
@JamsMendez Год назад
🐘🟥☕🐋
@pedrojimenezblanquel3915
@pedrojimenezblanquel3915 Год назад
{ "name": "inventory-connector", "config": { "connector.class": "io.debezium.connector.postgresql.PostgresConnector", "tasks.max": "1", "database.hostname": "postgres", "database.port": "5432", "database.user": "postgres", "database.password": "postgres", "database.dbname" : "postgres", "topic.prefix": "dbserver1", "schema.include.list": "inventory" } } FOR POSTGRESQL
Далее
Implementación de arquitecturas hexagonales
37:10
Просмотров 54 тыс.
My little bro is funny😁  @artur-boy
00:18
Просмотров 8 млн
Instalación de un cluster de Apache Kafka paso a paso
21:53
Implement CQRS Design Pattern with SpringBoot
1:03:37
Просмотров 80 тыс.