Maison  >  Article  >  interface Web  >  solution de microservices nodejs

solution de microservices nodejs

PHPz
PHPzoriginal
2023-05-14 12:06:401153parcourir

Avec le développement d'Internet, de plus en plus d'institutions et d'entreprises ont commencé à s'intéresser à l'architecture des microservices. Cette architecture peut aider les entreprises à mieux organiser et gérer les systèmes et à améliorer la fiabilité et l'évolutivité des applications. choisir des technologies et des outils appropriés est crucial. En tant que langage back-end d'E/S asynchrone hautes performances, Nodejs peut facilement implémenter des solutions de microservices.

Cet article présentera la solution de microservice basée sur Nodejs, y compris l'architecture de microservice et ses avantages, les idées de conception de composants, l'enregistrement et la découverte de services basés sur Nodejs, l'invocation de service basée sur RPC et la mise en œuvre de microservices sur la plateforme Excelize.

L'architecture des microservices et ses avantages
L'architecture des microservices est une méthode permettant de diviser une application en composants plus petits appelés microservices. Chaque microservice s'exécute dans son propre processus, communique avec d'autres microservices et fournit des fonctions métier via l'interaction API. L'architecture de microservices permet aux entreprises de mieux diviser les applications et d'améliorer la fiabilité et l'évolutivité des applications. Par rapport aux applications monolithiques, les avantages de l'architecture des microservices résident dans les aspects suivants :

  1. Déployable de manière indépendante : chaque microservice est indépendant sans aucune dépendance et peut être déployé et mis à jour indépendamment pendant le processus de déploiement, il n'y a presque aucun risque et il le fera. n’affecte pas le fonctionnement des autres microservices.
  2. Facile à étendre : l'architecture de microservices permet de mieux réaliser une expansion horizontale et d'ajouter de nouvelles instances de service avec les mêmes fonctions. Étant donné que chaque service fonctionne indépendamment, un service peut être mis à l'échelle selon les besoins.
  3. Meilleur couplage métier : l'architecture de microservices peut aider à réduire le couplage entre les composants du système, à séparer la logique métier en composants plus petits et à rendre le système plus flexible.
  4. Meilleure tolérance aux pannes : étant donné que chaque composant de l'architecture du microservice est indépendant, lorsqu'une panne survient, le problème peut être localisé et réparé plus rapidement.

Dans l'architecture des microservices, la réflexion sur la conception des composants joue également un rôle très important.

Idée de conception basée sur les composants
L'idée de conception basée sur les composants consiste à diviser l'application en composants réutilisables plus petits, chaque composant contenant une logique métier et des fonctions spécifiques. Les composants peuvent communiquer entre eux via des API. Cette idée peut aider les développeurs à mieux organiser et gérer des systèmes complexes.

Dans l'architecture des microservices, les idées de composantisation ont également été largement utilisées. En le divisant en composants plus petits, il peut être plus facile de mettre en œuvre une commutation à temps zéro, de réduire la complexité, de découpler, etc.

