Vous apprendre à créer un projet SpringCloud (1) Explication graphique détaillée

Que sont les microservices ? Vous connaîtrez la série en un coup d’œil !

1. Vous apprendre à construire un projet SpringCloud (1) Explication détaillée avec images et textes, fonctionnement insensé

2. Vous apprendre étape par étape comment construire un projet SpringCloud (2) Producteurs et consommateurs

3. Vous apprendre étape par étape comment créer un projet SpringCloud (3) Intégrer le centre d'enregistrement du service Eureka

4. Vous apprendre étape par étape comment créer un projet SpringCloud (4) Construire la version du cluster Eureka

5. Vous apprendre étape par étape comment créer un projet Spring Cloud (5) Créer la version du cluster producteur

6. Vous apprendre étape par étape comment créer un projet SpringCloud (6) Eureka implémente la découverte de services

7. Vous apprendre étape par étape comment créer un projet Spring Cloud (7) Intégrer le centre d'enregistrement du service Consul

8. Vous apprendre étape par étape comment créer un projet Spring Cloud (8) Intégrer l'équilibreur de charge du ruban

9. Vous apprendre étape par étape comment créer un projet Spring Cloud (9) Intégrer l'appel d'interface de service OpenFeign

10. Vous apprendre étape par étape comment créer un projet Spring Cloud (10) Intégration de la rétrogradation du service Hystrix

11. Vous apprendre étape par étape comment créer un projet Spring Cloud (11) Intégration du disjoncteur de service Hystrix

12. Vous apprendre étape par étape comment créer un projet Spring Cloud (12) Intégrer Hystrix pour la surveillance en temps réel du tableau de bord graphique

13. Vous apprendre étape par étape comment créer un projet SpringCloud (13) Intégrer la passerelle nouvelle génération Gateway

14. Vous apprendre étape par étape comment créer un projet SpringCloud (14) Intégrer le centre de configuration distribué Config

15. Vous apprendre étape par étape comment créer un projet Spring Cloud (15) Intégrer le bus de messages Bus

16. Vous apprendre étape par étape comment créer un projet Spring Cloud (16) Intégrer le pilote de message Stream

17. Vous apprendre à créer un projet SpringCloud (17) Intégration du suivi des liens distribués Sleuth

Continuez à mettre à jour, veuillez aimer et suivre !

Qu’est-ce que Spring Cloud ?

Spring Cloud est une collection ordonnée d'une série de frameworks.Il utilise la commodité de développement de Spring Boot pour simplifier le développement de systèmes distribués, tels que la découverte de services, la passerelle de services, le routage de services, le suivi des liens, etc. Spring Cloud ne réinvente pas la roue, mais intègre et encapsule des modules bien développés sur le marché, réduisant ainsi le coût de développement de chaque module. En d'autres termes : Spring Cloud fournit le « compartiment familial » nécessaire pour créer des systèmes distribués.

Statu quo sur Spring Cloud

À l'heure actuelle, peu d'entreprises utilisent la technologie Spring Cloud en Chine. Ce n'est pas parce que Spring Cloud n'est pas bon. Les principales raisons sont les suivantes :

  1. Spring Cloud possède peu de documents chinois et il n'existe pas beaucoup de solutions aux problèmes sur Internet.
  2. La plupart des patrons techniques des entreprises entrepreneuriales nationales sont des employés du département Ali, et le département Ali utilise principalement Dubbo pour construire l'architecture des microservices.
  3. Les grandes entreprises disposent essentiellement de leurs propres solutions distribuées, tandis que l'architecture des petites et moyennes entreprises n'utilise pas de microservices, il n'est donc pas nécessaire d'utiliser Spring Cloud.

Cependant, l'architecture des microservices est une tendance et Spring Cloud est un leader dans les solutions de microservices, c'est pourquoi l'auteur a écrit cette série de cours.

Avantages et inconvénients de Spring Cloud

Ses principaux avantages sont :

集大成者,Spring Cloud 包含了微服务架构的方方面面。
约定优于配置,基于注解,没有配置文件。
轻量级组件,Spring Cloud 整合的组件大多比较轻量级,且都是各自领域的佼佼者。
开发简便,Spring Cloud 对各个组件进行了大量的封装,从而简化了开发。
开发灵活,Spring Cloud 的组件都是解耦的,开发人员可以灵活按需选择组件。

