国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS

這篇具有很好參考價(jià)值的文章主要介紹了分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、FastDFS概述

1.1?什么是分布式文件系統(tǒng)

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

單機(jī)時(shí)代

初創(chuàng)時(shí)期由于時(shí)間緊迫,在各種資源有限的情況下,通常就直接在項(xiàng)目目錄下建立靜態(tài)文件夾,用于用戶(hù)存放項(xiàng)目中的文件資源。如果按不同類(lèi)型再細(xì)分,可以在項(xiàng)目目錄下再建立不同的子目錄來(lái)區(qū)分。例如:resources\static\file、resources\static\img等。

優(yōu)點(diǎn):便利,使用方便。

缺點(diǎn):文件越多存放越混亂

獨(dú)立文件服務(wù)器

隨著公司業(yè)務(wù)不斷發(fā)展,將代碼和文件放在同一服務(wù)器的弊端就會(huì)越來(lái)越明顯。為了解決上面的問(wèn)題引入獨(dú)立圖片服務(wù)器,

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

流程:

項(xiàng)目上傳文件時(shí),首先通過(guò)ftp或者ssh將文件上傳到圖片服務(wù)器的某個(gè)目錄下,再通過(guò)Ngnix或者Apache來(lái)訪問(wèn)此目錄下的文件,返回一個(gè)獨(dú)立域名的圖片URL地址,前端使用文件時(shí)就通過(guò)這個(gè)URL地址讀取。

缺點(diǎn):

存在單點(diǎn)故障的問(wèn)題。數(shù)據(jù)備份需要人為干預(yù)。

分布式文件系統(tǒng)

業(yè)務(wù)繼續(xù)發(fā)展,單臺(tái)服務(wù)器存儲(chǔ)和響應(yīng)也很快到達(dá)了瓶頸,新的業(yè)務(wù)需要文件訪問(wèn)具有高響應(yīng)性、高可用性來(lái)支持系統(tǒng)。

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

優(yōu)點(diǎn)

  • 擴(kuò)展能力: 毫無(wú)疑問(wèn),擴(kuò)展能力是一個(gè)分布式文件系統(tǒng)最重要的特點(diǎn);
  • 高可用性: 在分布式文件系統(tǒng)中,高可用性包含兩層,一是整個(gè)文件系統(tǒng)的可用性,二是數(shù)據(jù)的完整和一致性;
  • 彈性存儲(chǔ): 可以根據(jù)業(yè)務(wù)需要靈活地增加或縮減數(shù)據(jù)存儲(chǔ)以及增刪存儲(chǔ)池中的資源,而不需要中斷系統(tǒng)運(yùn)行。

缺點(diǎn):系統(tǒng)復(fù)雜度稍高,需要更多服務(wù)器

?1.2?FastDFS簡(jiǎn)介

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

?FastDFS是一個(gè)開(kāi)源的輕量級(jí)分布式文件系統(tǒng)。它解決了大數(shù)據(jù)量存儲(chǔ)和負(fù)載均衡等問(wèn)題。特別適合以中小文件(建議范圍:4KB < file_size <500MB)為載體的在線服務(wù),如相冊(cè)網(wǎng)站、視頻網(wǎng)站等等。

FastDFS特性

  • 文件不分塊存儲(chǔ),上傳的文件和OS文件系統(tǒng)中的文件一一對(duì)應(yīng)
  • 支持相同內(nèi)容的文件只保存一份,節(jié)約磁盤(pán)空間
  • 下載文件支持HTTP協(xié)議,可以使用內(nèi)置Web Server,也可以和其他Web Server配合使用
  • 支持在線擴(kuò)容
  • 支持主從文件

分布式文件服務(wù)提供商

1、阿里的OSS

2、七牛云存儲(chǔ)

3、百度云儲(chǔ)存

1.3?FastDFS核心概念

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

FastDFS服務(wù)端有三個(gè)角色:跟蹤服務(wù)器(tracker)、存儲(chǔ)服務(wù)器(storage)和客戶(hù)端(client)。

tracker

跟蹤服務(wù)器,主要做調(diào)度工作,起負(fù)載均衡的作用。在內(nèi)存中記錄集群中所有存儲(chǔ)組和存儲(chǔ)服務(wù)器的狀態(tài)信息,是客戶(hù)端和數(shù)據(jù)服務(wù)器交互的樞紐。就相當(dāng)于是工廠的包工頭。

storage

