Sistema de práctica primera operación

❄ 1. Encuesta del curso

Al principio pensé que era una clase práctica sobre hardware, porque también hay una clase de estructura de sistema de computación en el horario. El nombre de la clase es similar al del maestro. Después del descubrimiento, fue una clase de experimento de software. El primer experimento me expuso a muchas cosas que no había conocido antes. Conocimiento, espero que a través de este curso mi habilidad práctica integral se pueda mejorar ==

❄ 2. Comprender los microservicios

(1) ¿Qué es el microservicio?

Microservice Architecture es un concepto arquitectónico diseñado para desacoplar soluciones descomponiendo funciones en servicios discretos. Puede pensar que está en el nivel arquitectónico en lugar de adquirir servicios.
Muchos principios SÓLIDOS se aplican a la clase. La arquitectura de microservicios es un concepto muy interesante, su función principal es descomponer funciones en servicios discretos, reduciendo así el acoplamiento del sistema y proporcionando un soporte de servicio más flexible.
Concepto : divida una aplicación y servicio grandes y grandes en varios o incluso docenas de microservicios de soporte, que pueden extender un solo componente en lugar de la pila completa de aplicaciones para cumplir con los acuerdos de nivel de servicio.
Definición : Cree aplicaciones en torno a componentes de dominio empresarial. Estas aplicaciones se pueden desarrollar, administrar e iterar independientemente. El uso de la arquitectura de la nube y las funciones de implementación, administración y servicio de escritorio plano en componentes distribuidos facilita la entrega del producto.
Esencia : utilice algunos servicios con funciones más claras y negocios más sofisticados para resolver problemas más grandes y prácticos.

(2) Características

  • Componenteización de servicios:
    en la arquitectura de microservicios, necesitamos crear componentes y descomponer el servicio, que es un componente fuera de proceso que coopera a través de protocolos de comunicación como HTTP, en lugar de funcionar de manera integrada como los componentes tradicionales. Cada servicio se desarrolla e implementa de manera independiente, lo que puede evitar efectivamente la redistribución de todo el sistema causada por la modificación de un servicio.
  • Organice equipos por negocio:
    al implementar una arquitectura de microservicios, se requieren diferentes métodos de división de equipos. Dado que cada servicio se implementa para una pila amplia o completa para un negocio específico, los minutos son responsables del almacenamiento persistente de datos y son responsables de varias funciones interdisciplinarias, como la definición de la interfaz de usuario. Por lo tanto, frente a grandes proyectos, se recomienda dividir el equipo de microservicios de acuerdo con el método de la línea de negocio. Por un lado, puede reducir efectivamente la fricción interna causada por la modificación interna del servicio. Por otro lado, el límite del equipo puede volverse más Por claridad.
  • Actitud del producto:
    en el equipo de arquitectura de microservicios, cada pequeño equipo debe ser responsable de todo su ciclo de vida en la forma de hacer productos, en lugar de entregarlos a pruebas y operación y mantenimiento como el objetivo del desarrollo tradicional del proyecto.
  • Puntos finales inteligentes y tuberías tontas:
    dado que cada servicio no está en un proceso, el modo de comunicación entre componentes ha cambiado y la llamada al método original se ha convertido en una llamada al método RPC, lo que provocará una comunicación engorrosa entre microservicios, lo que hace que el sistema El rendimiento es aún peor, por lo que necesitamos un protocolo de comunicación de grano más grueso:
  • En la arquitectura de microservicios, generalmente se usan los siguientes dos métodos de invocación de servicios:
    (1) Use la API RESTful de HTTP o un protocolo de envío de mensajes liviano para implementar la entrega de mensajes y la activación de la invocación de servicios.
    (2) Al pasar mensajes en un bus de mensajes liviano, algunos intermedios como RabbitMQ proporcionan un intercambio asincrónico confiable.
    En el caso de un énfasis extremo en el rendimiento, también es posible usar un protocolo de mensajería binaria, como protobuf
  • Gobierno descentralizado:
    mediante el uso de contratos ligeros para definir interfaces en toda la arquitectura de microservicios, la plataforma técnica específica del servicio de nuestro equipo ya no es tan sensible, de modo que cada componente en todo el sistema de arquitectura de microservicios puede apuntar a diferentes Elija diferentes plataformas tecnológicas para las características del negocio.
  • Gestión descentralizada de datos:
    al implementar una arquitectura de microservicios, se espera que cada servicio administre su propia base de datos. Esta es la descentralización de la gestión de datos. Aunque la descentralización de la gestión de datos hace que la gestión de datos sea más detallada, permitiendo el almacenamiento de datos y El rendimiento es óptimo, pero en diferentes instancias de bases de datos, la coherencia de los datos también se ha convertido en uno de los problemas que deben resolverse en la arquitectura del microservicio. La dificultad de implementar la transacción distribuida es muy grande, por lo que en la arquitectura del microservicio, enfatizamos cada uno Se realiza una llamada "sin transacción" entre los servicios, y la consistencia de los datos solo requiere que los datos sean consistentes en el estado de procesamiento final.
  • Automatización de la infraestructura:
    en la arquitectura de microservicios, es importante construir una plataforma de "entrega continua" desde el principio para soportar todo el proceso de implementación;
  • Diseño tolerante a fallas:
    en la arquitectura de microservicio, es necesario detectar rápidamente la fuente de la falla y restaurar automáticamente el servicio tanto como sea posible. Por lo general, queremos implementar componentes de monitoreo y registro en cada servicio. Por ejemplo: el tablero de datos clave como el estado del servicio, el estado del interruptor, el rendimiento, el retraso de la red, etc.
  • Diseño evolutivo:
    en la etapa inicial, el diseño y la implementación se llevan a cabo en un sistema monolítico, por un lado, el volumen del sistema no es muy grande en la etapa inicial, y los costos de construcción y mantenimiento no son altos. Por otro lado, el negocio principal en la etapa inicial generalmente no cambia significativamente en la etapa posterior.
    Con el desarrollo del sistema o las necesidades de la empresa, el arquitecto realizará un procesamiento de microservicio en algún contenido que a menudo cambia o tiene un cierto efecto de tiempo, y gradualmente dividirá gradualmente los módulos variables originales en el sistema único, y se estabilizará Los módulos que no cambian mucho forman un microservicio central que existe en toda la arquitectura.

