Microservice-Exploration: nuoyi-cloud (Noi)

1. Umgebungsbereitstellung

1. Vorbereitungen

JDK >= 1.8 (推荐1.8版本)
Mysql >= 5.7.0 (推荐5.7版本)
Redis >= 3.0
Maven >= 3.0
Node >= 10
nacos >= 1.1.0
sentinel >= 1.6.0
测试系统:Ubuntu 20.04.2 LTS

2. MYSQL-Installation

  • Installationsbefehl: sudo bash msmysql.pkg

  • Softwareversion: 5.7.33

3. REDIS-Installation

  • Installationsanleitung: sudo bash msredis.pkg

  • Softwareversion: 5.0.3

4. JDK-Installation

  • Installationsanleitung: sudo bash mstomcat.pkg

  • Softwareversion: 1.8.0_191

5. MINIO-Installation

  • Installationsbefehl: sudo bash msminio.pkg

  • Softwareversion: 2021-06-17T00:10:46Z

  • Lokaler Zugriff: Browsereingabe http://localhost:9000

  • Das Standardkonto ist admin und das Passwort ist msos123minio

6. SENTIEL (Sentinel)-Installation

  • Sentinel ist eine hochverfügbare Verkehrsschutzkomponente für verteilte Dienstarchitekturen. Es nutzt hauptsächlich Verkehr als Einstiegspunkt, um Entwicklern dabei zu helfen, die Stabilität von Mikrodiensten aus mehreren Dimensionen wie Strombegrenzung, Verkehrsformung, Leistungsschalterverschlechterung, Systemlastschutz usw. sicherzustellen Hotspot-Schutz. Sex.

  • Download-Link: sentinel-dashboard-1.8.1.jar

  • Softwareversion: 1.8.1

  • Installationsanleitung:/usr/lib/jdk/jdk1.8/bin/java -jar /home/sugao/Downloads/sentinel-dashboard-1.8.1.jar --server.port=8718

  • Lokaler Zugriff: Browsereingabe http://localhost:8718

  • Das Standardkontopasswort ist Sentinel

8. RABBITMQ-Installation

  • Skript installieren
#!/bin/sh
sudo apt-get install curl gnupg debian-keyring debian-archive-keyring apt-transport-https -y
## Team RabbitMQ's main signing key
sudo apt-key adv --keyserver "hkps://keys.openpgp.org" --recv-keys "0x0A9AF2115F4687BD29803A206B73A36E6026DFCA"
## Launchpad PPA that provides modern Erlang releases
sudo apt-key adv --keyserver "keyserver.ubuntu.com" --recv-keys "F77F1EDA57EBB1CC"
## PackageCloud RabbitMQ repository
sudo apt-key adv --keyserver "keyserver.ubuntu.com" --recv-keys "F6609E60DC62814E"

## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
## "focal" as distribution name should work for any reasonably recent Ubuntu or Debian release.
## See the release to distribution mapping table in RabbitMQ doc guides to learn more.
deb http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu focal main
deb-src http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu focal main

## Provides RabbitMQ
##
## "focal" as distribution name should work for any reasonably recent Ubuntu or Debian release.
## See the release to distribution mapping table in RabbitMQ doc guides to learn more.
deb https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ focal main
deb-src https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ focal main
EOF

## Update package indices
sudo apt-get update -y

## Install Erlang packages
sudo apt-get install -y erlang-base \
                        erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
                        erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
                        erlang-runtime-tools erlang-snmp erlang-ssl \
                        erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing

rabbitmq-plugins enable rabbitmq_management

service rabbitmq-server restart
  • Lokaler Zugriff: Geben Sie http://localhost:15672 in den Browser ein. Das Standardkontokennwort lautet „guest“.

9.ideaIU-Installation

  • Laden Sie ideaIU-2021.1.tar.gz herunter, entpacken Sie es und installieren Sie es.

