Get it on Google Play
Tu partner Freelance para tus proyectos IT

Microservicios | Service Discovery con Hashicorp Consul y Javascript

03-06-2020

En el vídeo de hoy os ensañamos a usar un “Service Discovery” o servicio de descubrimiento, concretamente lo implementaremos usando la herramienta de la empresa Hashicorp llamada consul.

Para la explicación de lo que es y como funciona os remitimos al vídeo que creo que está muy bien explicado. Para hacer las practicas:

Instalar Hashicorp Consul

Instalar Hashicorp Consul es tan fácil como descargarlo de su web https://www.consul.io/downloads(El de la plataforma correcta) y descomprimir.

Se trata de un único comando, solo tiene un fichero. Para arrancarlo lo hemos hecho de la manera siguiente:

./consul agent -dev -bind=192.168.1.46 -data-dir=.

Donde ‘192.168.1.46′ es mi dirección IP(Necesario porque tengo varias tarjetas de red en mi máquina) y ‘.’ es la carpeta actual.

Como veis muy fácil. Una vez arrancado tendremos acceso a Consul a través de la URL http://127.0.0.1:8500/ui

Desarrollo de una aplicación Javascript con Consul

Para el desarrollo de nuestra aplicación, primero hemos inicializado el proyecto y después instalado nuestras dos dependencias. En este proyecto tendremos dos dependencias: Express(Framework para desarrollo de aplicaciones web con Javascript) y Consul(Módulo para conectar a Hashicorp Consul).

# Inicializar proyecto
npm init

# Instalar dependencias
npm install consul
npm install express

Y a partir de aquí solo tenemos que crear la aplicación(Acordaos de modificar las constantes o hacer algo mas elegante):

const consul = require('consul')();
const express = require('express');

const SERVICE_NAME='microservicio101';
const SERVICE_ID='m'+process.argv[2];
const SCHEME='http';
const HOST='192.168.1.46';
const PORT=process.argv[2]*1;

/* Inicializamos server */
const app = express();

app.get('/health', function (req, res) {
    res.end( "Ok." );
    });

app.get('/', function (req, res) {
    var s="<h1>Instancia '"+SERVICE_ID+"' del servicio '"+SERVICE_NAME+"'</h1>";
    s+="<h2>Listado de servicios</h2>";

    consul.agent.service.list(function(err, result) {
      if (err) throw err;

      res.end( s+JSON.stringify( result ) );
      });
    });
 
app.listen(PORT, function () {
    console.log('Sistema armado en el puerto '+SCHEME+'://'+HOST+':'+PORT+'!');
    });

/* Registro del servicio */
var check = {
  id: SERVICE_ID,
  name: SERVICE_NAME,
  address: HOST,
  port: PORT, 
  check: {
	   http: SCHEME+'://'+HOST+':'+PORT+'/health',
	   ttl: '5s',
	   interval: '5s',
     timeout: '5s',
     deregistercriticalserviceafter: '1m'
	   }
  };
 
consul.agent.service.register(check, function(err) {
  	if (err) throw err;
  	});

Acceso a Consul vía API Rest

Se me olvidó comentarlo en el vídeo pero también tenemos acceso al Consul vía API Rest(Por si en vuestro lenguaje de programación favorito no hay módulo). De esta manera si queremos ver la lista de servicios podemos hacerlo con ‘curl’ de esta sencilla manera:

curl http://127.0.0.1:8500/v1/agent/services

Espero que os haya gustado y hasta la próxima.

Microservicios con Hashicorp Consul y Javascript

Microservicios con Hashicorp Consul y Javascript

Si te ha servido, por favor comparte
 

Leave a Reply