存儲(chǔ)服務(wù)器(又稱(chēng):存儲(chǔ)節(jié)點(diǎn)或數(shù)據(jù)服務(wù)器),文件和文件屬性(meta data)都保存到存儲(chǔ)服務(wù)器上。Storage server直接利用OS的文件系統(tǒng)調(diào)用管理文件。相當(dāng)于是工廠的工人。

client

客戶(hù)端,作為業(yè)務(wù)請(qǐng)求的發(fā)起方,通過(guò)專(zhuān)有接口,使用TCP/IP協(xié)議與跟蹤器服務(wù)器或存儲(chǔ)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交互。FastDFS向使用者提供基本文件訪問(wèn)接口,比如upload、download、append、delete等,以客戶(hù)端庫(kù)的方式提供給用戶(hù)使用。

group

組, 也可稱(chēng)為卷。 同組內(nèi)服務(wù)器上的文件是完全相同的 ,同一組內(nèi)的storage server之間是對(duì)等的, 文件上傳、 刪除等操作可以在任意一臺(tái)storage server上進(jìn)行 。

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

流程:

Tracker相當(dāng)于FastDFS的大腦,不論是上傳還是下載都是通過(guò)tracker來(lái)分配資源;客戶(hù)端一般可以使用Ngnix等靜態(tài)服務(wù)器來(lái)調(diào)用或者做一部分的緩存;存儲(chǔ)服務(wù)器內(nèi)部分為卷(或者叫做組),卷于卷之間是平行的關(guān)系,可以根據(jù)資源的使用情況隨時(shí)增加,卷內(nèi)服務(wù)器文件相互同步備份,以達(dá)到容災(zāi)的目的。

1.4?FastDFS上傳機(jī)制

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

首先客戶(hù)端請(qǐng)求Tracker服務(wù)獲取到存儲(chǔ)服務(wù)器的ip地址和端口,然后客戶(hù)端根據(jù)返回的IP地址和端口號(hào)請(qǐng)求上傳文件,存儲(chǔ)服務(wù)器接收到請(qǐng)求后生產(chǎn)文件,并且將文件內(nèi)容寫(xiě)入磁盤(pán)并返回給客戶(hù)端file_id、路徑信息、文件名等信息,客戶(hù)端保存相關(guān)信息上傳完畢。

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

內(nèi)部機(jī)制如下

1、選擇Tracker server

當(dāng)集群中不止一個(gè)Tracker server時(shí),由于Tracker之間是完全對(duì)等的關(guān)系,客戶(hù)端在upload文件時(shí)可以任意選擇一個(gè)trakcer。

2、選擇Storage server

當(dāng)選定Group后,Tracker會(huì)在Group內(nèi)選擇一個(gè)Storage Server給客戶(hù)端

3、選擇Storage path

當(dāng)分配好Storage Server后,客戶(hù)端將向Storage發(fā)送寫(xiě)文件請(qǐng)求,Storage將會(huì)為文件分配一個(gè)數(shù)據(jù)存儲(chǔ)目錄。

注意:

剩余存儲(chǔ)空間最多的優(yōu)先。

4、生成Fileid

選定存儲(chǔ)目錄之后,Storage會(huì)為文件生一個(gè)Fileid,由Storage Server Ip、文件創(chuàng)建時(shí)間、文件大小、文件crc32和一個(gè)隨機(jī)數(shù)拼接而成,然后將這個(gè)二進(jìn)制串進(jìn)行base64編碼,轉(zhuǎn)換為可打印的字符串。

5、生成文件名

當(dāng)文件存儲(chǔ)到某個(gè)子目錄后,即認(rèn)為該文件存儲(chǔ)成功,接下來(lái)會(huì)為該文件生成一個(gè)文件名,文件名由group、存儲(chǔ)目錄、兩級(jí)子目錄、fileid、文件后綴名(由客戶(hù)端指定,主要用于區(qū)分文件類(lèi)型)拼接而成。

1.5?FastDFS下載機(jī)制

客戶(hù)端帶上文件名信息請(qǐng)求Tracker服務(wù)獲取到存儲(chǔ)服務(wù)器的ip地址和端口,然后客戶(hù)端根據(jù)返回的IP地址和端口號(hào)請(qǐng)求下載文件,存儲(chǔ)服務(wù)器接收到請(qǐng)求后返回文件給客戶(hù)端。

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