10. Projektimport und -initialisierung

  • Holen Sie sich den Quellcode:git clone https://gitee.com/y_project/RuoYi-Cloud

  • Importieren Sie den Quellcode in das Ided-Projekt: Datei>Neu>Projekt aus vorhandenen Quellen…

  • Warten Sie nach dem Import des Quellcodes, bis die Idee die relevanten Abhängigkeiten automatisch herunterlädt.

  • Bereitstellungs-SDK: Datei > Projektstruktur > Projekt

  • Konfigurieren Sie die Datenbank: Datenbank>+>Datenquelle>MySQL> Konfigurationsname, Datenbankkennwort und -konto, Datenbankname. Diese Konfiguration ist wie folgt:

      配置名称                     数据库名称
    (必选)msavskit               msavskit
    (必选)msavskit_config        msavskit_config
    (可选)msavskit_seata         msavskit_seata
    
  • Um eine Datenbank zu erstellen, verwenden Sie den folgenden Befehl:

    sudo mysql -uroot -pmsos123mysql -e "create database IF NOT EXISTS msavskit" 
    sudo mysql -uroot -pmsos123mysql -e "create database IF NOT EXISTS msavskit_config" 
    sudo mysql -uroot -pmsos123mysql -e "create database IF NOT EXISTS msavskit_seata" 
    
  • Führen Sie die entsprechende SQL-Datei aus. Beachten Sie, dass ry_config_20210531.sql und ry_seata_20210128.sql den Datenbanksatz in der Datei erstellen, nachdem die Datenbank ausgeführt wurde

       sql文件名称                     数据库名称             备注
      (必选)ry_20210608.sql          msavskit
      (必选)ry_config_20210531.sql   msavskit_config      需要修改sql文件中的数据库名称为msavskit_config,否则默认创建的数据库为ry-config
      (可选)quartz.sql               msavskit      
      (可选)ry_seata_20210128.sql    msavskit_seata       需要修改sql文件中的数据库名称为msavskit_seata,否则默认创建的数据库为ry-seata
    