Ses inconvénients :

项目结构复杂,每一个组件或者每一个服务都需要创建一个项目。
部署门槛高,项目部署需要配合 Docker 等容器技术进行集群部署,而要想深入了解 Docker,学习成本高。

Les avantages de Spring Cloud sont évidents. Par conséquent, pour les étudiants qui souhaitent étudier l’architecture des microservices, apprendre Spring Cloud est un bon choix.

Construction du projet Spring Cloud

Rappel chaleureux : vous devez avoir une certaine base de springboot !

Dans le dernier article, nous avons découvert les microservices. Les comprendre ne suffit pas. Le plus important est de les pratiquer, car la pratique est le seul critère pour tester la vérité. Ce n'est que lorsque la théorie et la pratique sont maîtrisées que nous pouvons vraiment l'apprendre. Nous savons que les microservices ont plusieurs services, regroupent différentes entreprises dans différents services, puis s'appellent entre chaque service. Nous devons donc créer un nouveau projet général (projet parent) pour gérer les autres projets de microservices ci-dessous. L'ensemble du processus est construit à l'aide du projet maven, qui est le même que la version springboot. Commençons à construire !

Schéma de construction du projet :
insérer la description de l'image ici

Nous construisons d'abord le projet parent, ici nous utilisons le projet maven pour construire.

insérer la description de l'image ici

Remplissez gav, remplissez selon vos propres habitudes, puis cliquez sur Suivant
insérer la description de l'image ici

L'interface suivante apparaît, cliquez sur Terminer et le nouveau projet est terminé.
insérer la description de l'image ici

Ensuite, nous allons d'abord le configurer, en commençant par le fichier POM.XML.

<?xml version="1.0" encoding="UTF-8"?>
 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.study.springcloud</groupId>
  <artifactId>mcroservice</artifactId>
  <!-- 首先修改打包方式 -->
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>
 
 
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <mysql.version>5.1.47</mysql.version>
    <druid.version>1.1.10</druid.version>
    <junit.version>4.1.2</junit.version>
    <lombok.version>1.16.10</lombok.version>
    <log4j.vsrsion>1.2.17</log4j.vsrsion>
  </properties>
  <!--  因为是总项目 所以用dependencyManagement来管理  因为其他的子项目就不会来管理版本了了 可以直接引用 -->
  <dependencyManagement>
    <dependencies>
 
      <!-- springcloud的依赖-->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Greenwich.SR1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- springboot的依赖-->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.1.4.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--  数据库-->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid.version}</version>
      </dependency>
      <!-- springboot启动器-->
      <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
      </dependency>
      <!--单元测试 -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
      </dependency>
      <!-- lombok-->
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.8</version>
      </dependency>
 
      <!-- log4j-->
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.vsrsion}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.2.3</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
 
</project>

Étant donné que notre projet parent n'écrit pas d'affaires, nous pouvons supprimer le dossier src et définir certains fichiers inutiles pour qu'ils ne soient pas affichés ou les supprimer. À ce stade, nous avons terminé la construction du projet parent, c’est aussi simple que cela.

Ensuite, nous pouvons continuer à créer d’autres projets de microservices. Nous construisons d'abord un service dédié à notre classe d'entité afin que d'autres services puissent l'appeler.

Sélectionnez notre projet parent, cliquez sur Nouveau, puis cliquez sur Module, comme indiqué ci-dessous :

insérer la description de l'image ici

C'est la même chose que le projet parent.
insérer la description de l'image ici

Remplissez le nom du projet de notre module.

insérer la description de l'image ici

Notez qu'à l'étape suivante, le - du nom de notre projet est omis dans le nom du module, car il y a plus de projets dans le projet réel, et nous devons ajouter - pour le diviser pour faciliter la visualisation ! Ensuite, nous cliquons sur Terminer.

insérer la description de l'image ici