內(nèi)部機(jī)制如下

  1. client詢(xún)問(wèn)tracker下載文件的storage,參數(shù)為文件標(biāo)識(shí)(組名和文件名)
  2. tracker返回一臺(tái)可用的storage
  3. client直接和storage通訊完成文件下載

?二、Linux搭建FastDFS

2.1 安裝FastDFS

下載安裝gcc

安裝方式為yum安裝(需網(wǎng)絡(luò)):

yum install gcc-c++ perl-devel pcre-devel openssl-devel zlib-devel wget

下載安裝FastDFS

wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz

下載安裝FastDFS依賴(lài)

wgethttps://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz

下載安裝FastDFS

wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz

解壓縮依賴(lài)tar包

tar -zxvf V1.0.43.tar.gz -C /usr/local
tar -zxvf  V6.06.tar.gz -C /usr/local

編譯并安裝libfastcommon

 cd /usr/local/libfastcommon-1.0.43/
 ./make.sh && ./make.sh install

編譯并安裝FastDFS

cd /usr/local/fastdfs-6.06
./make.sh && ./make.sh install
進(jìn)入etc目錄下復(fù)制配置文件
cd /etc/fdfs/
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

2.2 創(chuàng)建tracker服務(wù)?

創(chuàng)建tracker目錄

mkdir -p  /data/fastdfs/tracker

修改配置文件

vim /etc/fdfs/tracker.conf

disabled=false          #啟用配置文件
port=22122            #設(shè)置 tracker 的端口號(hào)
base_path=/data/fastdfs/tracker #設(shè)置 tracker 的數(shù)據(jù)文件和日志目錄(需預(yù)先創(chuàng)建)
http.server_port=8888      #設(shè)置 http 端口號(hào),指的是在tracker服務(wù)器上啟動(dòng)http服務(wù)進(jìn)程,如:apache或者nginx 啟動(dòng)時(shí)所監(jiān)聽(tīng)的端口

啟動(dòng)tracker服務(wù)

/etc/init.d/fdfs_trackerd start

檢查tracker服務(wù)

netstat -lntup |grep fdfs

2.3?創(chuàng)建storage服務(wù)

創(chuàng)建storage目錄

mkdir -p /data/fastdfs/base   #日志
mkdir -p /data/fastdfs/storage   #文件存儲(chǔ)位置

修改配置文件

vim /etc/fdfs/storage.conf


disabled=false             #啟用配置文件
group_name=group1           #組名,根據(jù)實(shí)際情況修改
port=23000               #設(shè)置 storage 的端口號(hào)
base_path=/data/fastdfs/base      #設(shè)置 storage 的日志目錄(需預(yù)先創(chuàng)建)
store_path_count=1           #存儲(chǔ)路徑個(gè)數(shù),需要和 store_path 個(gè)數(shù)匹配
store_path0=/data/fastdfs/storage     #存儲(chǔ)路徑
tracker_server = 192.168.66.100:22122   #tracker 服務(wù)器的 IP 地址和端口號(hào)
http.server_port=8888         #設(shè)置storage上啟動(dòng)的http服務(wù)的端口號(hào),如安裝的nginx的端口號(hào)

啟動(dòng)storage服務(wù)

/etc/init.d/fdfs_storaged start

查看storage服務(wù)

netstat -lntup |grep fdfs

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

2.3 配置Client服務(wù)

創(chuàng)建client日志文件目錄

mkdir -p /data/fastdfs/client

修改client配置文件

vim /etc/fdfs/client.conf

connect_timeout=30
network_timeout=60
base_path=/data/fastdfs/client      # 日志路徑
tracker_server=192.168.66.100:22122    # 追蹤服務(wù)器的IP,有多個(gè)服務(wù)器可以另一行

?查看啟動(dòng)的服務(wù)

ps -ef | grep fdfs

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

?三、FastDFS指令

?3.1?上傳文件指令:fdfs_upload_file

fdfs_upload_file <config_file> <local_filename> [storage_ip:port] [store_path_index]

參數(shù)含義:

  1. <config_file> :客戶(hù)端client配置文件路徑
  2. <local_filename> :要上傳的文件的地址
  3. [storage_ip:port] :(可選參數(shù))
  4. [store_path_index] :(可選參數(shù))

?示例:

fdfs_upload_file /etc/fdfs/client.conf ./pdx.jpg  #將當(dāng)前文件夾下的pdx.jpg文件上傳到FastDFS

group1/M00/00/00/wKhCZGSzyi6ANZJJAANsTCZQKGY266.jpg  #上傳文件后會(huì)返回文件在FastDFS中的唯一文件標(biāo)識(shí),即卷名+文件名

在/data/fastdfs/storage/data/00/00可以查看當(dāng)前上傳的文件

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

?3.2?下載文件指令

fdfs_download_file <config_file> <file_id> [local_filename] [<download_offset> <download_bytes>

參數(shù)含義:

  1. <config_file> :客戶(hù)端配置文件路徑
  2. <file_id> :文件在FastDFS中的唯一文件標(biāo)識(shí),即卷名+文件名
  3. [local_filename] :文件下載地址
  4. <download_offset> :(可選參數(shù))文件下載開(kāi)始時(shí)間
  5. <download_bytes> :(可選參數(shù))文件下載的字節(jié)數(shù)

示例:

#將文件下載到當(dāng)前路徑下
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKhCZGSzyi6ANZJJAANsTCZQKGY266.jpg

3.3?查看文件信息指令

fdfs_file_info <config_file> <file_id>

參數(shù)含義:

  1. <config_file> :客戶(hù)端配置文件路徑
  2. <file_id> :文件在FastDFS中的唯一文件標(biāo)識(shí),即卷名+文件名

示例:

#查看文件的信息
fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKhCZGSzyi6ANZJJAANsTCZQKGY266.jpg

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

?3.4?刪除文件指令

fdfs_delete_file <config_file> <file_id>

參數(shù)含義:

  1. <config_file> :客戶(hù)端配置文件路徑
  2. <file_id> :文件在FastDFS中的唯一文件標(biāo)識(shí),即卷名+文件名

示例:

fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKhCZGSzyi6ANZJJAANsTCZQKGY266.jpg

注意:

刪除指令使用后,文件在該卷中的所有備份都會(huì)被刪除,因?yàn)榫韮?nèi)的存儲(chǔ)節(jié)點(diǎn)會(huì)相互同步,故慎用。

?四、SpringBoot操作FastDFS實(shí)現(xiàn)文件上傳(基本版)

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

由GitHub大牛tobato在原作者YuQing與yuqih發(fā)布的JAVA客戶(hù)端基礎(chǔ)上進(jìn)行了大量重構(gòu)工作,并于GitHub上發(fā)布了FastDFS-Client1.26.5。?

主要特性

  1. 對(duì)關(guān)鍵部分代碼加入了單元測(cè)試,便于理解與服務(wù)端的接口交易,提高接口質(zhì)量
  2. 將以前對(duì)byte硬解析風(fēng)格重構(gòu)為使用對(duì)象+注解的形式,盡量增強(qiáng)了代碼的可讀性
  3. 支持對(duì)服務(wù)端的連接池管理
  4. 支持上傳圖片時(shí)候檢查圖片格式,并且自動(dòng)生成縮略圖
  5. 在SpringBoot當(dāng)中自動(dòng)導(dǎo)入依賴(lài)

1、創(chuàng)建springboot項(xiàng)目(2.7.0),導(dǎo)入FastDFS依賴(lài)jar?

<dependency>
  <groupId>com.github.tobato</groupId>
  <artifactId>fastdfs-client</artifactId>
  <version>1.26.5</version>
</dependency>

2、添加配置

####分布式文件系統(tǒng)配置###########
fdfs:
  so-timeout: 1500
  connect-timeout: 600
  thumb-image:       #縮略圖生成參數(shù)
    width: 150
    height: 150
  tracker-list:       #TrackerList參數(shù),支持多個(gè)
    - 192.168.66.100:22122
   # - 192.168.66.101:22122

3、編寫(xiě)測(cè)試類(lèi)實(shí)現(xiàn)文件上傳和文件下載

package com.zj;

import com.github.tobato.fastdfs.domain.fdfs.StorePath;
import com.github.tobato.fastdfs.domain.proto.storage.DownloadByteArray;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;
import java.io.*;

@SpringBootTest
class FastdfsApplicationTests {

    //通過(guò)FastDFS的客戶(hù)端對(duì)象完成對(duì)文件系統(tǒng)的操作
    @Resource
    private FastFileStorageClient fastFileStorageClient;

    //測(cè)試上傳文件
    @Test
    public void upload() throws FileNotFoundException {
        //1.先讀取本地文件
        File file = new File("D:\\aaa.jpg");
        //2.創(chuàng)建傳輸文件輸入流
        FileInputStream fileInputStream = new FileInputStream(file);
        //3.文件上傳
        /*
         * 參數(shù)一:文件輸入流
         * 參數(shù)二:文件大小
         * 參數(shù)三:文件拓展名
         * 參數(shù)四:描述文件的元數(shù)據(jù)(指定文件上傳的位置)
         */
        StorePath storePath = fastFileStorageClient.uploadFile(fileInputStream, file.length(), "jpg", null);
        //4.將卷名和文件名一起打印
        System.out.println("上傳文件的地址:"+storePath.getFullPath());
        System.out.println("文件卷名:"+storePath.getGroup());
        System.out.println("文件名:"+storePath.getPath());
    }

    //文件下載
    @Test
    public void download() throws IOException {
       //1.下載文件
        /*
         * 參數(shù)一:文件處于存儲(chǔ)節(jié)點(diǎn)的卷名
         * 參數(shù)二:文件在存儲(chǔ)節(jié)點(diǎn)的文件名
         * 參數(shù)三:下載的回調(diào)函數(shù)
         */
        byte[] downloadFile = fastFileStorageClient.downloadFile("group1", "M00/00/00/wKhCZGS2WGaAYKOuADcAPt_yJDw957.jpg", new DownloadByteArray());
         //2.創(chuàng)建文件輸出流,并指定文件下載的位置
        FileOutputStream fileOutputStream = new FileOutputStream("d:\\aaa.jpg");
         //3.將文件輸出流寫(xiě)文件到磁盤(pán)
        fileOutputStream.write(downloadFile);
        //4.刷新
        fileOutputStream.flush();
        //5.關(guān)閉流
        fileOutputStream.close();
    }



}

五、spring boot整合FastDFS實(shí)現(xiàn)文件上傳(完整版)

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

?1、引入Thymeleaf視圖解析器和文件上傳客戶(hù)端對(duì)象?

        <!--fastdfs-->
        <dependency>
            <groupId>com.github.tobato</groupId>
            <artifactId>fastdfs-client</artifactId>
            <version>1.26.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

注意:

使用wangeditor富文本編輯器的前提是引入Thymeleaf模板。?

2、通過(guò)CDN在前端頁(yè)面引入wangEditor富文本編輯器

 <script type="text/javascript" src="https://unpkg.com/wangeditor/dist/wangEditor.min.js"></script>

?3、創(chuàng)建編輯器基本骨架

<div id="div1">
    <p>歡迎使用 <b>wangEditor</b> 富文本編輯器</p>
</div>
<script type="text/javascript">
    const E = window.wangEditor;
    const editor = new E('#div1')
    editor.create();
</script>

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

4、創(chuàng)建文件上傳的Controller控制器

package com.zj.controller;

import com.github.tobato.fastdfs.domain.fdfs.StorePath;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.IOException;

@RestController
public class uploadController {

    @Resource
    private FastFileStorageClient fastFileStorageClient;

    //圖片上傳
    @PostMapping("/upload")
    public void upload(MultipartFile file) throws IOException {
      //1.判斷文件是否為空
        if(file != null){
            //2.獲取上傳的圖片的名字
            String originalFilename = file.getOriginalFilename();
            //3.獲取上傳的圖片的擴(kuò)展名
            String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
            //4.上傳圖片
            StorePath storePath = fastFileStorageClient.uploadFile(file.getInputStream(), file.getSize(), suffix, null);
            System.out.println("上傳的文件的路徑:"+storePath.getFullPath());
            //5.上傳的文件路徑需要保存到數(shù)據(jù)庫(kù)中
            //……
        }
    }
}

文件上傳的請(qǐng)求方式必須是post?

5、完整的index.html頁(yè)面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>文件上傳</title>
    <script type="text/javascript" src="https://unpkg.com/wangeditor/dist/wangEditor.min.js"></script>

</head>
<body>
<div id="div1">
    <p>歡迎使用 <b>wangEditor</b> 富文本編輯器</p>
</div>
<script type="text/javascript">
    const E = window.wangEditor;
    const editor = new E('#div1');
    //指定文件上傳的服務(wù)路徑
    editor.config.uploadImgServer = "/upload";
    //文件參數(shù)名
    editor.config.uploadFileName = "file";
    //限制文件上傳的大小和類(lèi)型 2M
    editor.config.uploadImgMaxSize = 2 * 1024 * 1024;
    //文件上傳的類(lèi)型
    editor.config.uploadImgAccept = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'];

    editor.create();
</script>

</body>
</html>

6、啟動(dòng)項(xiàng)目,上傳圖片即可

六、FastDFS整合Nginx

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

??Nginx服務(wù)器是一個(gè)高性能的web服務(wù)器與反向代理服務(wù)器。

FastDFS集成Nginx的2個(gè)原因

  1. 為分布式文件系統(tǒng)提供Http服務(wù)支持

通過(guò)Nginx的web服務(wù)代理訪問(wèn)分布式文件系統(tǒng)的存儲(chǔ)節(jié)點(diǎn),從而實(shí)現(xiàn)通過(guò)http請(qǐng)求訪問(wèn)存儲(chǔ)節(jié)點(diǎn)資源。

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

注意:

src 屬性值圖像文件的 URL。也就是引用該圖像的文件的的絕對(duì)路徑或相對(duì)路徑。

? 2.解決復(fù)制延遲問(wèn)題

由于FastDFS的同卷的存儲(chǔ)節(jié)點(diǎn)之間需要同步,當(dāng)文件尚未同步完成時(shí),訪問(wèn)請(qǐng)求到達(dá)改節(jié)點(diǎn),獲取的數(shù)據(jù)將是未同步完的不完整數(shù)據(jù),即為復(fù)制延遲問(wèn)題。通過(guò)Nginx檢測(cè)請(qǐng)求的存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù),若該存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)尚未同步完成,則將請(qǐng)求轉(zhuǎn)發(fā)至數(shù)據(jù)的原存儲(chǔ)節(jié)點(diǎn),從而解決復(fù)制延遲問(wèn)題。

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos

?環(huán)境搭建

下載Fastdfs的Nginx模塊包
#選擇安裝位置
cd /usr/local

#下載文件(或者使用本文章已經(jīng)下載好的文件)
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz

#解壓文件
tar -zxvf V1.22.tar.gz
在ginx-1.20.2目錄下安裝Nginx依賴(lài)文件
yum install -y gcc gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel gd-devel epel-release
配置Nginx服務(wù)器
#建立Makefile文件,檢查L(zhǎng)inux系統(tǒng)環(huán)境以及相關(guān)的關(guān)鍵屬性。添加fastdfs-nginx-module-1.22模塊到nginx
./configure --add-module=/usr/local/fastdfs-nginx-module-1.22/src/

#編譯項(xiàng)目,主要將gcc源代碼編譯成可執(zhí)行的目標(biāo)文件
make

#根據(jù)上一步驟編譯完成的數(shù)據(jù)安裝到預(yù)定的目錄中。之前安裝過(guò)ngxin的話不需要再安裝
make install

注意:

  • –add-module:為nginx添加一個(gè)fastdfs-nginx-module模塊,值為該模塊在當(dāng)前系統(tǒng)的路徑
  • –prefix:指定nginx安裝位置

將Fastdfs軟件包里面的http.conf和mime.types拷貝到/etc/fdfs目錄下?

cp /usr/local/fastdfs-6.06/conf/mime.types /etc/fdfs/
cp /usr/local/fastdfs-6.06/conf/http.conf /etc/fdfs/
配置Nginx的fastdfs模塊,并編輯文件
#拷貝文件
[root@localhost opt]cp /usr/local/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/

[root@localhost fdfs] vim mod_fastdfs.conf
#保存日志目錄
base_path=/data/fastdfs/storage   
#tracker 服務(wù)器的 IP 地址以及端口號(hào)
tracker_server=192.168.66.100:22122 
#文件url中是否有g(shù)roup 名
url_have_group_name = true      
#存儲(chǔ)路徑
store_path0=/data/fastdfs/storage  
group_count = 1            #設(shè)置組的個(gè)數(shù)
#然后在末尾添加分組信息,目前只有一個(gè)分組,就只寫(xiě)一個(gè)
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
配置Nginx
server {
  listen    80;
  server_name  localhost;
   
  location ~ /group[1-3]/M00 {
    alias /data/fastdfs/storage/data;
     ngx_fastdfs_module;
   }
  # 根目錄下返回403
  location = / {
     return 403;
   }
  # log file
  access_log  logs/img_access.log access;
}
啟動(dòng)Ningx服務(wù)
# 進(jìn)入sbin目錄
[root@tracker nginx]# cd sbin/