(3) En comparación con la estructura de software tradicional

  • Arquitectura de software tradicional
    • Todas las funciones están empaquetadas en un paquete WAR, básicamente sin dependencias externas (excepto contenedores), implementadas en un contenedor JEE (Tomcat, JBoss, WebLogic), incluida toda la lógica como DO / DAO, Servicio, UI.

    • Ventaja

      • Desarrollo simple y gestión centralizada.
      • Básicamente no repetirá el desarrollo
      • Las funciones son locales, sin gestión distribuida y consumo de llamadas.
    • Desventajas

      • Baja eficiencia: los desarrolladores están cambiando el código en el mismo proyecto, esperándose el uno al otro, y los conflictos están constantemente
      • Difícil de mantener: las funciones de código y las funciones están unidas, los recién llegados no saben cómo comenzar
      • Inflexible: largo tiempo de construcción, cualquier cambio menor requerirá la reconstrucción de todo el proyecto, lo que lleva mucho tiempo
      • Mala estabilidad: un pequeño problema puede hacer que se cuelgue toda la aplicación
      • Escalabilidad insuficiente: incapaz de cumplir con los requisitos comerciales bajo alta concurrencia
  • Ventajas y desventajas de la arquitectura de microservicios.
    • Ventaja
      • La granularidad del servicio es más detallada, lo que conduce a la reutilización de recursos y mejora la eficiencia del desarrollo.
      • Puede formular con mayor precisión planes de optimización para cada servicio y mejorar la capacidad de mantenimiento del rendimiento.
      • Aplicable a la era de Internet, el ciclo de iteración del producto es más corto
    • Desventajas
      • Hay demasiados microservicios, y el costo del gobierno del servicio es alto, lo que no conduce al mantenimiento del sistema.
      • El costo técnico del desarrollo del sistema distribuido es alto (tolerancia a fallas, cosas distribuidas, etc.), lo que representa un gran desafío para el equipo.
  • Implementación de la arquitectura
    de microservicios En términos de arquitectura de microservicios, la implementación de microservicios desempeña un papel vital y tiene los siguientes requisitos clave:
    • Capacidad para desplegar / desplegar independientemente de otros microservicios.
    • Debe poder escalar en cada nivel de microservicio (un servicio determinado puede obtener más tráfico que otros servicios).
    • Construya e implemente rápidamente microservicios.
    • Una falla en un microservicio no debe afectar a ningún otro servicio.
      Docker (un motor de código abierto que permite a los desarrolladores y administradores de sistemas implementar contenedores de aplicaciones autosuficientes en un entorno Linux) proporciona una excelente manera de implementar microservicios para cumplir con los requisitos anteriores. Los pasos clave involucrados son los siguientes:
    • Empaquete los microservicios como imágenes de contenedor (Docker).
    • Implemente cada instancia de servicio como un contenedor.
    • El escalado se realiza en función de cambiar el número de instancias de contenedor.
    • A medida que usemos contenedores Docker, la velocidad de construcción, implementación e inicio de
      microservicios mejorará enormemente (mucho más rápido que las máquinas virtuales regulares). Kubernetes administra y ejecuta contenedores Docker en varios hosts al permitir que los clústeres de contenedores Linux se administren como un sistema Proporciona la ubicación conjunta de contenedores, descubrimiento de servicios y funciones de control de copia, y expande las funciones de Docker. Como puede ver, la mayoría de estas características también son esenciales en nuestro entorno de microservicios. Por lo tanto, el uso de Kubernetes (en la parte superior de Docker) para la implementación de microservicios se ha convertido en un método extremadamente poderoso, especialmente para la implementación de microservicios a gran escala.