À ce stade, notre premier projet de microservice a été établi et la prochaine étape est la configuration. Nous configurons d'abord le fichier POM.xml. Nous présentons ici le package jar de Hutool, qui est une classe d'outils Java de base qui encapsule les méthodes JDK telles que les fichiers, les flux, le cryptage et le déchiffrement, le transcodage, la régularisation, les threads et XML pour former diverses classes d'outils Util, et fournit les composants suivants. en même temps :

布隆过滤
缓存
克隆接口
类型转换
日期处理
数据库ORM(基于ActiveRecord思想)
基于DFA有限自动机的多个关键字查找
HTTP客户端
IO和文件
有用的一些数据结构
日志
反射代理类的简化(AOP切面实现)
Setting(一种扩展Properties的配置文件)
System(JVM和系统信息等)
WatchService的封装(文件变动监控)
XXXUtil各种有用的工具类

Il est également très pratique à utiliser, ce qui en fait un artefact dans notre développement Java.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>mcroservice</artifactId>
        <groupId>com.study.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
 
    <artifactId>cloud-api-commons</artifactId>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
<!-- 工具包-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.1.0</version>
        </dependency>
 
 
    </dependencies>
 
 
</project>

C'est la classe pojo que l'on peut écrire dans ce service. Ici, nous prenons le paiement comme exemple, nous suggérons donc d'abord un tableau de paiement dans les données. L'instruction SQL est la suivante

CREATE TABLE `payment` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `serial` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Nous ajoutons des données à la table et l'instruction SQL est la suivante :

insert  into `payment`(`id`,`serial`) values (1,'百度'),(2,'alibaba'),(3,'京东'),(4,'头条');

Après avoir créé la table et ajouté des données, nous créerons une nouvelle classe d'entité correspondante. L'image ci-dessous montre le diagramme de structure du projet :

insérer la description de l'image ici

La classe d'entité correspondant à la table de paiement. Lombok est utilisé ici, et le fichier pom ci-dessus importe les dépendances, mais le plug-in lombok doit être installé, sinon une erreur sera signalée ! Comme indiqué ci-dessous:

insérer la description de l'image ici

package com.buba.springcloud.pojo;
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
 
import java.io.Serializable;
 
//网络通信 一定要实现序列化
//使用lombok  没有配置的童鞋要去百度查一下  jar我们导入了  需要在idea装一个插件就可以了
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class Payment implements Serializable {
    
    
    private Long id;
    // 微服务 一个服务对应一个数据库,同一个信息可能存在不同的数据库
    private  String serial;
}

Pour faciliter la transmission des données et pour séparer les projets front-end et back-end, nous encapsulons les données renvoyées dans une classe d'entité.

package com.buba.springcloud.pojo;
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
 
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class CommonResult<T> {
    
    
    private Integer code;//返回状态码
    private String  message;//返回是否调用成功
    private  T data; //返回的数据
 
    public CommonResult(Integer code, String message) {
    
    
        this(code,message,null);
    }
}

Notre service de classe d'entité stocke principalement les classes d'entité et n'écrit pas de logique métier. Nous pouvons également supprimer le dossier src. À ce stade, nous avons construit avec succès le projet général et le projet de microservice qui fournit des classes d'entités. Étant donné que le projet de service de la classe d'entité doit être appelé par d'autres projets de service, le service de la classe d'entité doit être empaqueté et placé dans une bibliothèque publique locale.

Nous nettoyons d'abord le projet pour nous assurer que la configuration maven du projet actuel réussit.

insérer la description de l'image ici

L'interface suivante apparaît, indiquant qu'il n'y a aucun problème avec l'environnement de configuration maven du projet en cours.

insérer la description de l'image ici

Ensuite, nous commencerons à l'installer et à l'emballer dans la bibliothèque locale. Voici l'interface réussie :

insérer la description de l'image ici

À ce stade, nous pouvons voir que le fichier pom.xml de notre projet général a introduit cloud-api-commons, comme indiqué ci-dessous :

insérer la description de l'image ici

Notre prochain article construira des projets de microservices pour les producteurs et les consommateurs. L'article est mis à jour en permanence, n'hésitez pas à aimer et à suivre !

insérer la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_39570655/article/details/131760874
conseillé
Classement