Exploración de microservicios: nuoyi-cloud (Noi)

1. Despliegue del entorno

1. Preparativos

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. Instalación de MYSQL

  • Comando de instalación: sudo bash msmysql.pkg

  • Versión de software: 5.7.33

3. Instalación de REDIS

  • Instrucciones de instalación: sudo bash msredis.pkg

  • Versión de software: 5.0.3

4. Instalación de JDK

  • Instrucciones de instalación: sudo bash mstomcat.pkg

  • Versión de software: 1.8.0_191

5. Instalación MINIO

  • Comando de instalación: sudo bash msminio.pkg

  • Versión de software: 2021-06-17T00:10:46Z

  • Acceso local: entrada del navegador http://localhost:9000

  • La cuenta predeterminada es admin y la contraseña es msos123minio

6. Instalación SENTIEL (centinela)

  • Sentinel es un componente de protección de tráfico de alta disponibilidad para la arquitectura de servicios distribuidos. Utiliza principalmente el tráfico como punto de entrada para ayudar a los desarrolladores a garantizar la estabilidad de los microservicios desde múltiples dimensiones, como la limitación de corriente, la configuración del tráfico, la degradación de los disyuntores, la protección de la carga del sistema y protección de puntos de acceso sexo.

  • Enlace de descarga: sentinel-dashboard-1.8.1.jar

  • Versión de software: 1.8.1

  • Instrucciones de instalación:/usr/lib/jdk/jdk1.8/bin/java -jar /home/sugao/Downloads/sentinel-dashboard-1.8.1.jar --server.port=8718

  • Acceso local: entrada del navegador http://localhost:8718

  • La contraseña de cuenta predeterminada es centinela.

8. Instalación de RABBITTMQ

  • instalar secuencia de comandos
#!/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
  • Acceso local: Ingrese http://localhost:15672 en el navegador, y la contraseña de cuenta predeterminada es invitado

9.ideaIU instalación

  • Descarga ideaIU-2021.1.tar.gz, descomprime e instala;

