Maison  >  Article  >  Java  >  Utilisation de Nacos pour la découverte de services dans le développement d'API Java

Utilisation de Nacos pour la découverte de services dans le développement d'API Java

PHPz
PHPzoriginal
2023-06-18 08:27:031927parcourir

Avec l'essor des applications cloud natives, l'architecture de microservices est de plus en plus privilégiée par les développeurs. La découverte de services est un élément essentiel de l'architecture des microservices, qui permet aux services de s'enregistrer et de communiquer avec d'autres services. Dans le développement Java, Nacos est un centre de découverte et de configuration de services open source populaire. Il fournit des interfaces API et UI faciles à utiliser, permettant aux développeurs de mieux gérer et coordonner les services. Cet article explique comment utiliser Nacos pour la découverte de services dans le développement d'API Java.

  1. Installer Nacos

Tout d'abord, vous devez télécharger et installer Nacos. Nacos propose deux méthodes d'installation : la compilation à partir du code source et l'installation via des packages binaires. Ici, nous choisissons d'installer via un package binaire.

Adresse de téléchargement : https://github.com/alibaba/nacos/releases

Une fois le téléchargement terminé, décompressez et démarrez le service Nacos. Créez des espaces de noms et des services dans la console Nacos pour faciliter la gestion unifiée des services.

  1. Présentation des dépendances

Dans le projet Gradle ou Maven, ajoutez la dépendance client Nacos :

Gradle : # 🎜🎜#

implementation 'com.alibaba.nacos:nacos-client:2.0.1'

Maven:

<dependency>
  <groupId>com.alibaba.nacos</groupId>
  <artifactId>nacos-client</artifactId>
  <version>2.0.1</version>
</dependency>

    Writing Service Consumer
Lorsque vous écrivez un consommateur de service, vous devez utiliser Nacos The à condition que l'objet DiscoveryClient récupère toutes les instances de service disponibles et en sélectionne une pour les demandes futures.

import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClient;
import com.alibaba.nacos.api.exception.NacosException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class ServiceConsumer {
    @Autowired
    private NacosDiscoveryProperties discoveryProperties;

    public String getServiceUrl(String serviceName) throws NacosException {
        NacosDiscoveryClient nacosDiscoveryClient = new NacosDiscoveryClient(discoveryProperties);
        List<Instance> instances = nacosDiscoveryClient.getInstances(serviceName);
        if (CollectionUtils.isEmpty(instances)) {
            throw new RuntimeException("No available instance for service");
        }
        Instance instance = LoadBalancer.chooseInstance(instances);
        return instance.getUri().toString();
    }
}

Dans le code ci-dessus, nous obtenons la liste des instances de service via DiscoveryClient et sélectionnons une instance de service à l'aide de LoadBalancer. Vous pouvez personnaliser LoadBalancer en fonction de vos besoins.

    Prestataire de services d'écriture
Lors de la rédaction d'un fournisseur de services, vous devez enregistrer le service auprès de Nacos et mettre en œuvre la logique métier spécifique du service .

import com.alibaba.cloud.nacos.registry.NacosRegistration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class ServiceProvider {
    @Autowired
    private NacosRegistration registration;

    @Value("${server.port}")
    private int port;

    public static void main(String[] args) {
        SpringApplication.run(ServiceProvider.class, args);
    }

    @GetMapping("/")
    public String index() {
        return "Hello, world!";
    }

    @GetMapping("/register")
    public String register() {
        registration.register();
        return "服务注册成功";
    }
}

Dans le code ci-dessus, nous utilisons NacosRegistration pour enregistrer le service auprès de Nacos et fournir le service dans le contrôleur.

    Exécution du service
Maintenant, nous pouvons démarrer le fournisseur de services et le consommateur de services, et accéder aux services fournis par le fournisseur de services via le service consommateur.

Visitez http://localhost:8080/register pour enregistrer le service dans Nacos.

Visitez http://localhost:8080/, vous pouvez voir le contenu renvoyé par le fournisseur de services.

    Summary
Cet article présente comment utiliser Nacos pour la découverte de services dans le développement d'API Java. Grâce à Nacos, les services peuvent être facilement enregistrés et découverts, et aucun codage supplémentaire n'est requis pour obtenir une haute disponibilité des services. J'espère que cet article pourra être utile aux développeurs Java.

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