6.NACOS-Installation

  • Download-Adresse: [nacos-server-2.0.2.tar.gz](https://github.com/alibaba/nacos/releases/download/2.0.2/nacos-server-2.0.2.tar.gz)
  • Softwareversion: 2.0.2
  • Ändern Sie die Konfigurationsdatei application.properties und aktivieren Sie MySQL als Datenbank von Nacos
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/msavskit_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=msos123mysql
  • Starten Sie das Nacos-Registrierungszentrum

  • Erhöhen Sie die JDK-Umgebungsvariable im Skript nacos/bin/startup.sh

    ulimit -n 1000000
    export JAVA_HOME=/usr/lib/jdk/jdk1.8
    export JRE_HOME=/usr/lib/jdk/jdk1.8/jre 
    export PATH=$JAVA_HOME/bin:$PATH 
    export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib 
    
  • Dienst starten

    bash nacos/bin/startup.sh -m standalone
    
  • Lokaler Zugriff: Browsereingabe http://localhost:8848/nacos/index.html

  • Standardkonto und Passwort: nacos

  • Nachdem Sie sich bei Nacos angemeldet haben, ändern Sie die Konfiguration: Konfigurationsverwaltung > Alle Redis- und MySQL-Konfigurationen in der Konfigurationsliste (Konto, Passwort, Datenbankname usw.)

11. Grundmodul starten (keine Sequenz)

  • Das RuoYiGatewayApplication-Gateway-Modul muss (den Service-Port auf 9080 ändern, ändern)
  • Das RuoYiAuthApplication-Authentifizierungsmodul muss
  • Das RuoYiSystemApplication-Systemmodul muss
  • RuoYiMonitorApplication Monitoring Center optional
  • RuoYiGenAnwendungscodegenerierung optional
  • RuoYiJobApplication-Timing-Aufgabe optional
  • RuoYFileApplication-Dateidienst optional

12. Mikrodienste

12.1. Service-Gateway

  • Einheitlicher externer Systemeingang: Microservice-Anwendungen können in verschiedenen Computerräumen, verschiedenen Regionen und unter verschiedenen Domänennamen bereitgestellt werden. Wenn ein Gateway vorhanden ist, werden die clientbezogenen Anforderungen direkt an das Gateway gesendet, und das Gateway bestimmt die spezifische Microservice-Adresse Basierend auf der Analyse der Anforderungskennung. , und leiten Sie die Anforderung dann an die Microservice-Instanz weiter.
  • Verwendete Framework-Technologie: Spring Cloud Gateway zielt darauf ab, eine einfache und effiziente Möglichkeit zur Weiterleitung APIund Bereitstellung domänenübergreifender Anliegen bereitzustellen, z. B. Sicherheit, Überwachung/Indikatoren, Strombegrenzung, Herabstufung von Sicherungen, Blacklist, Whitelist usw.
  • Kernkonzepte:
    Routing (Route): Routing-Informationen bestehen aus ID, Ziel-URI, einer Reihe von Behauptungen und einer Reihe von Filtern. Wenn die Assertion-Route wahr ist, stimmt der angeforderte URI mit der Konfiguration überein.
    Assertion (Prädikat): Der Eingabetyp der Assertionsfunktion in Spring Cloud Gateway ist ServerWebExchange im Spring 5.0-Framework. Mit der Assertionsfunktion in Spring Cloud Gateway können Entwickler alle Informationen aus HTTP-Anfragen definieren und abgleichen, z. B. Anforderungsheader und Parameter.
    Filter (Filter): Der Filter im Spring Cloud Gateway ist in zwei Typen unterteilt, nämlich den Gateway-Filter und den globalen Filter. Filter verarbeiten Anfragen und Antworten.

12.2. Konfigurationscenter

  • Das Konfigurationscenter ist eine grundlegende Servicekomponente, die verschiedene Anwendungskonfigurationen auf einheitliche Weise verwaltet. Das Konfigurationscenter trennt die Konfiguration von jeder Anwendung und verwaltet die Konfiguration auf einheitliche Weise.
  • Nacos ist eine dynamische Service-Discovery-, Konfigurationsmanagement- und Service-Management-Plattform, die von Alibaba als Open-Source-Lösung bereitgestellt wird und mit der sich einfach Cloud-native Anwendungen erstellen lassen.
  • Die Priorität des Ladens der Konfigurationsdatei (von hoch nach niedrig): bootstrap.properties > bootstrap.yml > application.properties > application.yml
  • Unterstützung der Clusterbereitstellung;

12.2.3. Serviceanruf

  • Dienstaufruf: Die Schnittstellen zwischen Diensten rufen sich gegenseitig auf. In der Microservice-Architektur müssen viele Funktionen mehrere Dienste aufrufen, um eine bestimmte Funktion auszuführen.

  • Feign ist ein erstklassiger HTTP-Service-Client Spring Cloud Netflixin der Komponente . Es implementiert ein Open-Source-Framework für Lastausgleich und Rest-Aufrufe und kapselt und implementiert schnittstellenorientierte Programmierung, wodurch der Kopplungsgrad des Projekts weiter reduziert wird.RestfulRibbonRestTemplateWebService

  • Anmerkungen, die Feign nicht unterstützt Spring MVC, verwendet einen eigenen Satz von Anmerkungen. Für eine bequemere Verwendung schraffiert Spring Cloud OpenFeign-Anmerkungen, die Spring MVC unterstützen

12.2.4. Serviceüberwachung

  • Überwachen Sie den aktuellen Systemanwendungsstatus, Speicher, Thread, Stapel, Protokoll und andere verwandte Informationen. Der Hauptzweck besteht darin, genau und schnell herauszufinden, wann der Dienst ein Problem hat oder kurz vor einem Problem steht, um den Umfang zu reduzieren Auswirkungen.
  • Die Service-Überwachungsschnittstelle für Spring-Boot-Aktuatoren ist ein Tool zur Überwachung des Systemzustands
  • Spring Boot Admin ist ein Überwachungstool zur Verschönerung der Benutzeroberfläche und zur Kapselung der Spring-Boot-Aktuatorschnittstelle. Sie können die grundlegenden Informationen aller überwachten Spring-Boot-Projekte in der Liste durchsuchen, detaillierte Gesundheitsinformationen, Speicherinformationen, JVM-Informationen, Informationen zur Speicherbereinigung, verschiedene Konfigurationsinformationen (z. B. Datenquelle, Cache-Liste und Trefferquote) usw. Sie Sie können die Ebene des Loggers auch direkt ändern
  • http://localhost:9100, Konto ruoyi, Passwort 123456

12.2.5. Systemschnittstelle

  • Über Swagger können Sie beim Schreiben von Code einige Anmerkungen hinzufügen und die Dokumentschnittstelle wird automatisch generiert

12.2.6. Anwendungscontainer

https://docs.docker.com/engine/install/ubuntu/

Deinstallieren Sie den alten Versionscontainer

 sudo apt remove docker docker-engine docker.io containerd runc
 sudo apt update
 sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
 echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 

 sudo apt update
 sudo apt install docker-ce docker-ce-cli containerd.io
 
 sudo docker run hello-world

12.2.6.2. Deinstallieren Sie die Container-Engine

 sudo apt purge docker-ce docker-ce-cli containerd.io
 sudo rm -rf /var/lib/docker
 sudo rm -rf /var/lib/containerd

13. Frontend läuft

  • Geben Sie das Projektverzeichnis ein:cd ruoyi-ui
  • Installationsabhängigkeiten:npm install --registry=https://registry.npm.taobao.org
  • Startup-Projekt:npm run dev
  • Lokaler Zugriff: Browsereingabe http://localhost:80
  • Standardkonto admin, Passwort admin123

14. Hafensituation

  • Plattformseitendienst: http://localhost:80, Kontoadministrator, Passwortadmin123
  • Gateway-Gateway: 8080
  • Sentinel-Dienst: http://localhost:8718, Kontopasswort ist Sentinel
  • Nacos-Konfigurationscenter-Dienst: http://localhost:8848/nacos/index.html, Konto und Passwort Nacos
  • Dienstüberwachungsdienst: http://localhost:9100, Konto ruoyi, Passwort 123456
  • Authentifizierungsauthentifizierung: 9200

おすすめ

転載: blog.csdn.net/weixin_35804181/article/details/130385184