Servidor Couchbase

Microservicio usando Docker stack deploy - WildFly, Java EE y Couchbase

Hay mucho material sobre microservicios, sólo buscar en google¡! Hice una presentación sobre refactorización de monolito a microservicios en Devoxx Bélgica hace un par de años y tiene buenas críticas:

Este blog mostrará cómo Docker simplifica la creación y el cierre de un microservicio. Todo el código utilizado en este blog está en github.com/arun-gupta/couchbase-javaee.

Definición de microservicios con Compose

Docker 1.13 introdujo un v3 de Docker Compose. Los cambios en la sintaxis son mínimos, pero la diferencia clave es la adición de despliegue atributo. Este atributo permite especificar réplicas, rolling update y política de reinicio para el contenedor. Nuestro microservicio iniciará un servidor de aplicaciones WldFly con una aplicación Java EE pre-desplegada. Esta aplicación hablará con una base de datos Couchbase para CRUD los datos de la aplicación. Aquí está la definición de Compose:

En este archivo Compose:

  1. En este Compose se definen dos servicios con el nombre db y web atributos
  2. Nombre de imagen para cada servicio definido mediante imagen atributo
  3. En arungupta/couchbase:viaje inicia el servidor Couchbase, lo configura utilizando API REST de Couchbasey cargas viaje-muestra con ~32k documentos JSON.
  4. En arungupta/couchbase-javaee:travel inicia WildFly y despliega el archivo WAR de la aplicación creado a partir de https://github.com/arun-gupta/couchbase-javaee. Clona ese proyecto si quieres construir tu propia imagen.
  5. medio ambiente define variables de entorno accesibles por la aplicación desplegada en WildFly. COUCHBASE_URI se refiere al servicio de base de datos. Esto se utiliza en el código de la aplicación como se muestra en https://github.com/arun-gupta/couchbase-javaee/blob/master/src/main/java/org/couchbase/sample/javaee/Database.java.
  6. El reenvío de puertos se realiza mediante puertos atributo
  7. depende_de en el archivo de definición Compose garantiza el orden de inicio del contenedor. Pero las aplicaciones que se ejecutan dentro del contenedor deben garantizar el arranque a nivel de aplicación. En nuestro caso, WildFly se inicia con bastante rapidez, pero la base de datos tarda unos segundos en iniciarse. Esto significa que la aplicación Java EE desplegada en WildFly no puede comunicarse con la base de datos. Esto pone de manifiesto una práctica recomendada al crear aplicaciones de microservicios: debe codificar de forma defensiva y asegurarse en la inicialización de la aplicación de que los microservicios de los que depende se han iniciado, sin asumir el orden de inicio. Esto se muestra en el código de inicialización de la base de datos en https://github.com/arun-gupta/couchbase-javaee/blob/master/src/main/java/org/couchbase/sample/javaee/Database.java. Realiza las siguientes comprobaciones:

    1. El cubo existe
    2. El servicio de consulta de Couchbase ya funciona
    3. El cubo de muestras está completamente cargado

Esta aplicación puede iniciarse mediante docker-compose up -d en un único host. O un clúster de motores Docker en modo enjambre utilizando docker stack deploy mando.

Configurar el modo enjambre de Docker

Inicialice el modo Enjambre utilizando el siguiente comando:

Esto inicia un Gestor de Enjambre. Por defecto, los nodos gestores son también trabajadores, pero pueden configurarse para ser sólo gestores.
Encuentre información sobre este cluster de un nodo utilizando el comando información de docker mando:

Este cluster tiene 1 nodo, y ese es el manager. Alternativamente, un cluster multi-host puede ser fácilmente configurado usando Docker para AWS.

Despliegue de microservicios

El microservicio se puede iniciar como:

Esto muestra la salida:

Los servicios WildFly y Couchbase se inician en este nodo. Cada servicio tiene un único contenedor. Si el modo Enjambre está habilitado en varios nodos, los contenedores se distribuirán entre varios nodos.
Se crea una nueva red superpuesta. Esto permite que varios contenedores en diferentes hosts se comuniquen entre sí.

Compruebe que los servicios WildFly y Couchbase se están ejecutando mediante docker service ls:

Los registros del servicio pueden consultarse mediante docker service logs -f webapp_web:

Asegúrese de esperar a que aparezca la última declaración de registro.

Microservicio de acceso

Obtener 10 aerolíneas del microservicio:

Esto muestra los resultados como:

Taller sobre Docker para desarrolladores Java es un laboratorio práctico a su propio ritmo y le permite iniciarse en Docker fácilmente. Consigue un único recurso:

Crea un nuevo recurso:

Actualizar un recurso:

Borrar un recurso:

Los resultados detallados de cada uno de estos comandos se encuentran en github.com/arun-gupta/couchbase-javaee.

Eliminar microservicio

El microservicio puede eliminarse mediante el comando docker stack rm webapp:

¿Quieres empezar a usar Couchbase? Mira en Kits de inicio de Couchbase. ¿Quieres saber más sobre cómo ejecutar Couchbase en contenedores?

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Arun Gupta, Vicepresidente, Defensa del Desarrollador, Couchbase

Arun Gupta es vicepresidente de promoción de desarrolladores en Couchbase. Ha creado y dirigido comunidades de desarrolladores durante más de 10 años en Sun, Oracle y Red Hat. Tiene una gran experiencia en liderar equipos multidisciplinares para desarrollar y ejecutar estrategias, planificar y ejecutar contenidos, campañas de marketing y programas. Anteriormente dirigió equipos de ingeniería en Sun y es miembro fundador del equipo Java EE. Gupta es autor de más de 2.000 entradas de blog sobre tecnología. Tiene una amplia experiencia como conferenciante en más de 40 países sobre innumerables temas y es una JavaOne Rock Star desde hace tres años consecutivos. Gupta también fundó el capítulo Devoxx4Kids en Estados Unidos y sigue promoviendo la educación tecnológica entre los niños. Autor de varios libros sobre tecnología, ávido corredor, trotamundos, campeón de Java, líder de JUG, miembro del Dream Team de NetBeans y capitán de Docker, es fácilmente accesible en @arungupta.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.