10. Importación e inicialización de proyectos

  • Obtén el código fuente:git clone https://gitee.com/y_project/RuoYi-Cloud

  • Importe el código fuente al proyecto Ided: Archivo>Nuevo>Proyecto de fuentes existentes...

  • Después de importar el código fuente, espere a que la idea descargue automáticamente las dependencias relevantes;

  • SDK de implementación: Archivo>Estructura del proyecto>Proyecto

  • Configure la base de datos: Base de datos>+>Fuente de datos>Mysql> nombre de configuración, contraseña y cuenta de la base de datos, nombre de la base de datos. Esta configuración es la siguiente:

      配置名称                     数据库名称
    (必选)msavskit               msavskit
    (必选)msavskit_config        msavskit_config
    (可选)msavskit_seata         msavskit_seata
    
  • Para crear una base de datos, use el siguiente comando:

    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" 
    
  • Ejecute el archivo sql correspondiente. Tenga en cuenta que ry_config_20210531.sql y ry_seata_20210128.sql crearán la base de datos establecida en el archivo, después de ejecutar la base de datos

       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. Instalación NACOS

  • Dirección de descarga: [nacos-server-2.0.2.tar.gz](https://github.com/alibaba/nacos/releases/download/2.0.2/nacos-server-2.0.2.tar.gz)
  • Versión de software: 2.0.2
  • Modifique el archivo de configuración application.properties y habilite mysql como la base de datos de 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
  • Inicie el centro de registro de nacos.

  • Aumente la variable de entorno JDK en el script 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 
    
  • Comienza el servicio

    bash nacos/bin/startup.sh -m standalone
    
  • Acceso local: entrada del navegador http://localhost:8848/nacos/index.html

  • Cuenta y contraseña por defecto: nacos

  • Después de iniciar sesión en nacos, modifique la configuración: Gestión de la configuración > Todas las configuraciones de redis y mysql en la lista de configuración (cuenta, contraseña, nombre de la base de datos, etc.)

11. Iniciar el módulo básico (sin secuencia)

  • El módulo de puerta de enlace RuoYiGatewayApplication debe (modificar el puerto de servicio a 9080, modificar)
  • El módulo de autenticación RuoYiAuthApplication debe
  • El módulo del sistema RuoYiSystemApplication debe
  • RuoYiMonitorCentro de monitoreo de aplicaciones opcional
  • Generación de código RuoYiGenApplication opcional
  • RuoYiJobApplication tarea de temporización opcional
  • Servicio de archivos RuoYFileApplication opcional

12. Microservicios

12.1 Puerta de enlace de servicio

  • Entrada externa del sistema unificado: las aplicaciones de microservicio se pueden implementar en diferentes salas de computadoras, diferentes regiones y bajo diferentes nombres de dominio.Cuando hay una puerta de enlace, las solicitudes relacionadas con el cliente se envían directamente a la puerta de enlace, y la puerta de enlace determina la dirección específica del microservicio. en función del análisis del identificador de solicitud y, a continuación, reenvíe la solicitud a la instancia de microservicio.
  • Tecnología de marco utilizada: Spring Cloud Gateway tiene como objetivo proporcionar una forma simple y eficiente de enrutar APIy brindarles inquietudes entre dominios, como: seguridad, monitoreo/indicadores, limitación de corriente, degradación de fusibles, lista negra, lista blanca, etc.
  • Conceptos básicos:
    Enrutamiento (Ruta): La información de enrutamiento consta de ID, URI de destino, un conjunto de aserciones y un conjunto de filtros. Si la ruta de aserción es verdadera, entonces el URI solicitado coincide con la configuración.
    Aserción (predicado): el tipo de entrada de la función de aserción en Spring Cloud Gateway es ServerWebExchange en el marco Spring 5.0. La función de aserción en Spring Cloud Gateway permite a los desarrolladores definir y hacer coincidir cualquier información de la solicitud Http, como encabezados y parámetros de solicitud.
    Filtro (Filtro): El filtro en Spring Cloud Gateway se divide en dos tipos, a saber, filtro de puerta de enlace y filtro global. Los filtros procesarán solicitudes y respuestas.

12.2 Centro de configuración

  • El centro de configuración es un componente de servicio básico que administra varias configuraciones de aplicaciones de manera unificada.El centro de configuración separa la configuración de cada aplicación y administra la configuración de manera unificada;
  • Nacos es una plataforma dinámica de descubrimiento de servicios, gestión de configuración y gestión de servicios de código abierto de Alibaba que es fácil de crear aplicaciones nativas de la nube;
  • La prioridad de carga del archivo de configuración (de mayor a menor): bootstrap.properties > bootstrap.yml > application.properties > application.yml
  • Apoyar la implementación de clústeres;

12.2.3 Llamada de servicio

  • Llamada de servicio: las interfaces entre los servicios se llaman entre sí. En la arquitectura de microservicios, muchas funciones necesitan llamar a múltiples servicios para completar una determinada función.

  • Feign es un cliente de servicio HTTP de primera clase Spring Cloud Netflixen el componente.Implementa un marco de trabajo de código abierto para balanceo de carga y llamadas Rest.Encapsula e implementa programación orientada a la interfaz, lo que reduce aún más el grado de acoplamiento del proyecto.RestfulRibbonRestTemplateWebService

  • Anotaciones que Feign no admite Spring MVC, usa su propio conjunto de anotaciones, para un uso más conveniente, Spring Cloud eclosiona las anotaciones de OpenFeign que admiten Spring MVC

12.2.4 Supervisión del servicio

  • Supervise el estado actual de la aplicación del sistema, la memoria, el subproceso, la pila, el registro y otra información relacionada. El objetivo principal es descubrir con precisión y rapidez cuándo el servicio tiene un problema o está a punto de tener un problema, a fin de reducir el alcance de impacto.
  • Interfaz de monitoreo del servicio del actuador Spring Boot, el actuador es una herramienta para monitorear el estado del sistema
  • Spring Boot Admin es una herramienta de monitoreo para el embellecimiento de la interfaz de usuario y la encapsulación de la interfaz del actuador Spring-Boot. Puede examinar la información básica de todos los proyectos Spring-Boot monitoreados en la lista, información detallada de salud, información de memoria, información de JVM, información de recolección de elementos no utilizados, información de configuración diversa (como fuente de datos, lista de caché y tasa de aciertos), etc. también puede modificar directamente el nivel del registrador
  • http://localhost:9100, cuenta ruoyi, contraseña 123456

12.2.5 Interfaz del sistema

  • A través de Swagger, puede agregar algunas anotaciones al escribir código y la interfaz del documento se genera automáticamente

12.2.6 Contenedor de aplicaciones

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

Desinstalar el contenedor de la versión anterior

 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 Desinstalar el motor del contenedor

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

13. Ejecución frontal

  • Ingrese al directorio del proyecto:cd ruoyi-ui
  • Dependencias de instalación:npm install --registry=https://registry.npm.taobao.org
  • Proyecto de inicio:npm run dev
  • Acceso local: entrada del navegador http://localhost:80
  • Administrador de cuenta predeterminado, contraseña admin123

14. Situación portuaria

  • Servicio de página de plataforma: http://localhost:80, administrador de cuenta, contraseña admin123
  • Puerta de enlace: 8080
  • Servicio centinela: http://localhost:8718, la contraseña de la cuenta es centinela
  • servicio del centro de configuración de nacos: http://localhost:8848/nacos/index.html, cuenta y contraseña nacos
  • Servicio de monitoreo de servicio: http://localhost:9100, cuenta ruoyi, contraseña 123456
  • Autenticación de autenticación: 9200

Supongo que te gusta

Origin blog.csdn.net/weixin_35804181/article/details/130385184
Recomendado
Clasificación