Enregistrement et découverte de services basés sur Nodejs
Dans l'architecture des microservices, l'enregistrement et la découverte de services sont des éléments très importants. Le mécanisme d'enregistrement et de découverte de services est un mécanisme qui mappe les noms logiques à une liste d'instances de service disponibles. Chaque instance de service enregistre ses propres informations (telles que le nom d'hôte et le numéro de port) dans le registre du service. D'autres services peuvent rechercher dans le registre une instance disponible d'un service, puis effectuer des appels de service via cette instance de service.

Dans Nodejs, vous pouvez utiliser certaines bibliothèques tierces pour implémenter l'enregistrement et la découverte de services. Pour ces bibliothèques, Zookeeper, etcd et Consul sont largement utilisés.

Parmi ces bibliothèques, Consul est probablement la plus populaire. En tant qu'outil de découverte de services et de gestion de configuration, il fournit un ensemble d'API puissantes qui peuvent facilement réaliser l'enregistrement et la découverte de services.

Ce qui suit est un exemple de code utilisant Consul pour l'enregistrement et la découverte de services :

const consul = require('consul')();
const serviceName = 'nodejs-service';

const registerService = (port) => {
  const details = {
    name: serviceName,
    address: 'localhost',
    port: port,
    check: {
      http: `http://localhost:${port}/health`,
      interval: '10s',
      timeout: '3s'
    }
  };

  consul.agent.service.register(details, (err) => {
    if (err) {
      throw new Error(`Failed to register: ${err}`);
    }
    console.log(`Registered with Consul`);
  });
};

const discoverService = () => {
  consul.agent.service.list((err, services) => {
    if (err) {
      throw err;
    }

    const nodes = Object.values(services[nodejs-service] || {}).map(({ Address, Port }) => ({ Address, Port }));
    console.log(`Discovered ${nodes.length} nodes`);
  });
};

module.exports = { registerService, discoverService };

Appel de service basé sur RPC
Dans l'architecture du microservice, RPC (Remote Procedure Call) lie différentes instances de microservice. Dans l'architecture REST basée sur HTTP, le client appelle un microservice via des requêtes HTTP, mais dans l'architecture RPC, le client peut appeler le service et obtenir une réponse lui indiquant ce qui s'est passé.

RPC est un mécanisme plus puissant qui prend en charge plus de fonctions et plus de types de scénarios d'application. Dans Node.js, l'un des frameworks RPC les plus populaires est gRPC.

gRPC est un cadre d'appel de procédure à distance (RPC) moderne, efficace et open source conçu pour rendre les applications de services basées sur le cloud plus faciles, plus rapides et plus coordonnées. Il prend en charge plusieurs langages de programmation, notamment Node.js, Python, Java, Go, etc., et peut générer automatiquement du code de modèle, de sérialisation et de vérification.

Voici un exemple de code utilisant le framework gRPC :

var protoLoader = require('@grpc/proto-loader');
var grpc = require('grpc');
var packageDefinition = protoLoader.loadSync('hello.proto');
var greet_proto = grpc.loadPackageDefinition(packageDefinition).greet;

function getServer() {
  var server = new grpc.Server();
  server.addService(greet_proto.Greeter.service, { 
    SayHello: sayHello, 
    SayGoodbye: sayGoodbye ,
  });
  server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
  console.log("gRPC server running on port 50051");
  return server;
}
function sayHello(call, callback) {
  callback(null, { 
    message: 'Hello ' + call.request.name
  });
}
function sayGoodbye(call, callback) {
  callback(null, { 
    message: 'Goodbye ' + call.request.name
  });
}

getServer().start();

Le code ci-dessus montre comment implémenter un service gRPC simple dans Nodejs.

Implémentation de microservices de la plateforme Excelize
Excelize est une plateforme d'applications de microservices open source facile à étendre au niveau de l'entreprise. Construit principalement sur NodeJS, Excelize crée un moyen simple de créer et de gérer des microservices, permettant aux développeurs de se concentrer sur la logique métier.

Excelize possède les fonctionnalités suivantes :

  1. Plateforme de création de microservices évolutive

Excelize est une plateforme de création de microservices facilement évolutive. Il fournit un ensemble de services de base tels que l'équilibrage de charge, la découverte de services et le déploiement automatique pour simplifier la construction et le déploiement de microservices.

  1. Architecture de plug-in flexible

L'architecture de plug-in d'Excelize est très flexible, permettant aux développeurs d'écrire des plug-ins personnalisés pour étendre les fonctionnalités de la plateforme. De cette manière, les développeurs peuvent personnaliser la plateforme Excelize en fonction de leurs besoins.

  1. 自动部署

Excelize支持自动部署,通过该功能,开发者可以轻松部署微服务应用程序,将应用程序部署到生产环境所需的时间和工作量大大降低。

在Excelize中,可以非常方便地实现微服务方案。开发者可以使用ExcelizeSDK库,通过简单的代码来实现服务注册和发现、基于RPC的服务调用等功能。

下面是一个使用ExcelizeSDK实现的服务调用示例代码:

const ExcelizeSDK = require('excelize-sdk');

const client = new ExcelizeSDK.Client({
  domain: 'http://localhost:3000',
  token: 'your_token',
});

const server = client.createService('nodejs-service');

server.invoke('my_method', { param: 1234 })
  .then((response) => {
    console.log('Response: ', response);
  })
  .catch((error) => {
    console.error(error);
  });

结论
微服务架构是一种面向未来的系统架构设计思想,它可以帮助企业更好地组织和管理应用程序,提高应用程序的可靠性和可扩展性。在Nodejs中实现微服务方案非常容易,且可以使用第三方库和Excelize平台来快速构建和管理微服务应用程序。因此,Nodejs微服务方案是一种值得推荐的方案。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn