Use docker para instalar FastDFS y úselo simplemente

提示:以下是本篇文章正文内容,下面案例可供参考

1. Acerca de FastDFS

1. Composición interna de FastDFS

  1. FastDFS es un sistema de archivos distribuido de alto rendimiento.
  2. FastDFS está compuesto por el servidor Tracker (servidor de programación de seguimiento) y el servidor de almacenamiento (servidor de almacenamiento de archivos).
  3. El servidor de almacenamiento (servidor de almacenamiento de archivos) se compone de varios grupos

2. Explicación de términos

Servidor de seguimiento (servidor de programación de seguimiento)
Servidor de seguimiento (servidor de programación de seguimiento), la función es el equilibrio de carga y la programación, a través del servidor de seguimiento al cargar archivos, puede encontrar el servidor de almacenamiento para proporcionar servicios de carga de archivos de acuerdo con algunas estrategias, por lo que el rastreador El servidor se llama Para servidores de seguimiento o servidores de programación.

Servidor de almacenamiento (servidor de almacenamiento de archivos)
El servidor de almacenamiento (servidor de almacenamiento de archivos) se utiliza para el almacenamiento de archivos. Los archivos cargados por el cliente finalmente se almacenan en el servidor de almacenamiento. El servidor de almacenamiento no implementa su propio sistema de archivos, sino que utiliza el archivo del sistema operativo. sistema para administrar archivos, por lo que el almacenamiento se denomina servidor de almacenamiento.

grupo (grupo)

  1. Dado que el servidor Storage (servidor de almacenamiento de archivos) se utiliza para almacenar archivos, tiene una capacidad limitada, para solucionar este problema se propone la agrupación de expansión, por lo que se amplía el concepto de grupo.
  2. Cada grupo almacena algunos archivos y los archivos guardados en cada grupo son diferentes.
  3. Para garantizar la alta disponibilidad de los servicios de nodo en cada grupo, se permite la creación de clústeres de servidores de almacenamiento en el grupo. Cada grupo puede tener varios miembros. El contenido almacenado en los miembros del grupo es el mismo y el estado del grupo miembros es consistente No hay un concepto maestro-esclavo.
  4. Dado que los archivos se almacenan en los nodos de cada grupo, para facilitar las llamadas de acceso http, cada servidor de almacenamiento también está vinculado a un nginx.
  5. Todos los grupos se suman a un servidor de almacenamiento completo (servidor de almacenamiento de archivos).
    inserte la descripción de la imagen aquí

3. Principio de funcionamiento Subir

inserte la descripción de la imagen aquí

  1. El servidor de almacenamiento (servidor de almacenamiento de archivos) informa regularmente el estado de cada nodo al servidor de seguimiento (servidor de programación de seguimiento), como: espacio restante en disco, estado de sincronización de archivos;
  2. Cuando el servidor Tracker (servidor de programación de seguimiento) recibe la solicitud de carga del cliente;
  3. El servidor de seguimiento (servidor de programación de seguimiento) consultará el servidor de almacenamiento disponible (servidor de almacenamiento de archivos);
  4. Devolver información como la IP y el puerto del servidor de almacenamiento disponible (servidor de almacenamiento de archivos) al usuario;
  5. El cliente carga el archivo en el servidor de almacenamiento disponible (servidor de almacenamiento de archivos) de acuerdo con la IP y el puerto devueltos;
  6. El servidor de almacenamiento (servidor de almacenamiento de archivos) genera la identificación del archivo (información de la ruta y nombre del archivo);
  7. Y escriba el archivo cargado en el disco del servidor de almacenamiento (servidor de almacenamiento de archivos);
  8. Devuelva la identificación del archivo generado (información de la ruta y nombre del archivo) al cliente;
  9. El cliente almacenará la identificación del archivo (información de ruta y nombre de archivo) para consulta y descarga;

4. Descarga del principio de funcionamiento

inserte la descripción de la imagen aquí

  1. El servidor de almacenamiento (servidor de almacenamiento de archivos) informa regularmente el estado de cada nodo al servidor de seguimiento (servidor de programación de seguimiento), como: espacio restante en disco, estado de sincronización de archivos;
  2. Cuando el servidor Tracker (servidor de programación de seguimiento) recibe la solicitud de descarga ciega del cliente;
  3. El servidor de seguimiento (servidor de programación de seguimiento) consultará el servidor de almacenamiento disponible (servidor de almacenamiento de archivos);
  4. Devolver información como la IP y el puerto del servidor de almacenamiento disponible (servidor de almacenamiento de archivos) al cliente;
  5. El cliente solicita el servidor de almacenamiento disponible (servidor de almacenamiento de archivos) de acuerdo con la identificación del archivo (información de la ruta y nombre del archivo);
  6. El servidor de almacenamiento (servidor de almacenamiento de archivos) consulta los archivos de acuerdo con la identificación del archivo (información de la ruta y nombre del archivo);
  7. El servidor de almacenamiento (servidor de almacenamiento de archivos) devuelve el archivo consultado al cliente para su descarga;

Dos, docker instalar FastDFS

1. Pasos de instalación

  1. Tire del espejo fastdfs
 docker pull delron/fastdfs 
  1. Crear un contenedor de servidor Tracker (servidor de programación de seguimiento)
    提示:在指定虚拟机镜像之后,还需要添加tracker命令,这样镜像就会根据tracker命令启动tracker服务
docker run -d  --name tracker --net=host -p 22122:22122 delron/fastdfs tracker

–net=host : Aplicar la red de la máquina virtual al contenedor, es decir, es consistente con la red del host

  1. Servidor de almacenamiento (servidor de almacenamiento de archivos), debe especificar la ip y el puerto del rastreador
    提示:在指定虚拟机镜像之后,还需要添加storager命令,这样镜像就会根据storage命令启动storage服务
docker run -d --name storage --net=host  -p 8888:8888  -p 23000:23000  -e TRACKER_SERVER=192.168.136.160:22122 -e GROUP_NAME=group1 delron/fastdfs storage
  1. GROUP_NAME=group1 : especifique que el servidor está en el grupo grupo 1 o agregue un nuevo grupo llamado grupo 1. Si desea agregar un nuevo grupo para la expansión de la capacidad, ejecute este comando nuevamente y cambie el nuevo nombre del grupo.
  2. –net=host : Aplicar la red de la máquina virtual al contenedor, es decir, es consistente con la red del host

2. Modificar la configuración de nginx

Nginx se ha integrado dentro del almacenamiento, y nginx aquí puede hacer que las imágenes sean accesibles en el navegador

  1. Ingrese al contenedor de almacenamiento
    提示:进入Storage容器内【cd /etc/fdfs/ 】也有Storage和Tracker的配置
docker exec -it storage /bin/bash
  1. Edite el archivo [nginx.conf]
 vi /usr/local/nginx/conf/nginx.conf 

inserte la descripción de la imagen aquí
3. Si he realizado cambios en la configuración, debe reiniciarse

docker restart storage

3. Usar pasos

1. Importar coordenadas

     <!--fastdfs文件存储-->
        <dependency>
            <groupId>com.github.tobato</groupId>
            <artifactId>fastdfs-client</artifactId>
            <version>1.26.7</version>
            <exclusions>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

2. Agregar configuración

Agregar configuración en [application.yml]

fdfs:
  so-timeout: 1500 #读取超时时间
  connect-timeout: 600 #连接超时时间
  thumb-image: #缩略图参数
    width: 150
    height: 150
  tracker-list: 192.168.136.160:22122 #tracker服务器地址 可配置多个
  web-server-url: http://192.168.136.160:8888 #访问路径 storage中nginx地址

inserte la descripción de la imagen aquí

3. Escritura de código

import com.github.tobato.fastdfs.domain.conn.FdfsWebServer;
import com.github.tobato.fastdfs.domain.fdfs.StorePath;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import com.tanhua.server.AppServerApplication;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.File;
import java.io.IOException;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = AppServerApplication.class)
public class FastDFSTest {
    
    
    @Autowired
    protected FastFileStorageClient storageClient;
    @Autowired
    private FdfsWebServer fdfsWebServer;

    @Test
    public void testUpload() {
    
    
        String path = "D:\\IMAGE\\2e8e06bd-bfe3-4af3-9540-83eb20982656.jpg";
        File file = new File(path);
        try {
    
    
            //上传图片
            StorePath storePath = this.storageClient.uploadFile(FileUtils.openInputStream(file), file.length(), "jpg", null);
            //拼接路径   可通过该路径访问上传的照片  http://192.168.136.160:8888/group1/M00/00/00/wKiIoGMB7PmAUPZZAAHMYGEwMhg147.jpg
            String url = fdfsWebServer.getWebServerUrl() + "/" + storePath.getFullPath();
            System.out.println(url);
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }
}

Supongo que te gusta

Origin blog.csdn.net/packge/article/details/126451355
Recomendado
Clasificación