|
今日は、オープンソースの優れた分散ストレージコンポーネント、MinIOをご紹介します。多くの方が利用しているので、ぜひコメント欄にご意見をお寄せください。 MinIOとは何ですか? Minioは、Go言語で記述され、Apache License v2.0に基づいてライセンスされているオープンソースのオブジェクトストレージスイートです。軽量でありながら、優れたパフォーマンスを誇ります。Amazon S3クラウドストレージサービスのインターフェースと互換性があり、Node.js、Redis、MySQLなどの他のアプリケーションと簡単に統合できます。 1. アプリケーションシナリオMinIO は、プライベート クラウド オブジェクト ストレージ サービスとしてだけでなく、Amazon S3 や Microsoft Azure にシームレスに接続し、クラウド オブジェクト ストレージのゲートウェイ レイヤーとしても使用できます。 写真 2. 特徴- 高性能:高性能ストレージデバイスとして、標準的なハードウェア条件下では、読み取り速度と書き込み速度はそれぞれ55Gbpsと35Gbpsに達します。さらに、MinIOは数キロバイトから最大5TBまでのあらゆるサイズのオブジェクトファイルをサポートします。
- スケーラブル: さまざまな MinIO クラスターを統合してグローバル名前空間を形成し、複数のデータ センターをサポートできます。
- クラウド ネイティブ: コンテナ化、Kubernetes ベースのオーケストレーション、マルチテナント サポート。
- Amazon S3 互換:Amazon S3 v2/v4 API を使用します。Minio サーバーには、Minio SDK、Minio クライアント、AWS SDK、AWS CLI を使用してアクセスできます。
- SDK サポート:
- GO SDK: https://github.com/minio/minio-go
- JavaSDK: https://github.com/minio/minio-java
- PythonSDK: https://github.com/minio/minio-py
- グラフィカルインターフェース:操作ページ付き
- イレージャーコーディングのサポート:MinIOは、イレージャーコーディングとチェックサムを使用することで、ハードウェアエラーやサイレントデータ破損を防止します。最高の冗長構成では、ディスクの半分が失われた場合でもデータを復旧できます。
これは非常に強力な機能です。この記事はあくまでも入門編です。ご興味のある方は、ぜひご自身で調べてみてください。 MinIOをインストールするインストールは非常に簡単です。ここではDockerを使ってインストールします。手順は以下のとおりです。 1. 画像を取得する実行するコマンドは次のとおりです。 docker pull minio/minio 2. 画像を開始する実行するコマンドは次のとおりです。 docker run -p 9000:9000 -p 9001:9001 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=admin" -v /home/data:/data -v /home/config:/root/.minio minio/minio server --console-address ":9000" --address ":9001" /data コマンドの説明は次のとおりです。 - -p: 9000はグラフィカルインターフェースのポート、9001はAPIのポートです。SDKを使用して接続する場合は必須です。
- MINIO_ACCESS_KEY: グラフィカル インターフェイスのユーザー名を指定します。
- MINIO_SECRET_KEY: グラフィカル インターフェイスのパスワードを指定します。
上記の 2 つの手順を実行すると、プロセスは成功します。 3. グラフィカルインターフェース操作インストールが成功したら、以下に示すように、次のアドレス http://ip:9000/login にアクセスします。 写真 ユーザー名とパスワードで正常にログインすると、次のように表示されます。 写真 メニューはたくさんあるので、ここでは詳しく説明しません。下の画像のように、「Buckets」メニューで「test」という名前のバケットを作成します。 写真 次のように、このバケットのプライバシー ルールをパブリックに設定します。 写真 MinIO のインストールとセットアップが正常に完了しました。 ファイルアップロードのための MinIO との Spring Boot 統合MinIOはグラフィカルインターフェースで手動アップロード機能を提供していますが、SDK経由でもアップロード可能です。以下では、MinIOとSpring Bootを統合してファイルをアップロードする方法を紹介します。 1. accessKeyとsecretKeyを取得するここでのaccessKeyとsecretKeyは、グラフィカルインターフェースのログイン名とパスワードではありません。これらは簡単に取得できます。下の画像に示すように、グラフィカルインターフェース内で直接取得できます。 写真 写真 2.依存関係を追加する次のように MinIO 依存関係を追加します。 <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.2.1</version> </dependency> 3. 設定を追加するここでは、SDKのシンプルなラッパーを作成しました。サンプルソースコードも提供します。以下にコードの一部のみを掲載します。 次のように、MInIO 関連の構成を application.yml ファイルに追加します。 minio: # 访问的url endpoint: http://192.168.47.148 # API的端口port: 9001 # 秘钥accessKey: HQGWFYLWGC6FVJ0CQFOG secretKey: pUGhAgQhZDxJaLmN3uz65YX7Bb3FyLdLglBvcCr1 secure: false bucket-name: test # 桶名我这是给出了一个默认桶名image-size: 10485760 # 我在这里设定了图片文件的最大大小file-size: 1073741824 # 此处是设定了文件的最大大小 4. 新しいファイルアップロードインターフェースを作成するここでは、次のようにファイルアップロード インターフェイスを定義しました。 /** * @author 公众号:码猿技术专栏*/ @RequestMapping("/minio") @RestController public class MinioController { @Autowired private MinioService minioService; @PostMapping("/upload") public String uploadFile(MultipartFile file, String bucketName) { String fileType = FileTypeUtils.getFileType(file); if (fileType != null) { return minioService.putObject(file, bucketName, fileType); } return "不支持的文件格式。请确认格式,重新上传!!!"; } } 5. テスト上記の4つのステップが統合されました。では、以下のようにAPIを使って画像を直接アップロードしてみましょう。 写真 API によって返される URL はファイル アクセス アドレスです。ブラウザに入力するだけでアクセスできます。 保存されたファイルは、次の画像に示すように、MinIO でも表示できます。 写真 他の人と共有する必要がある場合は、手動で共有することもできます。有効期間は7日間で、期間が過ぎると以下のように期限切れになります。 写真 「 ソースコードはGitHubにアップロードされています。WeChat公式アカウント「Code Monkey Technology Column」をフォローし、キーワード「9535」を返信すると入手できます! 「
要約MinIOはオープンソースプロジェクトですが、非常に強力です。小規模プロジェクトでオブジェクトストレージを実装したり、無料の画像ホスティングサービスを構築したりするのに使用できます。 |