# 啟動(dòng)服務(wù) -c:指定配置文件
[root@tracker sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf
查看服務(wù)啟動(dòng)情況
[root@tracker sbin]# ps -ef | grep nginx
啟動(dòng)追蹤服務(wù)與存儲(chǔ)節(jié)點(diǎn)服務(wù)
[root@tracker sbin]# fdfs_trackerd /etc/fdfs/tracker.conf start
[root@tracker sbin]# fdfs_storaged /etc/fdfs/storage.conf start
上傳圖片測(cè)試

將圖片上傳至linux系統(tǒng)后,使用指令上傳至分布式文件系統(tǒng)

[root@localhost /]# fdfs_upload_file /etc/fdfs/client.conf pdx.jpg
group1/M00/00/00/wKhCZGS6zneAUxGKAANsTCZQKGY401.jpg
通過(guò)瀏覽器遠(yuǎn)程訪問(wèn)
http://192.168.66.100/group1/M00/00/00/wKhCZGS6zneAUxGKAANsTCZQKGY401.jpg

分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS,java后端,分布式,spring boot,linux,運(yùn)維,centos文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-600581.html

到了這里,關(guān)于分布式文件存儲(chǔ)與數(shù)據(jù)緩存 FastDFS的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 初識(shí) Redis - 分布式,內(nèi)存數(shù)據(jù)存儲(chǔ),緩存

    初識(shí) Redis - 分布式,內(nèi)存數(shù)據(jù)存儲(chǔ),緩存

    目錄 1. 什么是 Redis 1.1 Redis 內(nèi)存數(shù)據(jù)存儲(chǔ) 1.2 Redis 用作數(shù)據(jù)庫(kù) 1.3 Redis 用作緩存 (cache) 1.4 用作消息中間件 The open source , in-memory data store used by millions of developers as a database, cache, streaming engine, and message?broker. 開(kāi)源的 內(nèi)存數(shù)據(jù)存儲(chǔ) ,被數(shù)百萬(wàn)開(kāi)發(fā)人員用作 數(shù)據(jù)庫(kù)、緩存、流引擎

    2024年02月15日
    瀏覽(92)
  • “深入解析Redis:高性能緩存與分布式數(shù)據(jù)存儲(chǔ)“

    標(biāo)題:深入解析Redis:高性能緩存與分布式數(shù)據(jù)存儲(chǔ) 摘要:本文將深入解析Redis,介紹其作為高性能緩存和分布式數(shù)據(jù)存儲(chǔ)的特點(diǎn)和功能,并提供示例代碼展示其使用方法。 正文: 一、引言 Redis是一個(gè)開(kāi)源的內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),它以其高性能、靈活的數(shù)據(jù)結(jié)構(gòu)以及豐富的

    2024年02月17日
    瀏覽(25)
  • 分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【三】

    分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【三】

    7.2.1.Admin 7.2.2.Menu 7.2.3.MenuBean 7.2.4.Role 7.2.5.RoleMenu 7.4.1.AuthContextHolder 7.4.2.HttpUtils 7.4.3.StringUtils 7.4.4.JwtHelper 7.4.5.MD5 7.4.6.ShiroMD5 7.5.1.AdminMapper.xml 7.5.2.MenuMapper.xml 7.5.3.RoleMenuMapper.xml 7.5.4.AdminMapper 7.5.5.MenuMapper 7.5.6.RoleMenuMapper 7.6.1.AdminService 7.6.2.MenuBeanService 7.6.3.MenuService 7.6.4.RoleMenu

    2024年02月22日
    瀏覽(26)
  • 分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【一】

    分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【一】

    操作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件機(jī)構(gòu)稱(chēng)為文件管理系統(tǒng),簡(jiǎn)稱(chēng)文件系統(tǒng)。 常見(jiàn)的文件系統(tǒng):FAT16/FAT32、NTFS、HFS、UFS、APFS、XFS、Ext4等 。 分布式文件系統(tǒng)(Distributed File System,DFS) 是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過(guò)計(jì)算機(jī)網(wǎng)

    2024年02月20日
    瀏覽(18)
  • 分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【四】

    分布式文件系統(tǒng) SpringBoot+FastDFS+Vue.js【四】

    案例有些不足 功能太簡(jiǎn)單 功能復(fù)雜可以做一個(gè)類(lèi)似網(wǎng)盤(pán)的文件管理系統(tǒng) 僅僅學(xué)習(xí)使用某些功能 暫不深入開(kāi)發(fā) 有興趣的伙伴可以嘗試一番 類(lèi)似于阿里云oss

    2024年02月20日
    瀏覽(19)
  • 在Docker里安裝FastDFS分布式文件系統(tǒng)詳細(xì)步驟

    在Docker里安裝FastDFS分布式文件系統(tǒng)詳細(xì)步驟

    使用docker鏡像構(gòu)建tracker容器,用于啟動(dòng)跟蹤服務(wù)器,起到調(diào)度的作用。 其中-v參數(shù)將本地的目錄與容器中的/var/fdfs目錄進(jìn)行掛載 使用的網(wǎng)絡(luò)模式是–net=host –name容器名 -d后臺(tái)啟動(dòng) 使用docker鏡像構(gòu)建storage容器,用于啟動(dòng)存儲(chǔ)服務(wù)器,提供容量和備份服務(wù)。 在執(zhí)行下面命令時(shí)

    2024年02月03日
    瀏覽(15)
  • 分布式數(shù)據(jù)(文件)存儲(chǔ)

    分布式數(shù)據(jù)(文件)存儲(chǔ)

    在分布式存儲(chǔ)里面,比較常見(jiàn)的有kafka,Hbase,HDFS,fastDFS等,這里面涉及到文件的分布式存儲(chǔ)以及數(shù)據(jù)的分布式存儲(chǔ)。分布式存儲(chǔ)的背景:就是將數(shù)據(jù)文件分散的存儲(chǔ)到分布式集群的每一個(gè)節(jié)點(diǎn),提升了存儲(chǔ)的容量(大數(shù)據(jù)化);同時(shí)盡量凸顯分布式的檢索能力。分布式存儲(chǔ)的原

    2024年02月07日
    瀏覽(22)
  • 開(kāi)源輕量級(jí)分布式文件系統(tǒng)FastDFS本地部署并實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)服務(wù)器

    開(kāi)源輕量級(jí)分布式文件系統(tǒng)FastDFS本地部署并實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)服務(wù)器

    FastDFS是一個(gè)開(kāi)源的輕量級(jí)分布式文件系統(tǒng),它對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(wèn)(文件上傳、文件下載)等,解決了大容量存儲(chǔ)和負(fù)載均衡的問(wèn)題。特別適合以文件為載體的在線服務(wù),如相冊(cè)網(wǎng)站、視頻網(wǎng)站等等。 FastDFS為互聯(lián)網(wǎng)量身定制,充分考

    2024年02月04日
    瀏覽(116)
  • 探索Garnet:微軟開(kāi)源的高性能分布式緩存存儲(chǔ)系統(tǒng)

    微軟研究院近期宣布推出一款名為Garnet的創(chuàng)新開(kāi)源分布式緩存存儲(chǔ)系統(tǒng),致力于解決現(xiàn)代應(yīng)用程序在處理大規(guī)模數(shù)據(jù)時(shí)對(duì)于高吞吐量、低延遲及卓越可擴(kuò)展性的嚴(yán)苛要求。這款基于C# .NET 8.0構(gòu)建的新型系統(tǒng),充分利用了現(xiàn)代硬件能力,為應(yīng)用程序開(kāi)發(fā)人員提供了加速數(shù)據(jù)訪問(wèn)

    2024年04月26日
    瀏覽(29)
  • C++ 網(wǎng)絡(luò)編程項(xiàng)目fastDFS分布式文件系統(tǒng)(四)-fastCGI項(xiàng)目相關(guān)技術(shù)以及l(fā)inux搜狗輸入法相關(guān)問(wèn)題。

    C++ 網(wǎng)絡(luò)編程項(xiàng)目fastDFS分布式文件系統(tǒng)(四)-fastCGI項(xiàng)目相關(guān)技術(shù)以及l(fā)inux搜狗輸入法相關(guān)問(wèn)題。

    目錄 1. Nginx作為web服務(wù)器處理請(qǐng)求 2. http協(xié)議復(fù)習(xí) ? ? ??Get方式提交數(shù)據(jù) Post方式提交數(shù)據(jù) 3. fastCGI ? 3.1 CGI ?3.2 fastCGI 3.3 fastCGI和spawn-fcgi安裝 ????????1. 安裝fastCGI ? ??2. 安裝spawn-fcgi 3.4 nginx fastcgi? ?? 4其他知識(shí)點(diǎn) 1. fastCGI環(huán)境變量 - fastcgi.conf ?2. 客戶(hù)端使用Post提交數(shù)據(jù)

    2024年02月12日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包