Construction et utilisation de SpringCloud-Nacos

Pour l'adresse du projet, veuillez vous rendre sur le gitee pour télécharger et consulter https://gitee.com/xwb1056481167/spring-cloud

Nacos (Dynamic Naming and Config Service)

La fonction principale:

Rétrogradation de la limite actuelle du service : par défaut, il prend en charge l'accès à la fonction de rétrogradation de la limite actuelle de WebServlet, WebFlux, OpenFeign, RestTemplate, Spring Cloud Gateway, Zuul, Dubbo et RocketMQ. Vous pouvez modifier les règles de rétrogradation de limite actuelle en temps réel via la console pendant l'exécution, et prend également en charge les limites d'affichage Dégradation de flux Surveillance des métriques.

Inscription et découverte de service : adaptez-vous aux normes d'enregistrement et de découverte de service Spring Cloud, et intégrez la prise en charge du ruban par défaut.

Gestion de la configuration distribuée : prend en charge la configuration externalisée dans les systèmes distribués et s'actualise automatiquement lorsque la configuration change.

Capacités basées sur les messages: développez des capacités basées sur les messages pour les applications de microservices basées sur Spring Cloud Stream.

Transaction distribuée : utilisez les annotations @GlobalTransactional pour résoudre les problèmes de transaction distribuée de manière efficace et sans aucune intrusion dans l'entreprise. .

Alibaba Cloud Object Storage : services de stockage cloud massifs, sécurisés, peu coûteux et hautement fiables fournis par Alibaba Cloud. Prise en charge du stockage et de l'accès à tout type de données dans n'importe quelle application, à tout moment et en tout lieu.

Planification de tâches distribuée : fournit des services de planification de tâches de deuxième niveau, précis, hautement fiables et hautement disponibles (basés sur l'expression Cron). En même temps, il fournit des modèles d'exécution de tâches distribuées, telles que des tâches de grille. La tâche de grille prend en charge la distribution uniforme des tâches quantiques de la mer à tous les travailleurs (schedulerx-client) pour exécution.

Alibaba Cloud Short Message Service : un service mondial de messages courts avec des capacités de communication interconnectées conviviales, efficaces et intelligentes pour aider les entreprises à créer rapidement des canaux d'accès client.

Nacos = Eureka + Config + Bus

Installation de nacos

Adresse de téléchargement:  https://github.com/alibaba/nacos/releases
1.1.4 Adresse de téléchargement
https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4. Zip
https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.tar.gz

Saisissez l'adresse suivante dans le navigateur

http: // localhost: 8848 / nacos // Nom d'utilisateur mot de passe nacos / nacos

Intégration de projet Nacos

Créez un nouveau cloudalibaba-provider-payment9001, cloudalibaba-provider-payment9002 et créez 9001, 9002 et 9001 ci-dessous.

Tout d'abord, intégrez le jar dans le projet total spring-cloud (ou spécifiez le numéro de version dans le fournisseur direct)

<!-- SpringCloud alibaba -->
<dependencyManagement>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2.1.0.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
</dependencyManagement>

1. Nouveau fournisseur de services cloudalibaba-provider-payment9001,9002

1 、 pom.xml

<!-- alibaba nacos 服务端 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2 、 l 配置

server:
  port: 9001
spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
management:
  endpoints:
    web:
      exposure:
        include:  '*'

3. La classe de démarrage principale

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain9001 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain9001.class, args);
    }
}

4 、 contrôleur

@RestController
public class PaymentController {
    @Value("\${server.port}")
    private String serverPort;
    @GetMapping(value = "/payment/nacos/{id}")
    public String getPaymentById(@PathVariable("id") Long id) {
        return "nacos registry ,serverPort: +" + serverPort + "\\t id " + id;
    }
}

Terminez la construction de 9001, comme ci-dessus pour 9002 (omis ici).

2. Nouveau service consommateur cloudalibaba-consumer-nacos-order83

1 、 pom.xml

<!-- alibaba nacos 服务端 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2 、 l

server:
  port: 83
spring:
  application:
    name: nacos-payment-comsumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址
