realiza orientada modelado microservicios generalmente entre diseño diseñar desarrollo cómo crear comunicación comunicacion basado arquitectura database design architecture microservices

database - orientada - diseñar microservicios



Microservicios: origen de datos por instancia o por microservicio? (3)

En mi experiencia con la arquitectura de mSOA, nunca he visto

MÚLTIPLE (fuente de datos por instancia)

para ser utilizado. Incluso si planea cargarlo en gran medida, las bases de datos más comunes por naturaleza admiten el acceso de múltiples subprocesos. Por lo general, el cuello de botella (o la parte más lenta) de un sistema DB es el disco. Tuvimos que escalar nuestros clusters varias veces (relativamente barato si estás en la nube, pero la escalabilidad también puede convertirse en un problema, ya que se necesitarán más hilos para administrar y ejecutar el sistema DB a escala). Tenga en cuenta que algunos RDBMS utilizan un DB temporal (tempdb) que utilizan todos los DB en esa instancia para ordenar, hash, variables temporales, etc. El multiprocesamiento y la división de estos archivos tempdb se pueden usar para mejorar el rendimiento del tempdb , mejorando así el rendimiento general del servidor.

Desde ahora que trabajo con Orchard , debo decir que hay algunos casos de esquina, cuando sus acciones en una instancia no se sincronizan por completo (y puntualmente). Esto hace que se denegue el acceso a los recursos (justo después del registro del evento) incluso después de la autenticación correcta.

Planeo ocultar varias instancias detrás de Load Balancer

Este es un diseño adecuado para sus servidores de aplicaciones, por lo que la utilización de un clúster de base de datos también debería ser adecuada. Con el objetivo de obtener una respuesta completa, puede considerar DWH , en caso de que tenga muchos servicios y desee realizar una minería de datos y análisis de todos sus DB.

Construir arquitectura de microservicio me enfrenté al problema del intercambio de datos entre instancias del mismo microservicio.

Tengo servicio de microservicio, que usa masivamente su fuente de datos: cada solicitud al servicio causa una solicitud de base de datos (generalmente insertada). Este servicio se usará mucho y planeo ocultar varias instancias detrás de Load Balancer. Y aquí surge una pregunta: ¿estas instancias usarán UNA base de datos (¿será la base de datos un cuello de botella?) O MÚLTIPLE (fuente de datos por instancia)?


Mucho depende de tu caso de uso real, pero creo que la solución puede ser escribir por detrás o por escrito. Este enlace habla sobre la técnica con EhCache, creo que debería haber otros cachés que admitan la característica, es posible que desee googlear un poco sobre eso.


Tener una instancia de base de datos por instancia de microservicio es una arquitectura muy inusual. Si le preocupa cargar en la base de datos, puede agruparlo para obtener un mayor rendimiento, sin embargo, las inserciones no causan mucha carga.

Sugeriría que busque en una base de datos NoSQL si le preocupa que la base de datos sea un cuello de botella. Las bases de datos NoSQL están diseñadas para escalar mejor para un alto rendimiento y manejar grandes cantidades de datos. Por supuesto, la desventaja es que no manejan bien los modelos de datos complejos.