❄Tres, aprende la tecnología docker

(1) Aprenda a comprender los conceptos relevantes de Docker

  • docker: Docker es un motor contenedor de aplicaciones de código abierto que permite a los desarrolladores empaquetar sus aplicaciones y paquetes dependientes en un contenedor portátil y luego publicarlo en cualquier máquina Linux o Windows popular. También se puede virtualizar. El mecanismo de sandbox se usa completamente, y no habrá ninguna interfaz entre sí.
  • docker compose: Compose es una herramienta para definir y ejecutar aplicaciones Docker de contenedores múltiples. Con Compose, puede usar archivos YML para configurar todos los servicios que su aplicación necesita. Luego, con un solo comando, puede crear e iniciar todos los servicios desde la configuración del archivo YML.
  • Dockerfile: Dockerfile es un archivo de texto utilizado para construir una imagen. El contenido del texto contiene una serie de instrucciones e instrucciones necesarias para construir una imagen.
  • docker machine: Docker Machine es una herramienta que le permite instalar Docker en un host virtual, y puede usar el comando docker-machine para administrar el host.
    Docker Machine también puede administrar de forma centralizada todos los hosts de Docker, como instalar rápidamente Docker en 100 servidores. El host virtual administrado por ocker Machine puede ser un proveedor integrado o en la nube, como Alibaba Cloud, Tencent Cloud, AWS o DigitalOcean.
    Con el comando docker-machine, puede iniciar, verificar, detener y reiniciar el host administrado, también puede actualizar el cliente Docker y el daemon, y configurar el cliente Docker para comunicarse con su host.
  • Swarm: Swarm es una herramienta de administración de clúster proporcionada oficialmente por Docker. Su función principal es abstraer varios hosts Docker en su conjunto y administrar varios recursos de Docker en estos hosts Docker a través de una sola entrada. Swarm es similar a Kubernetes, pero más ligero y tiene menos características que kubernetes.
  • k & s: k8s es una herramienta para orquestar contenedores. De hecho, también es una herramienta para administrar todo el ciclo de vida de las aplicaciones. Desde crear aplicaciones, implementar aplicaciones, proporcionar servicios, expandir y reducir aplicaciones y actualizar aplicaciones, es muy conveniente y se puede hacer Para recuperarse del fracaso.

