Docker を使用して FastDFS をインストールし、簡単に使用する

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

1.FastDFSについて

1. FastDFS の内部構成

  1. FastDFS は、高性能の分散ファイル システムです。
  2. FastDFS は Tracker サーバー (トラッキング スケジューリング サーバー) と Storage サーバー (ファイル ストレージ サーバー) で構成されます。
  3. ストレージサーバー(ファイルストレージサーバー)は複数のグループで構成されています

2. 用語解説

トラッカー サーバー (トラッキング スケジューリング サーバー)
トラッカー サーバー (トラッキング スケジューリング サーバー)、役割は負荷分散とスケジューリングです。ファイルをアップロードするときにトラッカー サーバーを介して、いくつかの戦略に従ってファイル アップロード サービスを提供するストレージ サーバーを見つけることができるので、トラッカーserver は、追跡サーバーまたはスケジューリング サーバー用に呼び出されます。

Storageサーバー(ファイルストレージサーバー)
Storageサーバー(ファイルストレージサーバー)は、ファイルストレージとして使用されます クライアントによってアップロードされたファイルは、最終的にStorageサーバーに格納されます Storageサーバーは独自のファイルシステムを実装せず、オペレーティングシステムファイルを使用しますファイルを管理するためのシステムであるため、ストレージはストレージサーバーと呼ばれます。

グループ(グループ)

  1. Storageサーバー(ファイルストレージサーバー)は、ファイルを格納するために使用されるため、容量が限られています.この問題を解決するために、拡張グループ化が提案され、グループの概念が拡張されます.
  2. 各グループにはいくつかのファイルが保存され、各グループに保存されるファイルは異なります。
  3. 各グループ内のノード サービスの高可用性を確保するために、グループ内にストレージ サーバー クラスターを構築することができます.各グループは複数のメンバーを持つことができます.グループ メンバーに格納されているコンテンツは同じであり、グループのステータスメンバーは一貫しており、マスター/スレーブの概念はありません。
  4. ファイルは各グループのノードに保存されるため、http アクセス呼び出しを容易にするために、各ストレージ サーバーも nginx にバインドされます。
  5. すべてのグループを合計すると、完全なストレージ サーバー (ファイル ストレージ サーバー) になります。
    ここに画像の説明を挿入

3. 動作原理 アップロード

ここに画像の説明を挿入

  1. Storage サーバー (ファイル ストレージ サーバー) は定期的に各ノードのステータスを Tracker サーバー (トラッキング スケジューリング サーバー) に報告します。
  2. Tracker サーバー (トラッキング スケジューリング サーバー) がクライアントからアップロード要求を受信したとき。
  3. トラッカー サーバー (トラッキング スケジューリング サーバー) は、利用可能なストレージ サーバー (ファイル ストレージ サーバー) を照会します。
  4. 使用可能なストレージ サーバー (ファイル ストレージ サーバー) の IP やポートなどの情報をユーザーに返します。
  5. クライアントは、返された IP とポートに従って、使用可能なストレージ サーバー (ファイル ストレージ サーバー) にファイルをアップロードします。
  6. ストレージ サーバー (ファイル ストレージ サーバー) は、ファイル ID (パス情報とファイル名) を生成します。
  7. アップロードされたファイルを Storage サーバー (ファイルストレージサーバー) のディスクに書き込みます。
  8. 生成されたファイル ID (パス情報とファイル名) をクライアントに返します。
  9. クライアントは、クエリとダウンロードのためにファイル ID (パス情報とファイル名) を保存します。

4.動作原理のダウンロード

ここに画像の説明を挿入

  1. Storage サーバー (ファイル ストレージ サーバー) は定期的に各ノードのステータスを Tracker サーバー (トラッキング スケジューリング サーバー) に報告します。
  2. Tracker サーバー (トラッキング スケジューリング サーバー) がクライアントからブラインド ダウンロード要求を受信したとき。
  3. トラッカー サーバー (トラッキング スケジューリング サーバー) は、利用可能なストレージ サーバー (ファイル ストレージ サーバー) を照会します。
  4. 使用可能なストレージ サーバー (ファイル ストレージ サーバー) の IP やポートなどの情報をクライアントに返します。
  5. クライアントは、ファイル ID (パス情報とファイル名) に従って、使用可能なストレージ サーバー (ファイル ストレージ サーバー) を要求します。
  6. ストレージ サーバー (ファイル ストレージ サーバー) は、ファイル ID (パス情報とファイル名) に従ってファイルをクエリします。
  7. ストレージ サーバー (ファイル ストレージ サーバー) は、照会されたファイルをダウンロードのためにクライアントに返します。

2、docker で FastDFS をインストール

1. インストール手順

  1. fastdfs ミラーをプルする
 docker pull delron/fastdfs 
  1. Tracker サーバー (トラッキング スケジューリング サーバー) コンテナーを作成する
    提示:在指定虚拟机镜像之后,还需要添加tracker命令,这样镜像就会根据tracker命令启动tracker服务
docker run -d  --name tracker --net=host -p 22122:22122 delron/fastdfs tracker

–net=host : 仮想マシンのネットワークをコンテナーに適用します。つまり、ホスト ネットワークと一致します。

  1. ストレージ サーバー (ファイル ストレージ サーバー)、トラッカーの IP とポートを指定する必要があります
    提示:在指定虚拟机镜像之后,还需要添加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 : サーバーがグループ group1 に属していることを指定するか、group1 という名前の新しいグループを追加します。容量拡張のために新しいグループを追加する場合は、このコマンドを再度実行して、新しいグループ名を変更します。
  2. –net=host : 仮想マシンのネットワークをコンテナーに適用します。つまり、ホスト ネットワークと一致します。

2.nginx の設定を変更する

Nginxはストレージ内に統合されており、ここのnginxはブラウザで写真にアクセスできるようにします

  1. ストレージコンテナに入る
    提示:进入Storage容器内【cd /etc/fdfs/ 】也有Storage和Tracker的配置
docker exec -it storage /bin/bash
  1. ファイル[nginx.conf]ファイルを編集します
 vi /usr/local/nginx/conf/nginx.conf 

ここに画像の説明を挿入
3. 構成を変更した場合は、再起動する必要があります

docker restart storage

3.ステップを使用する

1. 座標のインポート

     <!--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.構成を追加する

[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地址

ここに画像の説明を挿入

3. コードの書き方

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();
        }
    }
}

おすすめ

転載: blog.csdn.net/packge/article/details/126451355
おすすめ