management:
  endpoints:
    web:
      exposure:
        include:  '*'
#消费者将要去访问的微服务名称,(注册成功进nacos的微服务提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider

3. La classe de démarrage principale

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerMain83 {
    public static void main(String[] args) {
        SpringApplication.run(NacosConsumerMain83.class, args);
    }
}

4 、 restTemplate 和 Contrôleur

//restTemplate类
@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}
//controller
@RestController
@Slf4j
public class OrderNacosController {
    @Resource
    private RestTemplate restTemplate;
    @Value("\${service-url.nacos-user-service}")
    private String nacosUserService;

    @GetMapping("/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id) {
        return restTemplate.getForObject(nacosUserService + "/payment/nacos/" + id, String.class);
    }
}

Résultats des tests (actualisation, accès à l'interrogation 9001,9002)

Comparaison du registre


Comment basculer entre AP et CP pris en charge par les nacos

curl -X PUT '\ $ NACOS_SERVER: 8848 / nacos / v1 / ns / opérateur / commutateurs? entry = serverMode & value = CP'

Enregistrement du service et découverte des similitudes et des différences entre les trois centres d'enregistrement d'Eureka, Zookeeper et Consul (théorie CAP)

Introduction à la théorie de la PAC

En tant que théorie de base du système distribué, la théorie CAP décrit un système distribué dans les trois caractéristiques suivantes:

  • Cohérence
  • Disponibilité (Disponibilité)
  • Tolérance de partition

Cohérence: une fois que le système distribué a terminé une certaine opération d'écriture, toute opération de lecture doit obtenir la dernière valeur écrite par l'opération d'écriture. Cela équivaut à exiger que tous les nœuds d'un système distribué maintiennent la cohérence des données à tout moment.

Disponibilité (disponibilité): les opérations de lecture et d'écriture peuvent toujours être effectuées normalement. En termes simples, le client peut toujours accéder normalement et obtenir une réponse normale du système. Du point de vue de l'utilisateur, il n'y aura aucun problème tel qu'un échec de fonctionnement du système ou un délai d'attente d'accès.

Tolérance de partition: Lorsqu'un nœud ou une partition réseau dans un système distribué tombe en panne, l'ensemble du système peut toujours fournir des services externes qui répondent à la cohérence et à la disponibilité. C'est-à-dire qu'une défaillance partielle n'affecte pas l'utilisation globale. En fait, lors de la conception d'un système distribué, nous prendrons en compte les pannes causées par des bogues, du matériel, des réseaux, etc., donc même si certains nœuds ou réseaux échouent, nous exigeons que tout le système continue à être utilisé (ne pas continuer à utiliser, équivalent à Il n'y a qu'une seule partition, donc il n'y a pas de cohérence et de disponibilité ultérieures)

Tout au plus, deux conditions peuvent être bien remplies en même temps (pour la raison, veuillez vous référer à: https://www.cnblogs.com/zhuyeshen/p/11720655.html).

Le cœur de la théorie CAP est qu'un système distribué ne peut pas satisfaire les trois exigences de cohérence, de disponibilité et de tolérance aux pannes de partition en même temps. Par conséquent, selon le principe CAP, les bases de données NoSQL sont divisées en trois catégories qui répondent aux principes de CA , CP et AP.:

CETTE

Les clusters à point unique, des systèmes qui répondent à la cohérence et à la disponibilité, ne sont généralement pas solides en termes d'évolutivité.

CP

Un système qui respecte la cohérence et la tolérance aux pannes de partition n'est généralement pas particulièrement performant.

AP

Les systèmes qui respectent la disponibilité et la tolérance aux pannes de partition peuvent généralement avoir des exigences de cohérence inférieures.

Nom du composant Langue CASQUETTE Contrôle de surveillance du service Interface exposée de l'extérieur Intégration SpringCloud
eureka Java AP Peut être équipé d'un support http Intégré
consul aller CP Etre prêt http: DNS Intégré
gardien de zoo Java CP Etre prêt Client Intégré

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Je suppose que tu aimes

Origine blog.csdn.net/www1056481167/article/details/113612177
conseillé
Classement