(2) Construir un entorno acoplable

1. Instalación de Ubuntu Docker

1.1 Instalación utilizando el almacén Docker

1.1.1 Configurar almacén

Actualizar el índice del paquete apt

    sudo apt-get updat  

Instale el paquete de dependencia apt, utilizado para obtener el repositorio a través de HTTPS

    sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common  

Agregar la clave GPG oficial de Docker

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -  

Configurar un repositorio estable

    sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable" 

1.1.2 Instalar Docker Engine-Community

Actualizar el índice del paquete apt

    sudo apt-get update  

Instale la última versión de Docker Engine-Community y containerd

sudo apt-get install docker-ce docker-ce-cli containerd.io  

Prueba si Docker se instaló correctamente

sudo docker run hello-world 

2. Uso de contenedores Docker

2.1 Obtener espejo

Use el comando docker pull para cargar la imagen de ubuntu

sudo docker pull ubuntu  

2.2 Iniciar el contenedor

sudo docker run -t -i ubuntu /bin/bash

Descripción del parámetro:

  • -i: Operación interactiva.
  • -t: terminal.
  • ubuntu: imagen de ubuntu.
  • / bin / bash: el comando se coloca después del nombre de la imagen. Aquí queremos tener un shell interactivo, por lo que se utiliza / bin / bash.

2.3 Iniciar / detener

Ver todos los comandos del contenedor

sudo docker ps -a

Iniciar un contenedor detenido

sudo docker start <容器 ID>

2.4 Corriendo en segundo plano

Crear un contenedor en ejecución en segundo plano

sudo docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hi; sleep 1; done"

Ver la salida estándar en el contenedor

sudo docker logs <容器 ID>

2.5 Detener y reiniciar el contenedor

Detener el contenedor iniciado

sudo docker stop <容器 ID>

Se detuvo el reinicio del contenedor

sudo docker restart <容器 ID>

2.6 Entrar al contenedor

Cuando se usa el parámetro -d, el contenedor ingresará al fondo después de que se inicie. En este momento, si desea ingresar al contenedor, puede ingresarlo a través del siguiente comando:

  • acoplador acoplable
  • docker exec: se recomienda su uso, ya que esto saldrá de la terminal del contenedor y no hará que el contenedor se detenga.
2.6.1 comando adjuntar
sudo docker attach <容器 ID>

2.6.2 comando exec
sudo docker exec -it <容器 ID> /bin/bash

2.7 Actualizar contenedor

Ver métodos de actualización opcionales

docker container update --help

2.8 Eliminar contenedor

sudo docker rm -f <容器 ID>

(3) Uso de la imagen Docker

3.1 Obtención de Alibaba Cloud Mirror Accelerator

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

3.2 Listar la lista espejo

sudo docker images

Descripción de cada opción:
REPOSITORIO: representa la fuente del almacén espejo
TAG: etiqueta espejo
ID IMAGEN: ID espejo
CREADO: tiempo de creación espejo
TAMAÑO: tamaño espejo

3.3 Encontrar espejo

用 Docker Hub

sudo docker search httpd

3.3 Arrastrar y soltar imágenes

Descargar espejo

sudo docker pull httpd

(4) gestión de almacenes Docker

4.1 almacén de Docker Hub

4.1.1 Crear Alibaba Cloud Warehouse

4.1.2 Iniciar sesión en Alibaba Cloud Docker Registry

sudo docker login --username=维他柠檬茶br registry.cn-hangzhou.aliyuncs.com

4.1.3 Empuje la imagen al Registro

sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/bybbr/bbrdocker:v1
sudo docker push registry.cn-hangzhou.aliyuncs.com/bybbr/bbrdocker:v1

4.1.4 Eliminar archivos anteriores

sudo docker rmi registry.cn-hangzhou.aliyuncs.com/bybbr/bbrdocker:v1

4.1.5 Extraer imagen del registro

sudo docker pull registry.cn-hangzhou.aliyuncs.com/bybbr/bbrdocker:v1

Supongo que te gusta

Origin www.cnblogs.com/bbbr/p/12722098.html
Recomendado
Clasificación