npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@landra_sistemas/lisco_hydra

v0.0.1-rc.2

Published

Microservices module for lisco based on Hydra.

Downloads

5

Readme

Lisco Hydra

npm GitHub

alt

Módulo de gestión de microservicios basado en Hydra para lisco.

Lisco es un framework basado en express el cual, de forma nativa, no dispone de la capacidad de escalar horizontalmente en diferentes nodos. Dispone del sistema de cluster de nodejs pero esto solo permite aumentar la cantidad de procesos activos en el mismo nodo.

Para aportar esta característica nace Lisco Hydra. Este módulo sobreescribe el comportamiento base de Lisco incluyendo Hydra de forma que la aplicación creada pueda beneficiarse de todas las características de los microservicios tales como:

  • Autodiscovery
  • Service Scalability
  • Distributed Messaging
  • Load balancing
  • Health Monitoring
  • Hydra Router
  • Hydra CLI
  • Para más información visita Hydra

Hydra utiliza redis como motor de almacenamiento de datos centralizado. La información de los microservicios, rutas y comunicaciones pasa por el.

Quick Start

El módulo puede añadirse a cualquier instalación existente de lisco. Únicamente es necesario:

> npm install @landra_sistemas/lisco_hydra

Una vez instalado el módulo, su uso es sencillo:

import { App } from '@landra_sistemas/lisco'
+import { HydraServer, HydraClusterServer } from "../src/index.mjs";

//La implementación de esto puede variar 
module.exports = () => { 
    //Al inicio de la funcion de arranque
+    App.clusterClass = HydraClusterServer;
+    App.serverClass = HydraServer;

    [...]

-    await App.init();
+    await App.init({
+           socketio: false,
+           traceRequests: true,
+           hydra: {
+               serviceName: "[Name]",
+               serviceDescription: "[Description]",
+               serviceIP: "",
+               servicePort: 0, //Random port for better scalability
+               serviceType: "express",
+               serviceVersion: "[version]",
+               redis: {
+                   url: "redis://default:redispw@localhost:56563",
+               },
+           },
+       });

-   App.start();
+   await App.start();

+   console.log(`Started "${App.hydra.getServiceName()}" (v.${App.hydra.+ getInstanceVersion()})`);

}

Mediante estas modificaciones se sobreescribe el comportamiento de forma que Hydra controle el arranque del mismo.

Instalar redis

Hydra necesita redis para la gestión de los nodos y su intercomunicación. Para esto se puede usar docker:

> docker run --name some-redis -d redis

Ver mas info sobre formas de instalarlo Aquí

Hydra CLI

La herramienta de comandos Hydra CLI se puede usar para interactuar con el sistema. Para ello se debe instalar:

> npm install -g hydra-cli

Una vez instalada es necesario realizar la configuración de la herramienta para conectarla con el servidor de redis:

> hydra-cli config
redisUrl: 127.0.0.1
redisPort: 6379
redisDb: 15

Hydra Router

Mediante el Router se pueden redirigir, sin necesidad de implementar un gateway, mensajes entre los diferentes servicios conectados. Dispone también de una interfaz sencilla para la visualización de los servicios activos.

Para instalarlo es necesario docker.

> docker run -d -p 5353:5353 --add-host host:10.1.1.175 --name hydra-router flywheelsports/hydra-router:1.3.3

Una vez instalado, el dashboard es accesible de la siguiente forma:

http://localhost:5353/

Se puede consultar mas información sobre cómo utilizar las herramientas del router Aquí

Uso

El uso del módulo dependerá en gran medida de la estrategia usada y la arquitectura elegida. Hydra puede gestionar la comunicación entre nodos de forma que los microservicios puedan comunicarse entre sí.

API Gateway

Una posibilidad podría ser utilizar un servicio Gateway encargado de publicar la API cliente que se servirá a los usuarios y que consumirá el resto de microservicios.

TODO crear ejemplos

Dezentralized

Otra posibilidad podría ser utilizar el sistema de mensajería de Hydra para que los microservicios puedan comunicarse entre sí. Creando un servicio para la presentación de la vista al usuario.

TODO crear ejemplos

Arquitectura

La elección de la arquitectura dependerá de las necesidades. En esta web se puede encontrar mucha información al respecto y estrategias tanto de división como de implementación: Microservicios

Plugins interesantes

Hydra dispone de un sistema de plugins registrables "at runtime" para extender su comportamiento. Durante las pruebas se han encontrado una serie de plugins que pueden ser registrados y aportar funcionalidades interesantes:

  • https://github.com/jkyberneees/hydra-plugin-http - Plugin para simplificar la creación de gateways de forma que centralice las llamadas API a los diferentes servicios conectados.
  • https://github.com/pnxtech/hydra-plugin-hls - Logger para centralizar los logs en HLS (Hydra Logging Service).

Ayuda

En el siguiente repo existe un tutorial creado por el desarrollador principal del sistema:

  • https://github.com/cjus/hydra-tutorial

En el se puede encontrar los pasos para iniciar redis, hydra-router y crear varios servicios que hablen entre si.